androidX项目接入VirtualAPK方案

背景:

目前很多项目都是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

 

 

你可能感兴趣的:(android编译问题)