Android gradle的buildTypes內部配置java
buildTypes {
debug {
// 服務器配置
buildConfigField "String", "SERVERHEAD", "\"http://110.11.11.00/miaomiao/\""
//是否混淆
minifyEnabled false
zipAlignEnabled true
shrinkResources false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
signingConfig signingConfigs.debugandroid
}
release {
// 正式服務器
buildConfigField "String", "SERVERHEAD", "\"http://miaomiao.com/miaomiao/\""
//混淆
minifyEnabled true
zipAlignEnabled true//內存對齊
// 移除無用的resource文件
shrinkResources true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
//簽名
signingConfig signingConfigs.release
}
}
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
配置屬性說明:
minifyEnabled:服務器
debug與release的默認值都爲false,若是須要混淆須要手動配置爲true;
混淆文件在proguardFiles後面配置,默認爲app目錄下的 「proguard-rules.pro」
shrinkResources:app
配置true,移除無用的resource文件,能夠減少apk包的大小,有瘦身效果;
Tor Norbye在Google+上還透露了Android Gradle插件清除無用資源的效果:在構建時,自動移除無用資源的功能可以大幅度減少APK文件的大小(最高可減少34%);當前可以移除的無用資源包括圖片、佈局、菜單等資源文件,但不包括value資源文件。
zipAlignEnabled:工具
是否對齊app全部資源,對齊後,會使得在運行時Android與應用程序間的交互更加有效率;
配置此屬性必需要有足夠的信息簽名程序包,Ant纔會執行對齊操做,由於對齊處理髮生在簽名以後。爲了可以簽名程序包,進而執行對齊操做,Ant必須知道keystore的位置以及build.properties中key的名字。相應的屬性名爲key.store和key.alias。若是這些屬性爲空,簽名工具會在編譯過程當中提示輸入store/key的密碼,而後腳本會執行簽名及apk文件的對齊。若是這些屬性都沒有,Release程序包不會進行簽名,天然也就不會進行對齊了。
能夠直接在android{}內配置簽名信息,代碼以下:佈局
signingConfigs {
debug {
//miaomiao_keystore.jks文件最好放在項目app目錄下
storeFile file("miaomiao_keystore.jks")
storePassword "123456"
keyAlias "miaomiao"
keyPassword "123456"
}
release {
//miaomiao_keystore.jks文件最好放在項目app目錄下
storeFile file("miaomiao_keystore.jks")
storePassword "123456"
keyAlias "miaomiao"
keyPassword "123456"
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
buildConfigFieldgradle
字段參數配置,android的gradle會根據buildTypes的配置自動生成BuildConfig.java文件,直接在項目接口配置的java文件內經過類名調用獲取,能夠避免每次調試與正式打包時容易忘記切換服務器的問題,省去出錯麻煩.ui
//服務器頭字段
public static final String SERVER_HEADER = BuildConfig.SERVERHEAD;
1
2
如下通常爲默認屬性便可:.net
debuggable: debug模式默認爲true, release模式默認是false插件
jniDebuggable: debug模式與release模式默認都是false