1. 程式人生 > >Android Studio3.0之前的6種依賴方式和3.0之後新增的兩種依賴方式

Android Studio3.0之前的6種依賴方式和3.0之後新增的兩種依賴方式

一 3.0之前的6種方式

  • 共發現6中方式

Compile,Provided,APK,Test compile,Debug compile,Release compile

AS顯示6種

1.1 Compile

對所有的build type以及favlors 編譯並且打包 到apk

1.2 Provided

對所有的build type以及favlors 只編譯,不打包到apk 類似eclipse中的external-libs

1.3 APK

只會打包到apk不參與編譯,比如引用jar中的類或者方法, 編譯時就會報錯

1.4 Test compile

僅對 單元測試的程式碼和打包的測試APK

有效,而對debug或者release apk包無效

1.5 Debug compile

僅對 debug模式的編譯和打包的debug APK 有效,而對test或者debug apk打包無效

1.6 Release compile

僅對 Release模式的編譯和打包的Release APK 有效,而對test或者debug apk打包無效

二 3.0之後新增的兩種方式

新建一個專案時,會在 Moudle 中發現 dependencies 中有所變化, compile變成了implementation,如下所示

dependencies {
    implementation fileTree(dir
: 'libs', include: ['*.jar']) implementation 'com.android.support:appcompat-v7:26.1.0' implementation 'com.android.support.constraint:constraint-layout:1.0.2' testImplementation 'junit:junit:4.12' androidTestImplementation 'com.android.support.test:runner:1.0.1' androidTestImplementation 'com.android.support.test.espresso:espresso-core:3.0.1'
}

新版本 Gradle plugin 3.0 中 講明 compile 已過時,替換它的是implementation 和 api 兩個關鍵字,其中api完全等同於compile, 而implementation 和 api/compile的區別如下:

2.1 api關鍵字

等同於compile, 用api指令編譯,Piccaso依賴對app Module 是可見的,即等同app Module可以使用Piccaso依賴

這裡寫圖片描述

2.2 implementation 關鍵字

特點是將該依賴隱藏在內部,而不對外部公開

這裡寫圖片描述

用implement指令編譯, Piccaso依賴對app Module 是不可見的,app Module不可以直接使用Piccaso
這裡寫圖片描述

2.2.1 implementation 的兩個好處

  1. 提高編譯速度
  2. 對外隱藏不必要的介面

2.2.2 implementation 提高編譯速度的原因:

大型專案一般含有多個 Moudle 模組, 比如改動 LibraryC 介面的相關程式碼

1 如果使用implement, 這時候編譯只需要單獨編譯 LibraryA 模組就行

2 如果使用 api 或者舊時代的 compile,由於App Moudle 也可以訪問到 LibraryC ,所以 App Moudle 部分也需要重新編譯

2.2.3 Google IO 的建議

依賴首先設定為implement

如果無錯,那就用implement , 這樣會使編譯速度有所增快

如果有錯,那麼使用api指令