升级准备过程
-
根据Android Studio 提示将所需的firebase 库和play-services-* 升级到最新版本
-
项目过老,其中存在
mavenCenral()
仓库,将MyApp/build.gradle
和MyApp/app/build.gradle
,替换为如下配置repositories { jcenter() google() maven { url 'https://maven.fabric.io/public' } }
-
将
classpath ‘io.fabric.tools:gradle:1.25.4’
classpath ‘com.google.gms:google-services:4.1.0’
升级到最新版 -
将项目中的compile 替换成 implementation 或者 api,编译成功即可。不成功一般属于包依赖的问题,因为implementation 没有传递性,所以对应的module需要补上对应包的依赖。
踩过的坑
-
gradle编译问题
he library com.google.android.gms:play-services-measurement-base is being requested by various other libraries at [[17.1.0,17.1.0], [17.2.2,17.2.2]], but resolves to 17.2.2. Disable the plugin and check your dependencies tree using ./gradlew :app:depende
这个错误原因是classpath 'com.android.tools.build:gradle:3.5.3' classpath 'com.google.gms:google-services:4.3.3'
gradle 插件版本升级到最新版本,会提示需要最新版本的gradle-wrapper 。
先通过浏览器下载最新版本gradle,然后添加本地依赖# 浏览器下载地址https://services.gradle.org/distributions/gradle-5.4.1-all.zip #distributionUrl=https\://services.gradle.org/distributions/gradle-5.4.1-all.zip distributionUrl=../../../../gradle-5.4.1/gradle-5.4.1-all.zip
-
gradle编译问题
Could not resolve all files for configuration ‘:app:debugCompileClasspath’.
14:27:03.234 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter] > Failed to transform file ‘MyCardPaySDK.jar’ to match attributes {artifactType=android-classes, org.gradle.usage=java-runtime-jars}
14:27:03.234 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter] > Execution failed for JetifyTransform: /Users/dongjunjie/lsclient/Publish.android-studio/WarZ_Mycard/app/libs/MyCardPaySDK.jar.
14:27:03.234 [ERROR] [org.gradle.internal.buildevents.BuildExceptionReporter] > Failed to transform ‘/Users/dongjunjie/lsclient/Publish.android-studio/WarZ_Mycard/app/libs/MyCardPaySDK.jar’ using Jetifier. Reason: 1. (Run with --stacktrace for more details.)此处问题是gradle升级导致,升级之后Jetify转换jar支持Androidx。
android.enableJetifier=true android.useAndroidX=true
其中gradle.properties配置文件中的
android.enableJetifier=true
开启就会转换jar包。发生此问题时晚上提供的方法大多数是降低gradle版本或者是修改此值为false,但是都不太好。应该增加黑名单配置,如下:android.enableJetifier=true android.useAndroidX=true android.jetifier.blacklist = MyCardPaySDK.jar
-
apatch.http问题
编译中VK登录module会发生org.apache.http 包体的相关类找不到,原因是6.0sdk中移除了org.apache.http.util.EncodingUtils等相关类。在defaulConfig下添加useLibrary ‘org.apache.http.legacy’android { ... defaultConfig { minSdkVersion 16 targetSdkVersion 28 } useLibrary 'org.apache.http.legacy' ... }