丨版權說明 : 《如何快速優雅地導入第三方Android項目》於當前CSDN博客和乘月網屬同一原創,轉載請說明出處,謝謝。
最近有很多朋友都在向我抱怨導入第三方項目遇到各種各樣的問題,有的人懷疑這些項目有問題,有的人則不惜修改Android Studio(下文簡稱:AS)或jdk的一些底層配置。鑑於此,作此文統一回答。
其實好好想想:誰會沒事幹上傳些有問題的項目呢?你有做過多少項目需要修改AS或jdk的底層配置呢?這反映了你對AS的Android項目結構的認識較淺或平時導入第三方項目爬坑的總結較少哈。本文只針對AS導入第三方Android項目,至於Eclipse?方法雖有,但求別再折騰了,趕緊換AS吧。
瞭解AS項目主要構建要素
項目 | 構建要素 | 構建項目費時費力指數 |
---|---|---|
1、Gradle | gradle構建資源包,gradle tools構建插件 | ★★★★★ |
2、buildTools | Android構建工具包 | ★★★★ |
3、sdk | compileSdk,targetSdk | ★★★★ |
4、support lib | 如:support-v4,appcompat-v7 | ★★ |
5、第三方lib | 如:圖片解析庫glide,網絡解析庫okhttp | ★ |
分析
其實構建Android項目本身並不麻煩,也不太耗時,主要是因爲如果AS本地沒有安裝過目標項目指定版本的這些要素,AS就會現場下載,安裝這些要素,然後再去構建目標項目。如果中間出現下載或解壓或安裝錯誤,你不知道怎麼去解決,那真的要懷疑人生了。
如何優雅?
1.先下載AS項目壓縮包解壓好,或者從git和svn下載項目文件,再準備用AS導入項目
請注意:先準備好要導入的項目,不要急着AS直接導入。現在AS很強大,本身支持git和svn導入項目,但請不要這麼做,除非你確定它們能很好的導入
2.對照已有的AS項目修改目標項目關於這些要素的版本號
你可能明白我的意思了,如果本地有了這些版本的要素,那就不用下載了,是不是?
本文以開源庫CySharedElementTransition爲目標項目例子,下載地址:https://github.com/ausboyue/CySharedElementTransition,先下載壓縮包,再解壓。
打開已有的項目,查看gradle構建資源包
版本:
gradle爲gradle-4.6-all.zip
版本包,那麼請把目標項目的gradle-wrapper.properties文件內容裏的版本gradle-4.4-all.zip
改爲gradle-4.6-all.zip
同理對照着修改buildTools,sdk,support lib,第三方lib版本
Ok,作出以上修改,差不多就可以安心的用AS導入目標項目了。
值得注意的是:第三方lib版本能不修改最好不要去修改,第一他們幾乎不會影響下載和編譯速度,第二,他們每個版本的api代碼可能不一樣,修改後項目出現某類某方法找不到等等錯誤,你懂的。
寫到最後
你以爲就這樣結束了?作爲五星指數的Gradle
可謂麻煩衆多,容我再嘮叨2點:
1. Gradle構建工具插件和Gradle版本有着一定的版本對應關係,看下錶:
Gradle插件版本 | 要求的Gradle版本範圍 |
---|---|
1.0.0 - 1.1.3 | 2.2.1 - 2.3 |
1.2.0 - 1.3.1 | 2.2.1 - 2.9 |
1.5.0 | 2.2.1 - 2.13 |
2.0.0 - 2.1.2 | 2.10 - 2.13 |
2.1.3 - 2.2.3 | 2.14.1+ |
2.3.0+ | 3.3+ |
3.0.0+ | 4.1+ |
3.1.0+ | 4.4+ |
… | … |
com.android.tools.build:gradle:版本號 | https://services.gradle.org/distributions/gradle-版本號-all.zip |
所以在修改gradle版本時請注意兩者版本的對應關係,以免出現問題。
2. 如果你真的不想改動第三方項目的gradle版本,而本地沒有安裝過該版本
這裏介紹一個很簡單粗暴的方法,仍以CySharedElementTransition爲例,項目gradle版本爲4.4
,本地沒有安裝該版本的Gradle,先導入CySharedElementTransition,AS一直卡在gradle
中(其實是在下載4.4版本的Gradle),這時候直接通過任務管理器或其它方式強制關閉AS,然後進入Gradle的安裝目錄,windows默認在用戶目錄下C:\Users\Cheny\.gradle\wrapper\dists\
,如下圖:
AS在導入項目進入gradle
中時,如果本地沒有目標版本的Gradle就會自動爲其創建安裝目錄gradle-4.4-all\9br9xq1tocpiv8o6njlyu5op1
,其中9br9xq1tocpiv8o6njlyu5op1
爲隨機碼目錄,意味着AS每次創建該目錄,目錄名可能都不相同,不要在意這點,反正Gradle最終是安裝在隨機碼目錄下。
然後自行通過某雷,某DM,瀏覽器等下載器下載目標版本的壓縮包,https://services.gradle.org/distributions/gradle-4.4-all.zip(https://services.gradle.org/distributions/gradle-版本號-all.zip),下載完畢後將壓縮包複製到隨機碼目錄下,目錄下的其它文件全部刪除:
打開AS,打開CySharedElementTransition或重新導入CySharedElementTransition即可自動解壓安裝目標版本Gradle包,構建要素的第一項算是完成了。
總結:說來說去,都是離不開“下載”兩個字,畢竟是國外的IDE,如果能開上代理網絡,或許這些問題都能迎刃而解了。當然,能不下載就別去下載,這樣可以有效避免下載過多幾乎不用的gradle和sdk等資源,這些問題是導致很多人的c盤慢慢爆滿了,AS,sdk達到十幾甚至幾十g的主要原因之一。