利用Maven下載Android Gradle Plugin依賴的庫以及升級Android Gradle Plugin 3.0遇到的問題

一辅搬、背景

近期由于部分需求開發(fā)需要將Gradle和Android Gradle Plugin進(jìn)行升級到3.0.0以上,由于項(xiàng)目是運(yùn)行在專門的編譯機(jī)器進(jìn)行編譯夺姑,升級的話就要讓運(yùn)維將Gradle文件和Android Gradle Plugin依賴的所有文件放置到一個特定的文件夾里面扑馁,這樣其實(shí)很麻煩,于是萌生了將Gradle和Android Gradle Plugin放置到項(xiàng)目目錄下并進(jìn)行依賴狼讨。

二、利用Maven下載Android Gradle Plugin所有依賴的文件

首先創(chuàng)建一個文件命名為pom.xml柒竞,文件內(nèi)容如下

<?xml version="1.0" encoding="UTF-8"?>
<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 http://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
    xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
    <modelVersion>4.0.0</modelVersion>
    <groupId>com.dep.download</groupId>
    <artifactId>dep-download</artifactId>
    <version>1.0-SNAPSHOT</version>

    <repositories> 
        <repository>  
            <id>google</id>  
            <url>https://dl.google.com/dl/android/maven2/</url>  

            <releases>
                <enabled>true</enabled>
                <updatePolicy>daily</updatePolicy>
            </releases>
            <snapshots>
                <enabled>false</enabled>
                <checksumPolicy>warn</checksumPolicy>
            </snapshots>
            <layout>default</layout>
        </repository>  

        <repository>  
            <id>jcenter</id>  
            <releases>
                <enabled>true</enabled>
                <updatePolicy>daily</updatePolicy>
            </releases>
            <snapshots>
                <enabled>false</enabled>
                <checksumPolicy>warn</checksumPolicy>
            </snapshots>
            <layout>default</layout>
            <url>https://jcenter.bintray.com/</url>  
        </repository>  
    </repositories>  

    <dependencies>
        <dependency>
            <groupId>com.android.tools.build</groupId>
            <artifactId>gradle</artifactId>
            <version>3.1.0</version>
            <scope>compile</scope>
        </dependency>

    </dependencies>
</project>

對于Maven不熟悉可以參考這個【教程】 政供。上面<repositories>標(biāo)簽聲明了我們在build.gradle中g(shù)oogle()和jcenter()的Maven庫地址。dependencies則聲明了我們這個項(xiàng)目需要依賴的庫,這里是需要下載Android Gradle Plugin(com.android.tools.build:gradle:3.1.0)布隔,如果是要下載一個庫和其依賴的庫离陶,只要修改上面的Maven坐標(biāo)就可以。

pom.xml創(chuàng)建完畢則可以運(yùn)行以下Maven命令衅檀, 進(jìn)行這一步驟前需要先下載安裝maven并配置環(huán)境變量招刨。這一條命令是利用了maven的dependency插件實(shí)現(xiàn)copy-dependencies目標(biāo)操作,-U 是強(qiáng)制更新snapshot類型的插件或依賴庫哀军,因此需要加上沉眶。

mvn -f pom.xml dependency:copy-dependencies -U

運(yùn)行完畢會將依賴庫下載在target\dependency目錄下,Android Gradle Plugin 3.1.0版本互相依賴的庫總共有72個杉适,大約71M多谎倔。

image.png

三、修改build.Gradle依賴關(guān)系

首先將target\dependency下所有文件復(fù)制到項(xiàng)目根目錄下的任意一個文件夾猿推,這里我命名為build-tools\gradle-plugin片习,并將gradle-4.4.all.zip下載放到build-tools目錄下。

image.png

接著修改根目錄的build.gradle文件彤守,將 classpath 'com.android.tools.build:gradle:3.1.0' 注釋并增加 classpath fileTree(dir: 'build-tools/gradle-plugin', include: ['*.jar'])配置語句。

buildscript {
    repositories {
        google()
        jcenter()
    }

    dependencies {
        //classpath 'com.android.tools.build:gradle:3.1.0'
        //依賴于本地庫
        classpath fileTree(dir: 'build-tools/gradle-plugin', include: ['*.jar'])
    }
}

allprojects {
    repositories {
        google()
        jcenter()
    }
}

gradle-wrapper.properties文件下的gradle文件也修改成相對路徑哭靖,distributionUrl=../../build-tools/gradle-4.4-all.zip

distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
distributionUrl=../../build-tools/gradle-4.4-all.zip

這樣就能將Gradle和Android Gradle Plugin修改成依賴自己下載的文件具垫。

四、利用Maven下載Android Gradle Plugin依賴的文件(Maven本地庫)

上面的做法雖然可以依賴试幽,但是卻不能使用原來classpath 'com.android.tools.build:gradle:3.1.0'的依賴方式筝蚕,因此接下來是將gradle依賴的庫文件按maven庫形式下載下來。

首先將maven安裝目錄E:\apache-maven-3.5.3\E:\apache-maven-3.5.3\conf\settings.xml中將localRepository修改自定義目錄铺坞,這里修改為D:/maven-jar起宽,這就是maven下載后jar的目錄

  <!-- localRepository
   | The path to the local repository maven will use to store artifacts.
   |
   | Default: ${user.home}/.m2/repository
  <localRepository>/path/to/local/repo</localRepository>
  -->
  
  <localRepository>D:/maven-jar</localRepository>

接著在上面提及到的pom.xml所在文件夾下執(zhí)行mvn install,這時候mvn就會將com.android.tools.build:gradle所依賴的jar下載到D:/maven-jar中济榨,jar以及pom文件都會下載下來坯沪,這時候就可以在gradle里面設(shè)置maven本地庫了 maven {url “file:\D:\maven-jar”}了。


