2

i have several app with target SDK 26, and as everyone know since google applied new rules for play store SDK requirements, i have to update my target SDK to 28 which involves a lot of updates!

I tried last days to do the update and i faced a lot of errors:

  • support libraries conflicts
  • gradle conflicts
  • 3rd libraries conflicts

So i set everthing back to target API 26 to do some changes on the app before updating definitely to target API 28.

My question : what is the best approach / anticipation and the best android studio version i have to work with to avoid such conflicts.

Phantômaxx
  • 37,901
  • 21
  • 84
  • 115
ismail alaoui
  • 5,748
  • 2
  • 21
  • 38
  • 1
    Newest studio (from stable channel) will try to update libraries and gradle to newest version for you. I imagine largest issue you can have if your projects still depend on `android.support` libraries and haven't migrated to `androidx` yet. If you have any specific conflicts preventing you from doing a successful build and haven't found existing answers as to how to update then you can post it explicitly because right now this question is very vague. – Pawel Oct 26 '19 at 18:42

1 Answers1

0

After facing a several issue as mentioned in the question , i successfully updated targetSdkVersion and compileSdkVersion of my projects to 28 , and here i will write all the steps i followed and the changes i did.

  • I - Steps :

1 - updating my android studio to the latest version

2 - updating my gradle plugin version , gradle version (5.4.1 )

dependencies {
    classpath 'com.android.tools.build:gradle:3.5.1'
    .........
}

3 - migration to androidx libraries

4 - updating all 3rd libraries (Firebase , google play services , Picasso ,.....) to the latest version

implementation 'com.google.firebase:firebase-appindexing:19.0.0'
implementation 'com.google.android.gms:play-services-places:17.0.0'
implementation 'com.google.android.gms:play-services-maps:17.0.0'
implementation 'com.google.android.gms:play-services-location:17.0.0'
implementation 'com.google.android.gms:play-services-auth:17.0.0'
implementation 'com.squareup.picasso:picasso:2.71828'
implementation 'com.github.f0ris.sweetalert:library:1.5.1'
implementation 'com.google.firebase:firebase-messaging:20.0.1'
..........
..........

5 - Updating google-services plugin version to the latest version

  dependencies {
    ........
    classpath 'com.google.gms:google-services:4.3.3'
}

6 - Adding google() repository in project gradle

repositories {
    jcenter()
    google()
}

allprojects {
repositories {
    jcenter()
    mavenCentral()
    maven {
        url 'https://maven.google.com'
    }
    google()
 }
}

7 - Adding Java 8 as compileOption in app gradle

compileOptions {
    sourceCompatibility JavaVersion.VERSION_1_8
    targetCompatibility JavaVersion.VERSION_1_8
}
  • II - Changes :

For the changes , it really depends on the widgets and the library you are using , but in general some important point should be mentioned :

1. Enabling requests to all types of connections HTTP and HTTPS

Add usesCleartextTraffic to AndroidManifest.xml

<application
...
android:usesCleartextTraffic="true"
...>

Indicates whether the app intends to use cleartext network traffic, such as cleartext HTTP. The default value for apps that target API level 27 or lower is "true". Apps that target API level 28 or higher default to "false".

2 - Deprecation and method change

Some method will be mentioned as deprecated or even not found , so make sure will inspect every line of your code to update or rewrite the suspected method

3 - Widgets properties deprecation

As written above ,some widgets could be concerned with the update done before , so make sure to inspect your layout for deprecation or issues


NB:

If there is something to notice or add here , it would be great . hope it would help someone else in the future .

ismail alaoui
  • 5,748
  • 2
  • 21
  • 38