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