image.png

五擒滑、升級Android Gradle Plugin 3.0遇到的問題

  1. 升級multidex到1.0.2

multidex需要升級到1.0.2并需要在module的buold.gradle里面增加以下配置以解決包依賴重復(fù)的問題

configurations {
    all*.exclude group:'com.android.support', module:'multidex'
    all*.exclude group:'com.android.support', module:'multidex-instrumentation'
}

  1. windowEnterAnimation和windowExitAnimation not found 問題
    編譯出現(xiàn)以下問題
Error:(22, 5) style attribute '@android:attr/windowEnterAnimation' not found
Error:(22, 5) style attribute '@android:attr/windowExitAnimation' not found

這是aapt2導(dǎo)致的腐晾,3.0默認(rèn)啟用了aapt2。解決辦法就是在project的根目錄下的gradle.properties最后添加關(guān)閉aapt2的代碼:

android.enableAapt2=false
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末丐一,一起剝皮案震驚了整個濱河市藻糖,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌库车,老刑警劉巖巨柒,帶你破解...
    沈念sama閱讀 216,402評論 6 499
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件,死亡現(xiàn)場離奇詭異,居然都是意外死亡洋满,警方通過查閱死者的電腦和手機(jī)晶乔,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,377評論 3 392
  • 文/潘曉璐 我一進(jìn)店門,熙熙樓的掌柜王于貴愁眉苦臉地迎上來芦岂,“玉大人瘪弓,你說我怎么就攤上這事∏葑睿” “怎么了腺怯?”我有些...
    開封第一講書人閱讀 162,483評論 0 353
  • 文/不壞的土叔 我叫張陵,是天一觀的道長川无。 經(jīng)常有香客問我呛占,道長,這世上最難降的妖魔是什么懦趋? 我笑而不...
    開封第一講書人閱讀 58,165評論 1 292
  • 正文 為了忘掉前任晾虑,我火速辦了婚禮,結(jié)果婚禮上仅叫,老公的妹妹穿的比我還像新娘帜篇。我一直安慰自己,他們只是感情好诫咱,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,176評論 6 388
  • 文/花漫 我一把揭開白布笙隙。 她就那樣靜靜地躺著,像睡著了一般坎缭。 火紅的嫁衣襯著肌膚如雪竟痰。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 51,146評論 1 297
  • 那天掏呼,我揣著相機(jī)與錄音坏快,去河邊找鬼。 笑死憎夷,一個胖子當(dāng)著我的面吹牛莽鸿,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播拾给,決...
    沈念sama閱讀 40,032評論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼富拗,長吁一口氣:“原來是場噩夢啊……” “哼!你這毒婦竟也來了鸣戴?” 一聲冷哼從身側(cè)響起啃沪,我...
    開封第一講書人閱讀 38,896評論 0 274
  • 序言:老撾萬榮一對情侶失蹤,失蹤者是張志新(化名)和其女友劉穎窄锅,沒想到半個月后创千,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體缰雇,經(jīng)...
    沈念sama閱讀 45,311評論 1 310
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,536評論 2 332
  • 正文 我和宋清朗相戀三年追驴,在試婚紗的時候發(fā)現(xiàn)自己被綠了械哟。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點(diǎn)故事閱讀 39,696評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡殿雪,死狀恐怖暇咆,靈堂內(nèi)的尸體忽然破棺而出,到底是詐尸還是另有隱情丙曙,我是刑警寧澤爸业,帶...
    沈念sama閱讀 35,413評論 5 343
  • 正文 年R本政府宣布,位于F島的核電站亏镰,受9級特大地震影響扯旷,放射性物質(zhì)發(fā)生泄漏。R本人自食惡果不足惜索抓,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,008評論 3 325
  • 文/蒙蒙 一钧忽、第九天 我趴在偏房一處隱蔽的房頂上張望。 院中可真熱鬧逼肯,春花似錦耸黑、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,659評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽。三九已至洲拇,卻和暖如春奈揍,著一層夾襖步出監(jiān)牢的瞬間曲尸,已是汗流浹背赋续。 一陣腳步聲響...
    開封第一講書人閱讀 32,815評論 1 269
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留另患,地道東北人纽乱。 一個月前我還...
    沈念sama閱讀 47,698評論 2 368
  • 正文 我出身青樓,卻偏偏與公主長得像昆箕,于是被迫代替她去往敵國和親鸦列。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,592評論 2 353

推薦閱讀更多精彩內(nèi)容

  • Android 自定義View的各種姿勢1 Activity的顯示之ViewRootImpl詳解 Activity...
    passiontim閱讀 172,072評論 25 707
  • 以下內(nèi)容均為個人理解鹏倘,如果有描述不正確的地方薯嗤,歡迎指正轉(zhuǎn)載請注明原文鏈接 Gradle簡介 開始填坑之前,先簡單聊...
    大魚魚小仙人閱讀 67,538評論 10 60
  • 說明 本文主要介紹和Gradle關(guān)系密切纤泵、相對不容易理解的配置骆姐,偏重概念介紹。部分內(nèi)容是Android特有的(例如...
    jzj1993閱讀 15,623評論 1 62
  • Spring Cloud為開發(fā)人員提供了快速構(gòu)建分布式系統(tǒng)中一些常見模式的工具(例如配置管理,服務(wù)發(fā)現(xiàn)玻褪,斷路器肉渴,智...
    卡卡羅2017閱讀 134,651評論 18 139
  • 周記,每周都記带射。
    明月桑閱讀 321評論 0 0