老大发布AndroidStudio3.0已经有一段时间了,前段时间已经将公司的项目的开发环境升级到了AS3.0,现记录如下,希望对同行有些许帮助。
其实本质是 升级Android Plugin 到 3.0
升级的原因
AS3.0
原生完全支持Kotlin
- 编译速度更快
- 使用户对项目中模块控制力更强
升级方法
第一步:升级Gradle 版本
Android plugin 3.0.0 需要4.1及以上版本的 Gradle
.所以当你的AS提醒你需要更高版本的gradle插件时,你点击同意升级就OK了。
打开您项目根目录下的gradle
文件夹里面的gradle-wrapper.properties
文件,如图所示即可,不是就手动改成图示。
第二步:升级Android plugin 版本
打开你项目根目录下面的build.gradle
文件,添加google()
仓库,及插件,如下图所示
第三步:处理基于变量的依赖管理了,这部分是最麻烦的地方。
首先定义flavorDimensions
,可以定义多个flavorDimensions
,至少一个。将其设置到你相应的flavor
中,我定义了一个版本号维度的一个flavorDimension
如下图所示。
因为我的module
里面没有flavor
,所以我需要设置matchingFallbacks
到APP
里面的某个flavor
,如上图所示
因为我的 module
里面有的没有debug
这种buildType
,只有release
,所以需要为buildType
设置matchingFallbacks
。
第四步:应用新的依赖配置
compile变成implementation
,在一个module中,例如app
,中使用`implementation添加的依赖,其他module是 访问不到的;
provided变成compileOnly
表示依赖仅在编译时可见
apk变成runtimeOnly
表示依赖仅在运行时可见
api 使用此依赖配置的话,其他module也是可以引用到的,但编译时间将会加长
note:升级中遇到了几个编译通不过的问题。
- style文件中@android:可以去掉
applicationVariants.all
{ variant ->
variant.outputs.all
{
output ->
outputFileName = "sstx_v${defaultConfig.versionName}_${releaseTime()}_${variant.productFlavors[0].name}.apk"
}
}
输出名字变成了:outputFileName