一直忙于开发as一直没有升级,这几天有时间正好as发布新版本3.5.0,把as升级的到3.5.0也遇到一系列问题,在这里发问题分享一下,大家可以借鉴一下。
1、依赖包的引用问题
(1)compile 不推荐使用 ,api 是和compile完全等效的,怕出问题的话可以用api替换,表示其他的模块也可以引用。
如果确定只在本模块中引用可以用 implementation替换,module中可以完全用implementation,library看情况而定。
(2)testCompile 用 testimplementation替换。
(3)instrumentTest 用 androidTest替换
2、项目的gradle 把gradle和plugin升级到最新版
classpath 'com.android.tools.build:gradle:3.5.0'
classpath 'com.github.dcendents:android-maven-gradle-plugin:1.5'
classpath 'com.jfrog.bintray.gradle:gradle-bintray-plugin:1.7.3'
kotlin_version可以升级到 '1.3.41'
gradle中引用implementation "org.jetbrains.kotlin:kotlin-stdlib-jre7:$kotlin_version"替换为
implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
3、gradle升级 Minimum supported Gradle version is 5.4.1. Current version is 4.1.
可以下载gradle 5.4.1本地引用,也可以在设置中使用 as推荐的 Use Default gradle wrapper
4、清单文件设置 AndroidManifest
移除清单文件中user-sdk设置。
5、设置各个library中的minsdk和targetsdk,最好和主项目中的一致
6、AAPT: error: unexpected element <uses-sdk> found in <manifest><application>.
原因是在清单文件中的application中引用的<users-sdk>,不规范使用,造成清单文件无法mager,编译不通过。在找了项目中的所用清单文件后没有发现这个问题。最后在一个引用的.aar文件中发现了这个问题,把.aar改为.zip解压修改后再改成.aar就好了。
7、Caused by: org.gradle.api.internal.tasks.compile.CompilationFailedException: Compilation failed; see the compiler error output for details.
原因是library中的compile改为implementation后住moudle无法调用引起的,改为api就行了。
8、as在编译过程中报OOM,gc什么的问题,好像as 3.5.0对内存要求更高了。
在gradle.properties加入以下配置视自己电脑配置而定:
org.gradle.daemon=true org.gradle.jvmargs=-Xmx4096m -XX:MaxPermSize=4096m -XX:+HeapDumpOnOutOfMemoryError -Dfile.encoding=UTF-8 org.gradle.parallel=true org.gradle.configureondemand=true