1. 程式人生 > >android studio 3.1.3爬坑之旅

android studio 3.1.3爬坑之旅

  1. 出錯資訊:The SourceSet 'instrumentTest' is not recognized by the Android Gradle Plugin. Perhaps you misspelled something? 翻譯:“SourceSet” 的'instrumentTest' 沒有被Android Gradle外掛識別。也許你拼錯嗎?

解決方案:新版本Gradle對其做了重新命名

即:

舊版本 - > 新版本

instrumentTestCompile - > androidTestCompile

instrumentTest - > androidTest

  1. 出錯資訊:Configuration 'compile' is obsolete and has been replaced with 'implementation'. It will be removed at the end of 2018 翻譯:配置“編譯”已經過時,取而代之的是“實現”。它將在2018年底被移除。

解決方案:我們的依賴的library中使用了compile,相當於是library依賴了一個第三方庫,直接改為implementation就相當於遮蔽掉了app對library依賴的第三方庫api的訪問許可權,而我們的app剛好用到了library依賴的第三方庫的api,所以直接改為implementation是不行的,要想讓app能訪問到就將其改為 api就可以了,其實這不是一個好的解決辦法,最好的解決辦法是,library中封裝一層app訪問library依賴的第三方庫api的方法,這樣的話app是和library依賴的第三方庫是沒有任何關係的,這樣就降低了app與library依賴的第三方庫的耦合性,這樣也體現了“第三方庫隔離”的原則,如果以後依賴的庫變了,你只需要修改library中依賴的庫及app呼叫的方法即可,不用動app裡面的程式碼了~

  1. 出錯資訊:Duplicate zip entry [com/c/a/a/a/a.class == 69.jar:com/ta/utdid2/b/a/a.class] 翻譯:重複的類,即類所在的包名和類名都相等

解決方案:

(1)兩個library中都新增 utdid4all-1.1.5.3_proguard.jar 使用 compileOnly 關鍵字編譯

(2)兩個library中都不新增 utdid4all-1.1.5.3_proguard.jar;

(3)在app中新增一個 utdid4all-1.1.5.3_proguard.jar 進行編譯即可

  1. jniLibs與libs(兩種方法) (1)單獨分開建立配置(libs配置好先同步,再配置jniLibs) (2) so檔案和jar檔案都放入libs裡邊,要在build.gradle裡邊加如下程式碼:

sourceSets {

main {
              jniLibs.srcDirs = ['libs']
    }

}

一定要仔細看官方文件,及時看看更新沒有,因為一些更新會跟原來的不一樣。