參考文檔
| 序號(hào) | 名稱 | 鏈接地址 | 備注 |
|---|---|---|---|
| 1 | Android Gradle Plugin Release Notes | https://developer.android.com/studio/releases/gradle-plugin.html#updating-gradle | 詳細(xì)描述了Android Gradle Plugin的版本變更,以及每個(gè)版本對(duì)Gradle版本和Build Tools Version的依賴關(guān)系 |
| 2 | SDK Build Tools Release Notes | https://developer.android.com/studio/releases/build-tools.html | 記錄了Build Tools 各個(gè)版本信息,包括版本號(hào)等 |
| 3 | Support v4 library Revision archive | https://developer.android.com/topic/libraries/support-library/rev-archive.html | 記錄了Support v4包的修改進(jìn)化過程,版本信息等修改升級(jí)檔案 |
| 4 | Migrate to Android Plugin for Gradle 3.0.0 | https://developer.android.com/studio/build/gradle-plugin-3-0-0-migration.html#new_configurations | 詳細(xì)介紹了如何升級(jí)Android Gradle plugin到3.0.0版本,解決遇到的問題,版本沖突等 |
一、環(huán)境準(zhǔn)備
- 操作系統(tǒng) = MacOS High Sierra 10.13.2
- JDK 版本 = <font color="red">1.8.0_40</font>
- Android Studio = <font color="red">3.0.1</font>
- ApiDemos源代碼 = 你的Android SDK目錄下/samples/<font color="red">android-22</font>/legacy/ApiDemos
(如果沒有,請(qǐng)使用SDKmanager下載)
二、關(guān)鍵概念
1. Android Studio
2. Gradle
3. Gradle Wrapper
4. Gradle distributionUrl
5. Gradle DSL method
6. Android Gradle Plugin
7. buildToolsVersion
8. compileSdkVersion
三、Android Studio 3.0.1中創(chuàng)建新項(xiàng)目(或者轉(zhuǎn)化Eclipse項(xiàng)目)采用的默認(rèn)配置
1. 由于AndroidStudio3.0.1默認(rèn)使用Android Gradle plugin 3.0.0+版本,而Android Gradle
plugin 3.0.0+需要依賴于Gradle 4.1+版本,并且要求Build Tools 26.0.2 or higher.
2. Gradle plugin 3.0.0+中會(huì)自帶一個(gè)最低可使用版本的Build Tools,只要使用Gradle
plugin 3.0.0+版本就不再需要手動(dòng)指定Build Tools(buildToolsVersion)了。
四、Android Studio 3.0.1 導(dǎo)入Android-22中的ApiDemos項(xiàng)目
| 步驟 | 類型 | 示例 |
|---|---|---|
| 1 | 操作 | Android Studio中導(dǎo)入eclipse項(xiàng)目,自動(dòng)生成gradle配置文件。![]() import eclipse project from android studio
|
| 2 | 操作 | 選擇我們準(zhǔn)備好的Android-22 ApiDemos源碼目錄。![]() select apiDemos project
|
| 3 | 操作 | 設(shè)置Project要導(dǎo)入的目標(biāo)目錄![]() select project import directory
|
| 4 | 操作 | 保持默認(rèn)導(dǎo)入設(shè)置不變![]() keep the import settings default
|
| 5 | 錯(cuò)誤 | 項(xiàng)目導(dǎo)入之后,編譯項(xiàng)目,開始解決編譯錯(cuò)誤。<font color="red">編譯錯(cuò)誤1:為preference_switch文件增加.xml后綴</font>![]() first build apiDemos and resolve first error
|
| 6 | 錯(cuò)誤&操作 | <font color="red">編譯錯(cuò)誤2:缺少support v4 包,需要導(dǎo)入正確版本的support v4 包,默認(rèn)通過module settings 導(dǎo)入的都是最新的版本,有可能不兼容。需要導(dǎo)入和buildToolsVersion 相匹配的v4 包。</font>![]() need support v4 package
![]() add support v4 package
|
| 7 | 錯(cuò)誤 | 編譯錯(cuò)誤2:缺少support v4 包,需要導(dǎo)入正確版本的support v4 包,默認(rèn)通過module settings 導(dǎo)入的都是最新的版本,有可能不兼容。需要導(dǎo)入和buildToolsVersion 相匹配的v4 包。![]() need support v4 package
|
| 8 | 操作 | 添加V4包:項(xiàng)目右鍵-->open module settings-->選擇modules中的app-->選擇Dependencies-->點(diǎn)擊左下角 "+"號(hào)-->選擇support v4包-->點(diǎn)擊OK-->OK關(guān)閉module settings界面。![]() add support v4 package
![]() 最新support v4被放置在了google()倉庫中,需要添加google()倉庫支持
|
| 8 | 錯(cuò)誤 | 點(diǎn)擊上圖中錯(cuò)誤Add GoogleMaven repository and sync project之后會(huì)添加google()倉庫到項(xiàng)目中,再編譯![]() 點(diǎn)擊上圖中錯(cuò)誤Add GoogleMaven repository and sync project之后會(huì)添加google()倉庫到項(xiàng)目中,再編譯
|
| 9 | 操作 | 修改minSdkVersion為14,再編譯![]() 修改minSdkVersion為14
|
| 10 | 操作 | [注釋掉mms相關(guān)代碼,因?yàn)閙ms編譯需要內(nèi)核。注釋掉所有錯(cuò)誤地方![]() 注釋掉mms相關(guān)代碼,因?yàn)閙ms編譯需要內(nèi)核
![]() 注釋掉mms相關(guān)代碼,因?yàn)閙ms編譯需要內(nèi)核2
|
| 11 | 錯(cuò)誤&操作 | 查看android-22和android-23源碼得知:Notification.setLatestEventInfo方法在android-23以上被刪除了,所以需要修改compileSdkVersion=22![]() Notification.setLatestEventInfo方法在android-23以上被刪除了,所以需要修改compileSdkVersion=22
![]() 適合compileSdkVersion=22的BuildToolsVersion列表
![]() 適合buildTools 22.0.1 的Support library 版本
|
| 12 | 錯(cuò)誤 | Android Gradle Plugin 版本3.0.1要求buildToolsVersion至少26.0.1,所而這里buildToolsVersion已經(jīng)不能升高,所以只能獎(jiǎng)勵(lì)gradle plugin 版本來匹配buildToolsVersion = 22.0.1![]() gradle plugin 版本對(duì)于buildToolsVersion=22.0.1來說太高了,必須降低
![]() 適合buildToolsVersion=22.0.1的gradle plugin版本
![]() 修改Gradle版本來適合Gradle plugin 版本
![]() Gradle plugin版本降低之后,需要移除google()倉庫,因?yàn)榈桶姹静恢С?/div>
Gradle plugin降級(jí)之后修改implementation為compile![]() 替換implementation為舊版本complie方法
|
| 13 | 錯(cuò)誤&操作 | 注釋掉錯(cuò)誤行代碼,api 23 才加入的方法,方然也可以繼續(xù)修改編譯環(huán)境來匹配api 23.![]() 注釋掉錯(cuò)誤行代碼,api 23 加入的方法
![]() api 23加入的方法
|
| 14 | 錯(cuò)誤 | 可能出現(xiàn)的錯(cuò)誤,如果出現(xiàn),按照錯(cuò)誤提示修改成res-auto名稱空間即可。![]() Gradle項(xiàng)目中自定義View都使用res-auto名稱空間
|
<font color="red">至此,ApiDemos已經(jīng)可以運(yùn)行成功了。</br>
代碼已經(jīng)上傳至Github:https://github.com/Farubaba/ApiDemos
</font>






















