Android AS 3.0升級問題集合

1. 升級改變

Android Studio升級到3.0之后,明顯可以看到的改變有如下:

  • build tools的版本升級到 : buildToolsVersion '26.0.2'


    build.png
  • gradle版本升級到:gradle:3.0.0:


    gradle.png
  • gradle插件使用的是:gradle-4.1-all.zip


    gradle-4.1-all.zip.png
  • 依賴的改變

在升級之前,我們在build.gradle中引用依賴都是使用的:

compile fileTree(dir: 'libs', include: ['*.jar'])

但是升級之后我們有了新的選擇:

implementation fileTree(dir: 'libs', include: ['.jar'])

api fileTree(dir: 'libs', include: ['
.jar'])

api與implementation的區(qū)別:

api 指令 : 這個等同于compile指令,你可以直接將之前的compile全部改為api,編譯可以通過。

implementation 指令 : 對于使用了該命令編譯的依賴,對該項目有依賴的項目將無法訪問到使用該命令編譯的依賴中的任何程序,也就是將該依賴隱藏在內(nèi)部,而不對外部公開。

如下圖中的方式,api指令引用的libs可以全局使用,implementation指令引用的libs只能內(nèi)部使用。

api與imp.png

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'
        }
    }

更新中。。。

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容