您的位置:首页 > 移动开发 > Android开发

Android——使用gradle进行多渠道自动打包

2016-08-26 15:23 537 查看

前言

在我的另一篇文章中介绍了如何使用Python进行多渠道打包,下面再把传统的gradle多渠道打包方式介绍一下,同样是以友盟SDK为例。

点击此处传送门Python快速打包技术

打包前配置

配置gradle

//主要是配置android{}封包下的内容
android {
。
。
。
signingConfigs { //配置签名文件,可以有多个
icekey {
keyAlias 'icekey'
keyPassword '填入key的密码'
storeFile file('/Users/****/key/icekey.jks')  //key所在文件夹
storePassword '填入store的密码'
}
}

buildTypes { //配置构建版本,可以有多个
//测试版本
debug {
debuggable true
zipAlignEnabled false
shrinkResources false
signingConfig signingConfigs.icekey
minifyEnabled false
}

//发布版本
release {
debuggable false //是否开启测试
zipAlignEnabled true //是否启用zipAlign压缩优化
shrinkResources true //是否删除未被使用的资源文件
minifyEnabled false  //是否开启混淆
signingConfig signingConfigs.icekey //签名文件
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
//指定混淆文件
}

//空版本
source {
debuggable true //是否开启测试
zipAlignEnabled true //是否启用zipAlign压缩优化
shrinkResources true //是否删除未被使用的资源文件
minifyEnabled false  //是否开启混淆
signingConfig signingConfigs.icekey //签名文件
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
//指定混淆文件
}
}

//创建渠道名称,main{}是一个不合法名称
productFlavors {
baidu {}
huawei {}
xiaomi {}
}

//    这里体现在AndroidManifest中的
//    <meta-data
//    android:name="UMENG_CHANNEL"
//    android:value="${UMENG_CHANNEL_VALUE}"/>
//运行自动赋值给AndroidManifest.xml中的${UMENG_CHANNEL_VALUE}
productFlavors.all {
flavor -> flavor.manifestPlaceholders = [UMENG_CHANNEL_VALUE: name]
}

lintOptions { //配置打包线程的操作
ignoreWarnings true //忽略警告
checkReleaseBuilds false //是否检查release版本
abortOnError false //出现错误是否终止
}

applicationVariants.all { variant ->
variant.outputs.each { output ->
def outputFile = output.outputFile
if (outputFile != null && outputFile.name.endsWith(".apk")) {  //判断是否是apk
//这个函数生成了apk的名称
def apkName = "ice-${variant.productFlavors[0].name}-${defaultConfig.versionName}.apk"
output.outputFile = new File(outputFile.parent, apkName) //输出文件
}
}
}

。
。
。
}


配置AndroidManifest.xml

在Application标签下添加:

<!--友盟的key-->
<meta-data
android:name="UMENG_APPKEY"
android:value="57bf375ee0f5*******018a3"/>
<!--友盟渠道号-->
<meta-data
android:name="UMENG_CHANNEL"
android:value="${UMENG_CHANNEL_VALUE}"/> //这样写就能够读取gradle中的[UMENG_CHANNEL_VALUE: name]的name的值了。


开始自动打包

在Android Studio的的终端机中输入

./gradlew assembleRelease  //打包所有渠道的Release版包
./gradlew assembleSource //打包所有渠道的Source版包
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息