AndroidStudio3.0遇到的坑(持續更新)

weixin_33912246發表於2017-11-16
前言

不得不吐糟自己一下,作者因最近離職並出國浪去了,都冷落了簡書妃子了,這樣不好不好。


1475226-d360efb1a6487612.png

悲痛欲絕地默哀一秒鐘後,還是回到主題上好了(順便給點福利圖,知道是誰的話可以在評論區給出你的答案哈)。


1475226-9169a2bc803f5f44.gif
正文

Android Studio 2.3升級到Android Studio 3.0 Gradle builde報錯:

Unable to resolve dependency for ':app@xxPreview/compileClasspath':com.android.support:appcompat-v7:26.1.0

對於這個問題,作者自己也是發現網上太多坑文,痛心疾首,索性重新整理一遍:

1.自行下載最新的gradle4.0以上(AS3.0最低支援4.0),且在Preferences的Gradle裡配置,記得不要勾選offline work

  1. 專案外層build.gradle 的com.android.tools.build:gradle需要升級到3.0
dependencies {
        classpath 'com.android.tools.build:gradle:3.0.0'
}
  1. 指令更新。如果用AS3.0建立新專案的時候你會發現compile被implementation替換了。
    在3.0版本中,compile 依舊可以繼續使用,而新增了兩個依賴指令,implementation 和api,這兩個都是依賴新增,但是有什麼區別呢?
  • api
    完全等同於compile指令,你可以將所有的compile改成api。
  • implementation
    這個指令的特點就是,對於使用了該命令編譯的依賴,對該專案有依賴的專案將無法訪問到使用該命令編譯的依賴中的任何程式,也就是將該依賴隱藏在內部,而不對外部公開。
    implementation舉個栗子:
    這是app的網路模組層次,app module為最外層,可以直接呼叫network module,但由於network module在依賴okhttp等網路架構的時候使用implementation,app層便無法直接呼叫okhttp了。


    1475226-c4d4c12d624d139b.png
    網路層次
小結

按照Google的說法,建議優先使用implementation,能有效增加編譯速度。

相關文章