Android Gradle 常用使用场景实现方式的总结
来源:互联网 发布:pk10免费计划软件 编辑:程序博客网 时间:2024/06/05 08:03
多渠道打包
<meta-data
android:name="${UMENG_CHANNEL_VALUE}"
android:value="Channel_ID" />
android {
productFlavors {
xiaomi {}
yingyongbao {}
}
productFlavors.all {
flavor -> flavor.manifestPlaceholders = [UMENG_CHANNEL_VALUE: name]
}
}
./gradle assembleRelease
./gradle assembleXiaomiRelease
packer-ng-plugin
美团点评技术团队:新一代开源Android渠道包生成工具Walle
自定义输出 APK 文件名
apply plugin: 'com.android.application'
def releaseTime() {
return new Date().format("yyyy-MM-dd", TimeZone.getTimeZone("UTC"))
}
android {
android.applicationVariants.all { variant ->
variant.outputs.each { output ->
output.outputFile = new File(output.outputFile.parent, rootProject.getName()
+ "-" + buildType.name
+ "-" + releaseTime()
+ "-v" + defaultConfig.versionName
+ "-" + defaultConfig.versionCode
+ ".apk");
}
}
}
YFSample-release-2017-09-12-v1.0-1.apk
Debug 和 Release 相同签名
android {
buildTypes {
debug {
minifyEnabled true
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
buildConfigField "boolean", "DEBUG_MODE", "true"
signingConfig signingConfigs.config
}
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
buildConfigField "boolean", "DEBUG_MODE", "false"
signingConfig signingConfigs.config
}
}
}
隐藏签名信息
ReleaseKeyPassword=sampleKeyPwd
ReleaseKeyAlias=sampleAlias
ReleaseStorePassword=sampleStorePwd
ReleaseStoreFile=../sample.jks
allprojects {
afterEvaluate { project ->
def propsFile = rootProject.file('keystore.properties')
def configName = 'config'
if (propsFile.exists() && android.signingConfigs.hasProperty(configName)) {
def props = new Properties()
props.load(new FileInputStream(propsFile))
android.signingConfigs[configName].storeFile = file(props['ReleaseStoreFile'])
android.signingConfigs[configName].storePassword = props['ReleaseStorePassword']
android.signingConfigs[configName].keyAlias = props['ReleaseKeyAlias']
android.signingConfigs[configName].keyPassword = props['ReleaseKeyPassword']
}
}
}
def keystorePropertiesFile = rootProject.file("keystore.properties");
def keystoreProperties = new Properties()
keystoreProperties.load(new FileInputStream(keystorePropertiesFile))
android {
signingConfigs {
config {
storeFile file(keystoreProperties['ReleaseStoreFile'])
storePassword keystoreProperties['ReleaseStorePassword']
keyAlias keystoreProperties['ReleaseKeyAlias']
keyPassword keystoreProperties['ReleaseKeyPassword']
}
}
}
日志开关
buildTypes {
debug {
buildConfigField "boolean", "DEBUG_MODE", "true"
}
release {
buildConfigField "boolean", "DEBUG_MODE", "false"
}
}
环境分离
参考链接
InfoQ — 深入理解Android(一):Gradle详解
GitBook — Gradle User Guide 中文版
极客学院 — Gradle 使用指南
阅读全文
0 0
- Android Gradle 常用使用场景实现方式的总结
- Android Gradle 常用使用场景实现方式的总结
- Android中实现IPC的方式及使用场景
- Android开发常用的gradle配置总结
- Android 动画使用的常用场景
- Android Gradle使用总结
- Android Gradle使用总结
- android gradle 常用依赖总结
- Android中Toast的常用使用方式总结
- JAVA常用集合实现方式的总结
- Android Gradle的使用
- iOS App之间常用的五种通信方式及适用场景总结
- iOS日常学习 - App之间常用的五种通信方式及适用场景总结
- iOS App之间常用的五种通信方式及适用场景总结
- Android Studio Gradle的配置使用与解析总结
- Docker的使用场景总结
- Handler(消息机制)的常用场景总结
- 使用gradle的productFlavors实现Android项目多渠道打包
- Java4Android笔记之Java中的分支语句
- SPFA+双向建图——请柬、邮递员送信、银牛派对Silver Cow Party
- 2018网易校园招聘 DP
- 1.1Hibernate简介及与传统连接方式对比
- 数学三大流派之我见
- Android Gradle 常用使用场景实现方式的总结
- (重要)Java中的String为什么是不可变的
- a big event
- 063 不定积分之分部积分法 case 2 3 4
- 【BZOJ1294】【SCOI2009】围豆豆 Bean(射线法+状压DP+spfa)
- 详解Python中的循环语句的用法
- 1.2Hibernate环境配置及使用的两种方式
- MySQL 事务没有提交导致 锁等待 Lock wait timeout exceeded
- 图片展示+购物车+天气查询+猜大小+日程