個人博客CoorChice,https://chenbingx.github.io/ ,最新文章將會首發CoorChice的博客,歡迎探索哦 !
同時,搜索微信公眾號CoorChice
,或掃描文章末尾二維碼,可以關注我的微信公眾號。同期文章也將會優先推送到微信公眾號中,以提醒您有新鮮文章出爐。
前言
在我的另一篇文章中介紹了如何使用Python進行多渠道打包,下面再把傳統的gradle多渠道打包方式介紹一下,同樣是以友盟SDK為例。
打包前配置
配置gradle
//主要是配置android{}封包下的內容
android {
。
。
。
signingConfigs { //配置簽名文件,可以有多個
icekey {
keyAlias 'icekey'
keyPassword '填入key的密碼'
storeFile file('/Users/**********/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版包
CoorChice的公眾號