GradleForAndroid筆記

本文首發(fā)于微信公眾號(hào)——世界上有意思的事桩警,搬運(yùn)轉(zhuǎn)載請(qǐng)注明出處炒瘸,否則將追究版權(quán)責(zé)任捞慌。微信號(hào):a1018998632耀鸦,交流qq群:859640274

就是一筆記,我看的英文版啸澡,里面紕漏應(yīng)該比較多袖订。方便自己記憶而已。

  • 1.gradle的插件就是一系列可以被復(fù)用的構(gòu)建項(xiàng)目的腳本嗅虏,我們可以使用其中的task
  • 2.一個(gè)gradle文件中只能存在一種插件:
    • 1.apply plugin: 'com.android.application',這是構(gòu)建一個(gè)app的插件
    • 2.apply plugin: 'com.adnroid.library',這是構(gòu)建一個(gè)sdk的插件
  • 3.setting.gradle文件中表示需要加入到project中的module洛姑,單個(gè)項(xiàng)目不需要setting文件,多module的項(xiàng)目就需要了
  • 4.android項(xiàng)目中最頂層的build文件被應(yīng)用于所有的module:
    • 1.buildscript中放置的是項(xiàng)目構(gòu)建的配置
      • 1.repositories:其中放置的是遠(yuǎn)程中央倉(cāng)庫(kù)皮服,用于聯(lián)網(wǎng)下載依賴
      • 2.dependencies:其中放置的是需要應(yīng)用于所有module的依賴楞艾,初始化的時(shí)候回默認(rèn)放置一個(gè) android的gradle插件。
    • 2.allprojects:其中可以放置自定義的適用于全部module的配置和task龄广。
  • 5.gradle的android插件繼承了java插件的幾個(gè)基本task:
    • 1.assemble:為每個(gè)build type 創(chuàng)建apk
    • 2.clean:清理build后的文件硫眯,例如apk文件
    • 3.check:運(yùn)行所有的單元測(cè)試,和集成測(cè)試
    • 4.build:運(yùn)行assemble和check
    • 5.connectedCheck:在一個(gè)連接的手機(jī)設(shè)備安裝了apk之后再卸載
    • 6.deviceCheck:
    • 7.installDebug择同、installRelease:將某種版本的apk安裝到手機(jī)設(shè)備上
    • 8.所有的install操作都有相應(yīng)的uninstall操作
  • 6.在編譯的時(shí)候回生成一個(gè)BuildConfig两入,我們可以在buildType中為各種版本的apk,添加自定義字段敲才,在打包的時(shí)候會(huì)根據(jù)不同的版本的字段進(jìn)行打包
  • 7.在用多個(gè)module的情況下可以在根目錄的 gradle文件中增加ext塊裹纳,這個(gè)塊中的配置可以被到其他moudule中去
  • 8.可以由這些方式引入依賴:
    • 1.maven庫(kù)
    • 2.Ivy
    • 3.靜態(tài)文件或者目錄
  • 9.一個(gè)遠(yuǎn)程依賴由于三部分組成:group、name痊夭、version
  • 10.設(shè)置倉(cāng)庫(kù)
    • 1.遠(yuǎn)程maven庫(kù):JCenter()刁岸、mavenCentral()脏里、mavenLocal()
    • 2.其他遠(yuǎn)程庫(kù):如果需要添加其他maven或者ivy遠(yuǎn)程庫(kù),那么可以用maven番舆、ivy塊將url包起來(lái)
    • 3.本地庫(kù):對(duì)于本地其他的maven或者ivy庫(kù)恨狈,可以使用絕對(duì)路徑或者相對(duì)路徑
    • 4.設(shè)置文件為庫(kù):你可以使用flatDir塊來(lái)將某個(gè)目錄設(shè)置成倉(cāng)庫(kù)
  • 11.添加依賴:
    • 1.添加遠(yuǎn)程依賴: compile '遠(yuǎn)程依賴名'
    • 2.添加jar依賴: compile files('jar名')
    • 3.添加依賴目錄: compile fileTree('libs'),android中只能添加目錄下的jar: compile fileTree(dir: 'libs' , include: ['*.jar'] )
  • 12.依賴項(xiàng)目
    • 1.apply plugin: 'com.android.library' 是一個(gè)依賴項(xiàng)目的插件
    • 2.最后生成的是一個(gè)aar文件禾怠,可以被其他項(xiàng)目引用
      • 1.編譯library然后再output文件下面可以找到aar文件
      • 2.需要新建一個(gè)arr的目錄吗氏,然后使用flatDir來(lái)添加這個(gè)目錄
      • 3.compile(name: 'libraryname' , ext: 'aar')
    • 3.compile project(':library') 表示引用該項(xiàng)目
  • 13.依賴的概念
    • 1.compile:不僅僅在項(xiàng)目中使用代碼膀哲,而且將代碼打包造apk中
    • 2.apk:不在項(xiàng)目中用仿村,打包入代碼
    • 3.provider:在項(xiàng)目中用兴喂,不打包入代碼
    • 4.testCompile和androidTestCompile:只添加到測(cè)試apk中压真,不加在release中
  • 14.語(yǔ)義版本
    • 1.major結(jié)尾:修改api接口
    • 2.minor結(jié)尾:修改api內(nèi)部代碼
    • 3.patch結(jié)尾:修復(fù)bug
  • 15.動(dòng)態(tài)版本:依賴一個(gè)最終版滴肿,不再修改版本了
    • 1.compile ‘groupname:name:version+’
    • 2.動(dòng)態(tài)版本可能造成編譯問(wèn)題贵少,因?yàn)榭赡苤虚g會(huì)有版本修改api
  • 16.可以在buildTypes中添加塊滔灶,來(lái)定義多個(gè)不同的打包方式
  • 17.每創(chuàng)建一個(gè)buildTypes 資源集合都會(huì)賦值成為一個(gè)新的分支
  • 18.如果只要在某個(gè)版本中添加依賴录平,那么加個(gè)前綴就好了例如:debugCompile
  • 19.如果要對(duì)某一個(gè)相同的apk斗这,進(jìn)行區(qū)分。例如區(qū)分付費(fèi)和不付費(fèi)的兩個(gè)版本钮莲。那么可以使用productFlavors塊
  • 20.在資源打包上的優(yōu)先級(jí)是這樣的:Build type > Flavor > main > dependencies
  • 21.compile project(':library')用來(lái)添加依賴庫(kù)依賴
  • 22.可以在setting.gradle中添加類似‘:library1:library2’,來(lái)表示嵌套的依賴項(xiàng)目
  • 23.在gradle編譯項(xiàng)目的時(shí)候崔拥,會(huì)先去找setting文件,如果沒(méi)有那么gradle久認(rèn)定只有一個(gè)項(xiàng)目稽揭,如果有多個(gè)項(xiàng)目揪胃,那么gradle編譯的時(shí)候會(huì)選擇給定的那個(gè)項(xiàng)目,然后將其他項(xiàng)目的文件合并進(jìn)來(lái)骚勘。
  • 24.在根目錄下面使用構(gòu)建命令的時(shí)候,會(huì)編譯全部的module。在某個(gè)module下面則編譯某個(gè)module
  • 25.你可以通過(guò)在根目錄下面運(yùn)行類似 gralde:app:clean 來(lái)控制具體某個(gè)module進(jìn)行構(gòu)建操作
  • 26.Groovy語(yǔ)法:類似java户矢,是運(yùn)行在jvm上面的梯浪,可以和java混用
    • 1.println ‘a(chǎn)aa’:直接輸出
    • 2.def name = ‘a(chǎn):使用def可以定義任何類型變量
    • 3.new Date()."$method"():可以定義占位符method
    • 4.定義的class method 默認(rèn)是public的
    • 5.instance.setA 'a':調(diào)用方法的時(shí)候 可以不寫括號(hào)
    • 6.def square = { num -> num * num}定義method返回值的時(shí)候 可以返回具體類型恋腕,也可以返回def,方法體也可以寫成lambda的形式
    • 7.List l = [1 , 2 , 3]:定義數(shù)組哈肖,遍歷可以用each(),lambda加在后面,也可以使用閉包
    • 8.Map m = [m : 10 , p : 12]:定義map,m.m方式可以獲取
  • 27.Groovy在Gradle中:
    • 1.引入插件的時(shí)候會(huì)使用:apply plugin: '',也可以寫成:project.apply([plugin : ‘’])漩绵,project是自動(dòng)生成的一個(gè)class侨糟,可以通過(guò)添加map的方式添加插件
    • 2.添加依賴的時(shí)候會(huì)使用:dependencies {compile ''},也可以寫成:project.dependencies({add(‘compile’ , '' , {})})
  • 28.縮小包:
    • 1.混淆
    • 2.縮小資源:shrinkResource = true
    • 3.去掉語(yǔ)言包,去掉不同分辨率的圖片:resConfig
  • 29.加快編譯:
    • 1.并行編譯:org.gradle.parallel = true
    • 2.增大gradle 的jvm內(nèi)存大欣骄搿:org.gradle.jvmargs = -Xms256m -Xmx1024m
    • 3.開啟jack和jill進(jìn)行編譯:defaultConfig、regular高职、experimental 中添加 useJack = true
    • 4.忽略Lint檢查:在LintOptions中添加 abortOnError = flase

