1. 升級(jí)改變
Android Studio升級(jí)到3.0之后皮官,明顯可以看到的改變有如下:
-
build tools的版本升級(jí)到 : buildToolsVersion '26.0.2'
-
gradle版本升級(jí)到:gradle:3.0.0:
-
gradle插件使用的是:gradle-4.1-all.zip
依賴的改變
在升級(jí)之前,我們?cè)赽uild.gradle中引用依賴都是使用的:
compile fileTree(dir: 'libs', include: ['*.jar'])
但是升級(jí)之后我們有了新的選擇:
implementation fileTree(dir: 'libs', include: ['.jar'])
或
api fileTree(dir: 'libs', include: ['.jar'])
api與implementation的區(qū)別:
api 指令 : 這個(gè)等同于compile指令撮躁,你可以直接將之前的compile全部改為api摹量,編譯可以通過。
implementation 指令 : 對(duì)于使用了該命令編譯的依賴,對(duì)該項(xiàng)目有依賴的項(xiàng)目將無法訪問到使用該命令編譯的依賴中的任何程序缨称,也就是將該依賴隱藏在內(nèi)部凝果,而不對(duì)外部公開。
如下圖中的方式睦尽,api指令引用的libs可以全局使用器净,implementation指令引用的libs只能內(nèi)部使用。
2. 升級(jí)中遇到的問題
問題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.
解決方案:
這里只列出了最簡(jiǎn)單的配置当凡,將 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'
}
}
更新中沿量。浪慌。。