Open wwzeng1 opened 4 hours ago
Let's implement the proposed solution to update the Earthquake Survival app to target the latest supported Android SDK. We'll make changes to the necessary files as requested.
Let's start by updating the app/build.gradle file:
app/build.gradle
---
+++
@@ -1,23 +1,20 @@
apply plugin: 'com.android.application'
-apply plugin: 'io.fabric'
-apply plugin: 'me.tatarka.retrolambda'
-apply plugin: 'android-apt'
+apply plugin: 'com.google.firebase.crashlytics'
android {
- compileSdkVersion 25
- buildToolsVersion '25.0.2'
+ compileSdkVersion 33
defaultConfig {
multiDexEnabled true
applicationId "com.adkdevelopment.earthquakesurvival"
- minSdkVersion 16
- targetSdkVersion 25
+ minSdkVersion 21
+ targetSdkVersion 33
versionCode 8
versionName "1.08"
}
buildTypes {
release {
minifyEnabled false
- proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
+ proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
}
}
compileOptions {
@@ -31,57 +28,48 @@
}
ext {
- compatVersion = "25.2.0"
- playVersion = "10.2.0"
- retrofitVersion = "2.2.0"
- butterknifeVersion = "8.5.1"
+ androidXVersion = "1.4.0"
+ playVersion = "21.0.1"
+ retrofitVersion = "2.9.0"
+ butterknifeVersion = "10.2.3"
}
dependencies {
- compile project(':library')
- compile project(':license-release')
+ implementation project(':library')
+ implementation project(':license-release')
- compile fileTree(dir: 'libs', include: ['*.jar'])
- testCompile 'junit:junit:4.12'
- compile "com.android.support:appcompat-v7:$compatVersion"
- compile "com.android.support:design:$compatVersion"
- compile "com.android.support:support-v4:$compatVersion"
- compile "com.android.support:support-v13:$compatVersion"
- compile "com.android.support:cardview-v7:$compatVersion"
- compile "com.android.support:recyclerview-v7:$compatVersion"
+ implementation fileTree(dir: 'libs', include: ['*.jar'])
+ testImplementation 'junit:junit:4.13.2'
+ implementation "androidx.appcompat:appcompat:$androidXVersion"
+ implementation "com.google.android.material:material:1.6.1"
+ implementation "androidx.cardview:cardview:$androidXVersion"
+ implementation "androidx.recyclerview:recyclerview:$androidXVersion"
// Map Utils library
- compile 'com.google.maps.android:android-maps-utils:0.4.4'
+ implementation 'com.google.maps.android:android-maps-utils:2.3.0'
// life simplifiers
- compile "com.jakewharton:butterknife:$butterknifeVersion"
- apt "com.jakewharton:butterknife-compiler:$butterknifeVersion"
- compile 'com.squareup.picasso:picasso:2.5.2'
-
- // seek bar preference
- //compile 'com.pavelsikun:material-seekbar-preference:0.12.1'
+ implementation "com.jakewharton:butterknife:$butterknifeVersion"
+ annotationProcessor "com.jakewharton:butterknife-compiler:$butterknifeVersion"
+ implementation 'com.squareup.picasso:picasso:2.71828'
// data fetching and converting to objects
- compile "com.squareup.retrofit2:retrofit:$retrofitVersion"
- compile "com.squareup.retrofit2:converter-gson:$retrofitVersion"
- compile("com.squareup.retrofit2:converter-simplexml:$retrofitVersion") {
+ implementation "com.squareup.retrofit2:retrofit:$retrofitVersion"
+ implementation "com.squareup.retrofit2:converter-gson:$retrofitVersion"
+ implementation("com.squareup.retrofit2:converter-simplexml:$retrofitVersion") {
exclude group: 'xpp3', module: 'xpp3'
exclude group: 'stax', module: 'stax-api'
exclude group: 'stax', module: 'stax'
}
// google play services
- compile "com.google.android.gms:play-services-location:$playVersion"
- compile "com.google.android.gms:play-services-maps:$playVersion"
+ implementation "com.google.android.gms:play-services-location:$playVersion"
+ implementation "com.google.android.gms:play-services-maps:$playVersion"
// RxJava + RxAndroid
- compile 'io.reactivex:rxandroid:1.1.0'
- compile 'io.reactivex:rxjava:1.1.3'
- compile('com.crashlytics.sdk.android:crashlytics:2.6.5@aar') {
- transitive = true;
+ implementation 'io.reactivex.rxjava2:rxandroid:2.1.1'
+ implementation 'io.reactivex.rxjava2:rxjava:2.2.21'
+ implementation('com.crashlytics.sdk.android:crashlytics:2.10.1@aar') {
+ transitive = true
}
}
-
-retrolambda {
- jvmArgs '-noverify'
-}
Now, let's update the project-level build.gradle file:
build.gradle
---
+++
@@ -1,15 +1,12 @@
buildscript {
repositories {
- jcenter()
+ google()
mavenCentral()
- maven { url 'https://maven.fabric.io/public' }
}
dependencies {
- classpath 'com.android.tools.build:gradle:2.3.0'
- classpath 'me.tatarka:gradle-retrolambda:3.2.5'
- classpath 'com.neenbedankt.gradle.plugins:android-apt:1.8'
- classpath 'io.fabric.tools:gradle:1.22.0'
- classpath 'com.jakewharton:butterknife-gradle-plugin:8.5.1'
+ classpath 'com.android.tools.build:gradle:7.2.2'
+ classpath 'com.google.gms:google-services:4.3.13'
+ classpath 'com.google.firebase:firebase-crashlytics-gradle:2.9.1'
// NOTE: Do not place your application dependencies here; they belong
// in the individual module build.gradle files
@@ -18,9 +15,8 @@
allprojects {
repositories {
- jcenter()
+ google()
mavenCentral()
- maven { url 'https://maven.fabric.io/public' }
}
}
Now, let's update the PagerActivity.java file to use AndroidX imports:
app/src/main/java/com/adkdevelopment/earthquakesurvival/ui/PagerActivity.java
---
+++
@@ -1,11 +1,10 @@
-import android.support.design.widget.TabLayout;
-import android.support.v4.app.ActivityCompat;
-import android.support.v4.app.Fragment;
-import android.support.v4.app.FragmentPagerAdapter;
-import android.support.v4.content.ContextCompat;
-import android.support.v4.view.ViewPager;
-import android.support.v7.app.AppCompatActivity;
-import android.support.v7.widget.Toolbar;
+import androidx.appcompat.app.AppCompatActivity;
+import androidx.appcompat.widget.Toolbar;
+import androidx.core.app.ActivityCompat;
+import androidx.core.content.ContextCompat;
+import androidx.fragment.app.Fragment;
+import androidx.fragment.app.FragmentPagerAdapter;
+import androidx.viewpager.widget.ViewPager;
import android.text.format.DateUtils;
import android.util.Log;
import android.util.Pair;
@@ -35,9 +34,11 @@
import com.google.android.gms.common.api.Status;
import com.google.android.gms.location.Geofence;
import com.google.android.gms.location.GeofencingRequest;
-import com.google.android.gms.location.LocationListener;
+import com.google.android.gms.location.LocationCallback;
import com.google.android.gms.location.LocationRequest;
+import com.google.android.gms.location.LocationResult;
import com.google.android.gms.location.LocationServices;
+import com.google.android.material.tabs.TabLayout;
import java.util.ArrayList;
import java.util.List;
@@ -45,4 +46,4 @@
import butterknife.BindColor;
import butterknife.BindView;
import butterknife.ButterKnife;
-import rx.subscriptions.CompositeSubscription;
+import io.reactivex.disposables.CompositeDisposable;
Now, let's update the AndroidManifest.xml file:
app/src/main/AndroidManifest.xml
---
+++
@@ -3,7 +3,7 @@
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
- <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
+ <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" android:maxSdkVersion="28" />
<!-- Sync Adapter Permissions -->
<uses-permission android:name="android.permission.READ_SYNC_SETTINGS" />
@@ -12,6 +12,7 @@
<!-- Google API Location Permissions -->
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
+ <uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<!-- Notifications permissions -->
<uses-permission android:name="android.permission.VIBRATE" />
@@ -26,7 +27,7 @@
android:allowBackup="true"
android:fullBackupContent="@xml/backup_database"
android:icon="@mipmap/ic_launcher"
- android:label="@string/app.name"
+ android:label="@string/app_name"
android:supportsRtl="true"
android:theme="@style/AppTheme">
@@ -37,11 +38,17 @@
<provider
android:name=".data.provider.EarthquakeProvider"
- android:authorities="@string/sync.provider.authority"
+ android:authorities="@string/sync_provider_authority"
android:exported="false"
android:syncable="true" />
<activity
android:name=".ui.PagerActivity"
- android:label="@string/app.name"
- android:theme="@style/AppTheme.NoActionBar">
+ android:label="@string/app_name"
+ android:theme="@style/AppTheme.NoActionBar"
+ android:exported="true">
+ <intent-filter>
+ <action android:name="android.intent.action.MAIN" />
+ <category android:name="android.intent.category.LAUNCHER" />
+ </intent-filter>
+ </activity>
These changes update the app to target the latest supported Android SDK (33 at the time of writing), migrate to AndroidX, update dependencies, and make necessary adjustments to the manifest file. The main changes include:
To complete the migration, you'll need to update other parts of the codebase to use AndroidX and the new APIs. This includes updating any custom views, fragments, and activities to use the new AndroidX classes and methods.
Continue the conversation with Sweep here: http://localhost:3000/c/57bc35e1-fa6f-4d82-b5d9-1ee6ed45e7e8.
:book: For more information on how to use Sweep, please read our documentation.
Update app to target the latest supported Android SDK
Description:
Update the Earthquake Survival app to target the latest supported Android SDK version. This will ensure compatibility with newer Android devices and access to the latest Android features and APIs.
Tasks:
Update
app/build.gradle
file:compileSdkVersion
to the latest supported versiontargetSdkVersion
to match the newcompileSdkVersion
buildToolsVersion
if necessaryUpdate
build.gradle
(project-level) file:Review and update deprecated API usage:
app/src/main/java/com/adkdevelopment/earthquakesurvival
directory for any deprecated method calls or classesUpdate
AndroidManifest.xml
:Update dependencies in
app/build.gradle
:Test: