Android Studio gradle配置詳解
阿新 • • 發佈:2019-01-15
android gradle配置詳解
AppExtension類及其屬性
可能大部分人看到AppExtension類會感覺到非常的陌生,其實我們在app中的build.gradle中填寫配置資訊的時候,經常看到它,它是什麼呢?
如果你按ctrl+滑鼠左鍵對著Android{},點選進去就知道了,其實android{…}表示的就是AppExtension這個類。
如圖:
我們再來看看AppExtension繼承關係:
除了AppExtension之外還有2個類與之相似,LibraryExtension和TestExtension
如果是module專案作為lib使用,那麼lib下的build.gradle中的android對應的是LibraryExtension
AppExtension的屬性
- aaptOptions:aapt是一個可以將資原始檔編譯成二進位制檔案的工具。aaptOptions表示aapt工具設定的可選項引數。
- adbExecutable:adb從編譯sdk時執行
- adbOptions:adb的可選項引數
- applicationVariants:應用變體列表
- ==buildToolsVersion==:構建工具版本(必要的)
- buildTypes:構建型別(一般是release和debug,還可以自定義)
- compileOptions:編譯可選項引數
- ==compileSdkVersion==:編譯sdk版本(必要的)
- dataBinding
- defualtConfig:預設配置,對於所有的打包專案
- defualtPublishConfig:預設是release。使用參考
- dexOptions:Dex可選項引數。
- externalNativeBuild:native編譯支援。參考
- flavorDimensionList:
- generatePureSplits:是否拆成多個APK
- jacoco:JaCoCo可選項引數
- lintOptions:Lint工具可選項引數
- ndkDirectory:ndk目錄(一般在local.properties中)
- packagingOptions:packaging的可選引數
- productFlavors:專案所有flavor
- publishNonDefualt:不僅僅使用預設的publish artifacts。可參考defualtPublishConfig。
- resourcePrefix:建立新資源時使用的字首。
- sdkDirectory:sdk目錄(一般在local.properties中)
- signingConfigs:簽名檔案的可選項引數
- sourceSets:資原始檔目錄指定(Android中有自己的AndroidSourceSets,這個一般用於assets,jin等目錄)
- splits:splits型別。
- testBuildType:測試構建型別
- testOptions:測試可選項引數
- testVariants:測試變體
- unitTestVariants:單元測試變體
- variantFilter:變體過濾器
加粗的表示DSL語言的閉包
如:
- 1
- 1
AppExtension的方法:
- flavorDimensions(dimension):指定flavor名稱
- useLibraray(name):請求使用一個lib庫
- useLibrary(name,required):與上面解釋一樣。
AppExtension的配置閉包(Configration blocks)
與app中build.gradle中android{}一樣,程式碼中由AppExtension類表示。其他的配置閉包也一樣。
- aaptOptions{}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- adbOption{}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- buildTypes{}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 38
- 39
- 40
- 41
- 42
- 43
- 44
- 45
- 46
- 47
- 48
- 49
- 50
- 51
- 52
- 53
- 54
- 55
- 56
- 57
- 58
- 59
- 60
- 61
- 62
- 63
- 64
- 65
- 66
- 67
- compileOptions{}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- dataBinding{}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- defualtConfig{}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
如果專案中包含多個Module,可以將共有的minSdkVersion和targetSdkVersion抽取到Project中的build.gradle檔案中。具體細節下一章節。
- dexOptions{}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- externalNativeBuild{}
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 31
- 32
- 33
- 34
- 35
- 36
- 37
- jacoco{}