Android Studio3.1.2在專案的build.gradle中新增百分比佈局庫的依賴問題
一、問題
第一行程式碼Android的作者在使用百分比佈局的時候是在build.gradle中新增如下的百分比佈局庫依賴。
開啟app/build.gradle檔案,在dependencies閉包中新增如下內容:
dependencies{ compile fileTree(dir:'libs',include:['*.jar']) compile 'com.android.support:appcompat-v7:24.2.1' compile 'com.android.support:percent:24.2.1' testCompile 'junit:junit:4.12' }
但是在新增之後發現程式碼報錯,因為Appcompat後面的版本號太低出現了相容性問題。
接下來把dependencies閉包中的程式碼compile更改為implementation,版本號更改為-v7:27.1.1就可以了,更改完成後記得要點選一右上角的Sync Now同步,如下圖:
效果圖:
下面引用來自:https://blog.csdn.net/silenceoo/article/details/78735687
這是因為Android Studio版本更新至3.0了,更新後,連帶著com.android.tools.build:gradle 工具也升級到了3.0.0,在3.0.0中使用了最新的Gralde 4.0 里程碑版本作為gradle的編譯版本,該版本gradle編譯速度有所加速,更加令人興奮的是完全支援Java8。當然,對於Kotlin的支援,在這個版本也有所體現,Kotlin外掛預設是安裝的。
二、依賴變化
當我們使用Android Studio3.0新建專案時會發現,預設的依賴由之前的compile更改為implementation了。
3.0 以下版本build.gradle中依賴的寫法:
compile fileTree(dir: 'libs', include: ['*.jar'])
但在3.0後的寫法為
implementation fileTree(dir: 'libs', include: ['*.jar'])
或
api fileTree(dir: 'libs', include: ['*.jar'])
三、區別
在3.0版本中,compile 指令被標註為過時方法,而新增了兩個依賴指令,一個是implementation和api,這兩個都可以進行依賴新增,但是有什麼區別呢?
api
完全等同於compile指令,沒區別,你將所有的compile改成api,完全沒有錯。
implementation
這個指令的特點就是,對於使用了該命令編譯的依賴,對該專案有依賴的專案將無法訪問到使用該命令編譯的依賴中的任何程式,也就是將該依賴隱藏在內部,而不對外部公開。
舉個例子:
比如我在一個libiary中使用implementation依賴了gson庫,然後我的主專案依賴了libiary,那麼,我的主專案就無法訪問gson庫中的方法。這樣的好處是編譯速度會加快,推薦使用implementation的方式去依賴,如果你需要提供給外部訪問,那麼就使用api依賴即可
在Google IO 相關話題的中提到了一個建議,就是依賴首先應該設定為implementation的,如果沒有錯,那就用implementation,如果有錯,那麼使用api指令,這樣會使編譯速度增快。