Gradle for Android(三)多渠道打包、配置簽名資訊
多渠道打包
國內有太多Android App市場,每次發版幾十個渠道包。還好Android Gradle給我們提供了productFlavors,我們可以對生成的APK包進行定製。
productFlavors {//多渠道打包
xiaomi {
applicationId 'com.wuxiaolong.gradle4android1'
}
googlepaly {
applicationId 'com.wuxiaolong.gradle4android2'
}
}
定製生成的apk檔名
applicationVariants.all { variant ->
if (variant.buildType.name.equals('release')) {
variant.outputs.each { output ->
def outputFile = output.outputFile
if (outputFile != null && outputFile.name.endsWith('.apk')) {
def fileName = "gradle4android_v${defaultConfig.versionName}_${releaseTime()}_${variant.flavorName}.apk"
output.outputFile = new File(outputFile.parent, fileName)
}
}
}
}
輸出apk名字:gradle4android_v1.0_2016-03-23_xiaomi.apk
佔位符
多渠道打包,還會遇到一個問題,比如友盟統計的渠道號,Gradle處理辦法:manifestPlaceholders,它允許我們動態替換我們在AndroidManifest檔案裡定義的佔位符。AndroidManifest.xml:
<meta-data
android:name="UMENG_CHANNEL"
android:value="${UMENG_CHANNEL_VALUE}" />
如下,${UMENG_CHANNEL_VALUE}佔位符會被dev替換。
defaultConfig {
manifestPlaceholders = [UMENG_CHANNEL_VALUE: 'dev']
}
如果渠道太多,不用這樣一個個去寫,可以迴圈:
productFlavors.all { flavor ->
manifestPlaceholders.put("UMENG_CHANNEL_VALUE",name)
}
渠道打包完整程式碼:
android {
//省略部分程式碼
buildTypes {
release {
minifyEnabled false//是否啟動混淆
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
applicationVariants.all { variant ->
if (variant.buildType.name.equals('release')) {
variant.outputs.each { output ->
def outputFile = output.outputFile
if (outputFile != null && outputFile.name.endsWith('.apk')) {
def fileName = "gradleTest_v${defaultConfig.versionName}_${releaseTime()}_${variant.flavorName}.apk"
output.outputFile = new File(outputFile.parent, fileName)
}
}
}
}
//針對很多渠道
//productFlavors.all { flavor ->
// manifestPlaceholders.put("UMENG_CHANNEL_VALUE",name)
// }
}
}
productFlavors {//多渠道打包,命令列打包:gradlew assembleRelease
xiaomi {
applicationId 'com.wuxiaolong.gradle4android1'
manifestPlaceholders.put("UMENG_CHANNEL_VALUE", 'xiaomi')
}
googlepaly {
applicationId 'com.wuxiaolong.gradle4android2'
manifestPlaceholders.put("UMENG_CHANNEL_VALUE", 'googlepaly')
}
}
//省略部分程式碼
def releaseTime() {
return new Date().format("yyyy-MM-dd", TimeZone.getTimeZone("UTC"))
}
配置簽名資訊
Android Studio設定預設的簽名檔案
新浪微博SSO登入,微信分享這些都需要簽名打包,才能看到效果,設定預設簽名檔案為自己的簽名jks,這樣就不需要打包了直接執行起來就是正式的簽名。在android.signingConfigs{}下定義一個或者多個簽名資訊,然後在buildTypes{}配置使用即可。在app目錄下新增你的.jks,然後app的build.gradle檔案中的增加以下內容:第一種:
android {
signingConfigs {
debug {
storeFile file("WuXiaolong.jks")
storePassword 'android'
keyAlias 'android'
keyPassword 'android'
}
}
}
buildTypes沒有配置,也是直接取得debug,是不是不配置預設取得是debug呢?第二種:
android {
signingConfigs {
release {
storeFile file("WuXiaolong.jks")
storePassword 'android'
keyAlias 'android'
keyPassword 'android'
}
}
buildTypes {
debug {
signingConfig signingConfigs.release
}
}
}
簽名打包
通過Android Studio簽名
通過命令列簽名
如上那樣配置簽名資訊
android {
signingConfigs {
release {
storeFile file("WuXiaolong.jks")
storePassword 'android'
keyAlias 'android'
keyPassword 'android'
}
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
signingConfig signingConfigs.release
}
}
}
先”build-clean Project”,然後Terminal輸入命名行:
gradle assembleRelease
列印資訊如下:
E:\AndroidStudioProjects\Gradle4Android>gradlew assembleRelease
:app:preBuild UP-TO-DATE
:app:preReleaseBuild UP-TO-DATE
:app:checkReleaseManifest
//省略部分
:app:packageRelease
:app:zipalignRelease
:app:assembleRelease
BUILD SUCCESSFUL
OK,打包成功的apk路徑如:
E:\AndroidStudioProjects\Gradle4Android\app\build\outputs\apk\app-release.apk
相關文章
- Gradle For Android(二) 多渠道打包與簽名配置GradleAndroid
- Android 生成簽名apk與多渠道打包AndroidAPK
- Gradle模組化配置及多渠道打包Gradle
- android gradle 多渠道打包小結AndroidGradle
- Android 多渠道打包配置Android
- Android Studio 使用Gradle多渠道打包AndroidGradle
- Gradle for Android系列之五 多渠道打包GradleAndroid
- Android使用Gradle實現多渠道打包AndroidGradle
- 借騰訊開源 VasDolly,談談 Android 簽名和多渠道打包的原理!Android
- Android 詳解Gradle(3.1.4)實現多渠道打包AndroidGradle
- Gradle 實現 Android 多渠道定製化打包GradleAndroid
- Gradle實戰:Android多渠道打包方案彙總GradleAndroid
- 關於Android studio Gradle 實現多渠道打包AndroidGradle
- 簽名打包Android版apkAndroidAPK
- Android App的簽名打包AndroidAPP
- Gradle 簽名的配置檔案 gradle.propertiesGradle
- Android多渠道打包Android
- Android 打包簽名 從生成keystore到完成簽名Android
- Android多渠道打包工具Gradle外掛使用詳解AndroidGradle
- Android Gradle指令碼解決美團多渠道打包再加固渠道資訊丟失問題AndroidGradle指令碼
- Android打包簽名那點事Android
- Android持續整合:Jenkins+Gradle+360加固+多渠道打包AndroidJenkinsGradle
- Gradle+Walle全新二代簽名打包工具Gradle
- Walle —— Android多渠道打包神器Android
- Android多渠道打包實踐Android
- android多渠道打包最快方案Android
- android 利用shell指令碼重新打包簽名Android指令碼
- 史上最詳細的Android Studio系列教程六--Gradle多渠道打包AndroidGradle
- Android Studio 簽名打包過程圖解Android圖解
- 教你在Android自動打包解包簽名方法Android
- Android美團多渠道打包Walle整合Android
- Android 多渠道配置Android
- android studio 3.0 gradle 打包指令碼配置AndroidGradle指令碼
- 多渠道打包
- Android專案如何進行簽名打包釋出Android
- Android 多渠道打包開發記錄Android
- Android多渠道打包相關介紹Android
- android Ant 批量多渠道打包 總結!Android