1. 升级改变
Android Studio升级到3.0之后,明显可以看到的改变有如下:
-
build tools的版本升级到 : buildToolsVersion '26.0.2'
-
gradle版本升级到:gradle:3.0.0:
-
gradle插件使用的是:gradle-4.1-all.zip
依赖的改变
在升级之前,我们在build.gradle中引用依赖都是使用的:
compile fileTree(dir: 'libs', include: ['*.jar'])
但是升级之后我们有了新的选择:
implementation fileTree(dir: 'libs', include: ['.jar'])
或
api fileTree(dir: 'libs', include: ['.jar'])
api与implementation的区别:
api 指令 : 这个等同于compile指令,你可以直接将之前的compile全部改为api,编译可以通过。
implementation 指令 : 对于使用了该命令编译的依赖,对该项目有依赖的项目将无法访问到使用该命令编译的依赖中的任何程序,也就是将该依赖隐藏在内部,而不对外部公开。
如下图中的方式,api指令引用的libs可以全局使用,implementation指令引用的libs只能内部使用。
2. 升级中遇到的问题
问题1
解决方案:
android.applicationVariants.all { variant ->
variant.outputs.all {
outputFileName = "${variant.name}-${variant.versionName}.apk"
}
}
问题2
- Error:Removing unused resources requires unused code shrinking to be turned on.
- Error:Resource shrinker cannot be used for libraries.
解决方案:
这里只列出了最简单的配置,将 shrinkResources 注释即可解决上述问题。
主要是由于我们引用的libraries中有混淆并且移除无用资源。
buildTypes {
debug {
//移除无用的resource资源
//shrinkResources false
//混淆
//minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
release {
//移除无用的resource资源
//shrinkResources true
//混淆
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
}
}
更新中。。。