module中implementation的包沒(méi)法引用

Android studio升級(jí)到3.0以上之后,插件版本(plugin version)也隨之升級(jí)到了3.0.0版本或以上。

工程中import的module中的dependencies 原來(lái)用的是compile,但在26還是28后強(qiáng)制使用implementation,所以你為了順應(yīng)潮流(安全)改成了implementation。但:

implementation指令

這個(gè)指令的特點(diǎn)就是,對(duì)于使用了該命令編譯的依賴(lài),對(duì)該項(xiàng)目有依賴(lài)的項(xiàng)目將無(wú)法訪問(wèn)到使用該命令編譯的依賴(lài)中的任何程序,也就是將該依賴(lài)隱藏在內(nèi)部,而不對(duì)外部公開(kāi)

所以你module中的類(lèi)可以用,但jar怎么都引用不了,你開(kāi)始慌了...

正文:

? ??????在3.0版本中,compile 指令被標(biāo)注為過(guò)時(shí)方法,而新增了兩個(gè)依賴(lài)指令,一個(gè)是implement 和api,這兩個(gè)都可以進(jìn)行依賴(lài)添加,但是有什么區(qū)別呢?

新建工程默認(rèn)生成的app的build.gradle文件中的依賴(lài):

dependencies {

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

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

}

[api 指令]

????????完全等同于compile指令,沒(méi)區(qū)別,你將所有的compile改成api,完全沒(méi)有錯(cuò)。

[implementation指令]

????????這個(gè)指令的特點(diǎn)就是,對(duì)于使用了該命令編譯的依賴(lài),對(duì)該項(xiàng)目有依賴(lài)的項(xiàng)目將無(wú)法訪問(wèn)到使用該命令編譯的依賴(lài)中的任何程序,也就是將該依賴(lài)隱藏在內(nèi)部,而不對(duì)外部公開(kāi)。
簡(jiǎn)單的說(shuō),就是使用implementation指令的依賴(lài)不會(huì)傳遞。

例如,有一個(gè)module為testsdk,testsdk依賴(lài)于gson:

implementation 'com.google.code.gson:gson:2.8.2'

這時(shí)候,在testsdk里邊的java代碼是可以訪問(wèn)gson的。

另一個(gè)module為app,app依賴(lài)于testsdk:

implementation project(':testsdk')


這時(shí)候,因?yàn)閠estsdk使用的是implementation 指令來(lái)依賴(lài)gson,所以app里邊不能引用gson。
但是,如果testsdk使用的是api來(lái)引用gson:

api 'com.google.code.gson:gson:2.8.2'

則與gradle3.0.0之前的compile指令的效果完全一樣,app的module也可以引用gson。這就是api和implementation的區(qū)別。

建議

????????在Google IO 相關(guān)話題的中提到了一個(gè)建議,就是依賴(lài)首先應(yīng)該設(shè)置為implementation的,如果沒(méi)有錯(cuò),那就用implementation,如果有錯(cuò),那么使用api指令。使用implementation會(huì)使編譯速度有所增快。

原文:https://blog.csdn.net/mybook1122/article/details/78657392

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

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

  • mean to add the formatted="false" attribute?.[ 46% 47325/...
    ProZoom閱讀 3,228評(píng)論 0 3
  • 博客原文鏈接 Android百大框架排行榜(轉(zhuǎn)) 說(shuō)明: 無(wú)聊寫(xiě)一篇筆記式文章. 精力有限,很多錯(cuò)誤之處,受時(shí)間與...
    碼農(nóng)朱同學(xué)閱讀 3,124評(píng)論 0 27
  • 過(guò)去的一周,心態(tài)的遷善和調(diào)整是史無(wú)前例的,似乎真的想明白了很多。不再有那么多的計(jì)較和刻意。 放下很容易,但是并非不...
    馬子木閱讀 373評(píng)論 0 0
  • 千年前 你逃到邊疆以北 俯視大地顫抖的光陰 滿目蒼痍 孒然一生 黃土風(fēng)沙從荒野吹到枕邊 醉生夢(mèng)死 不曾喂飽空曠的渴...
    云_橫閱讀 176評(píng)論 0 0
  • 初秋的天氣開(kāi)始轉(zhuǎn)涼,木頭姐的心里卻一陣狂躁郁悶。郁結(jié)在心的滋味,像把滿溢的水罐硬生生地封存壓緊,實(shí)心滿滿卻悶沉痛苦...
    止樹(shù)閱讀 240評(píng)論 0 0

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