背景:
目前很多项目都是AndroidX了,但是主流的两个开源插件框架360 replugin 和滴滴的Virtual APK 都是只支持android support,没有支持Android X, 自己动手丰衣足食,采取了个临时解决方案——下载源码改成AndroidX。
于是在自己的项目import module 分别 把AndroidStub Library和CoreLibrary导入:
1)各自的gradle.properties文件中添加android.useAndroidX = true, android.enableJetifier = true。
2)然后右键AndroidStub Library和CoreLibrary,Refactor->Migrate to AndroidX 。
3)之后还需要手动 把一些类中的import android support.XXX 改成 import androix.XXX 。(编译的时候会提示哪里需要改的)
先保证AndroidStub Library和CoreLibrary单独编译成功,
最后在编译整个项目的时候,报
Execution failed for task ':app:compileDebugJavaWithJavac'.
> java.lang.NoSuchMethodException: No similar method computeBuildMapping with params [class org.gradle.invocation.DefaultGradle_Decorated] could be found on type class com.android.build.gradle.internal.ide.ModelBuilder.
看英文,感觉就是和gradle的版本有关,于是尝试修改gradle的版本,摸索了许久,把一些版本号改成如下终于解决了!!
1. AndroidX 需要build.gradle 3.2.0以上, 直接就用这个版本在项目的build.gradle文件下的dependencies{}下添加
classpath 'com.android.tools.build:gradle:3.2.0'
2. 相应地,gradle-wrapper.properties文件下,用4.10.1版本。
https\://services.gradle.org/distributions/gradle-4.10.1-all.zip
3. 同时 compileSDK version = 29 , targetSDK version = 28 , build tools version =28.0.2
4. app的build.gradle, CoreLibrary的build.gradle 以及 AndroidStub的build.gradle文件 的android{}中,分别 添加
lintOptions {
checkReleaseBuilds false
abortOnError false
}
缺少 checkReleaseBuilds false , 编译过程会报: Could not resolve com.android.tools.lint:lint-gradle:26.1.2