不販賣焦慮寥粹,也不標(biāo)題黨楞件。分享一些這個(gè)世界上有意思的事情。題材包括且不限于:科幻、科學(xué)斯撮、科技张弛、互聯(lián)網(wǎng)乌庶、程序員、計(jì)算機(jī)編程。下面是我的微信公眾號(hào):世界上有意思的事划滋,干貨多多等你來(lái)看处坪。

世界上有意思的事

最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
  • 序言:七十年代末,一起剝皮案震驚了整個(gè)濱河市,隨后出現(xiàn)的幾起案子同窘,更是在濱河造成了極大的恐慌玄帕,老刑警劉巖,帶你破解...
    沈念sama閱讀 218,546評(píng)論 6 507
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件想邦,死亡現(xiàn)場(chǎng)離奇詭異桨仿,居然都是意外死亡,警方通過(guò)查閱死者的電腦和手機(jī)案狠,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 93,224評(píng)論 3 395
  • 文/潘曉璐 我一進(jìn)店門服傍,熙熙樓的掌柜王于貴愁眉苦臉地迎上來(lái),“玉大人骂铁,你說(shuō)我怎么就攤上這事吹零。” “怎么了拉庵?”我有些...
    開封第一講書人閱讀 164,911評(píng)論 0 354
  • 文/不壞的土叔 我叫張陵灿椅,是天一觀的道長(zhǎng)。 經(jīng)常有香客問(wèn)我钞支,道長(zhǎng)茫蛹,這世上最難降的妖魔是什么? 我笑而不...
    開封第一講書人閱讀 58,737評(píng)論 1 294
  • 正文 為了忘掉前任烁挟,我火速辦了婚禮婴洼,結(jié)果婚禮上,老公的妹妹穿的比我還像新娘撼嗓。我一直安慰自己柬采,他們只是感情好,可當(dāng)我...
    茶點(diǎn)故事閱讀 67,753評(píng)論 6 392
  • 文/花漫 我一把揭開白布且警。 她就那樣靜靜地躺著粉捻,像睡著了一般。 火紅的嫁衣襯著肌膚如雪斑芜。 梳的紋絲不亂的頭發(fā)上肩刃,一...
    開封第一講書人閱讀 51,598評(píng)論 1 305
  • 那天,我揣著相機(jī)與錄音杏头,去河邊找鬼盈包。 笑死,一個(gè)胖子當(dāng)著我的面吹牛大州,可吹牛的內(nèi)容都是我干的续语。 我是一名探鬼主播,決...
    沈念sama閱讀 40,338評(píng)論 3 418
  • 文/蒼蘭香墨 我猛地睜開眼厦画,長(zhǎng)吁一口氣:“原來(lái)是場(chǎng)噩夢(mèng)啊……” “哼疮茄!你這毒婦竟也來(lái)了滥朱?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 39,249評(píng)論 0 276
  • 序言:老撾萬(wàn)榮一對(duì)情侶失蹤力试,失蹤者是張志新(化名)和其女友劉穎徙邻,沒(méi)想到半個(gè)月后,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體畸裳,經(jīng)...
    沈念sama閱讀 45,696評(píng)論 1 314
  • 正文 獨(dú)居荒郊野嶺守林人離奇死亡缰犁,尸身上長(zhǎng)有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點(diǎn)故事閱讀 37,888評(píng)論 3 336
  • 正文 我和宋清朗相戀三年,在試婚紗的時(shí)候發(fā)現(xiàn)自己被綠了怖糊。 大學(xué)時(shí)的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片帅容。...
    茶點(diǎn)故事閱讀 40,013評(píng)論 1 348
  • 序言:一個(gè)原本活蹦亂跳的男人離奇死亡,死狀恐怖伍伤,靈堂內(nèi)的尸體忽然破棺而出并徘,到底是詐尸還是另有隱情,我是刑警寧澤扰魂,帶...
    沈念sama閱讀 35,731評(píng)論 5 346
  • 正文 年R本政府宣布麦乞,位于F島的核電站,受9級(jí)特大地震影響劝评,放射性物質(zhì)發(fā)生泄漏姐直。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點(diǎn)故事閱讀 41,348評(píng)論 3 330
  • 文/蒙蒙 一蒋畜、第九天 我趴在偏房一處隱蔽的房頂上張望声畏。 院中可真熱鬧,春花似錦百侧、人聲如沸砰识。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,929評(píng)論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽(yáng)。三九已至初斑,卻和暖如春辛润,著一層夾襖步出監(jiān)牢的瞬間,已是汗流浹背见秤。 一陣腳步聲響...
    開封第一講書人閱讀 33,048評(píng)論 1 270
  • 我被黑心中介騙來(lái)泰國(guó)打工砂竖, 沒(méi)想到剛下飛機(jī)就差點(diǎn)兒被人妖公主榨干…… 1. 我叫王不留,地道東北人鹃答。 一個(gè)月前我還...
    沈念sama閱讀 48,203評(píng)論 3 370
  • 正文 我出身青樓乎澄,卻偏偏與公主長(zhǎng)得像,于是被迫代替她去往敵國(guó)和親测摔。 傳聞我的和親對(duì)象是個(gè)殘疾皇子置济,可洞房花燭夜當(dāng)晚...
    茶點(diǎn)故事閱讀 44,960評(píng)論 2 355