本文首發(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龄广。
- 1.buildscript中放置的是項(xiàng)目構(gòu)建的配置
- 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)看处坪。
世界上有意思的事