May
12th,
2015
去年开始使用 Android Studio 开发,效率提高很多, 黑色的主题也很酷。
几天纪录下如何使用gradle 批量打包以及 某些常量的动态配置。
首先需要理解gradle基础, 一种新的项目结构,类似maven, 但更好用
打包的所有配置都在module下的 build.gradle 文件中。文件结构
首先在配置你的签名(一下都在 android 目录中配置):
signingConfigs {
release {
keyAlias 'xxxx'
keyPassword 'xxxx'
storeFile file('xxxxx')
storePassword 'xxxx'
}
}
你可以配置多个签名如:一个release 一个debug
接下来配置buildType:
buildTypes {
debug {
buildConfigField "String", "HOST", '"xxxx"'
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
signingConfig signingConfigs.release
}
release {
buildConfigField "String", "HOST", '"xxxx"'
minifyEnabled true
shrinkResources true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-project.txt'
signingConfig signingConfigs.release
}
}
buildType 配置了你的apk输出类型,可以配置多个,每个类型中可做详细定义:
- buildConfigField 定义一个名为host的字符串,用于区分debug和release不同的服务器地址
- minifyEnabled 是否进行混淆 默认false
- shrinkResources 是否去除无用的res文件
- proguardFiles 制定混淆规则文件 具体规则
- signingConfig 制定签名 就是上面配置过的
如果希望配置更多的类型可以使用productFlavors 如友盟多渠道配置
productFlavors {
mi {
manifestPlaceholders = [UMENG_CHANNEL_VALUE: "mi"]
}
'360' {
manifestPlaceholders = [UMENG_CHANNEL_VALUE: "360"]
}
baidu {
manifestPlaceholders = [UMENG_CHANNEL_VALUE: "baidu"]
}
wandoujia {
manifestPlaceholders = [UMENG_CHANNEL_VALUE: "wandoujia"]
}
qq{
manifestPlaceholders = [UMENG_CHANNEL_VALUE: "qq"]
}
'1' {
manifestPlaceholders = [UMENG_CHANNEL_VALUE: "1"]
}
}
注:闭包数字需要加’’
这样每个buildType 类型对应了n个productFlavors类型,打包数量为:buildType * productFlavors个,别忘了修改manifest里友盟配置
<meta-data
android:name="UMENG_CHANNEL"
android:value="${UMENG_CHANNEL_VALUE}"></meta-data>
最后加上
//禁止lint错误
lintOptions {
abortOnError false
}
补充:buildConfigField可自由定义:buildConfigField 类型, 名称, 赋值
调用方式:BuildConfig.名称 即可