Android多渠道打包
轉載請標明出處,維權必究:
https://www.cnblogs.com/tangZH/p/10764726.html
因為要統計各個市場的下載量和其他資料,所以在打包的時候就需要針對每個渠道單獨打包,於是,多渠道打包自然就出現了。
不然一個一個打可真是要命。
1、在AndroidManifest.xml檔案的</application>標籤裡面設定:
<meta-data android:name="APP_CHANNEL_VALUE" android:value="${APP_CHANNEL_VALUE}" />
2、app的build.gradle裡面設定(android {}裡面):
(1)、defaultConfig {}裡面加上:flavorDimensions "default"
(2)、productFlavors裡面寫上渠道名與渠道號
productFlavors {
//渠道1。渠道名:v1,渠道號v1_100 v1 { manifestPlaceholders = [ APP_CHANNEL_VALUE: "v1_100" ] }
//渠道2。渠道名:v2,渠道號:v2_100 v2 { manifestPlaceholders = [ APP_CHANNEL_VALUE: "v2_100" ] } }
(3)、設定輸出的apk名稱(方便檢視):
buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'),
'proguard-rules.pro' applicationVariants.all { variant -> variant.outputs.all { output -> def outputFile = output.outputFile if (outputFile != null && outputFile.name.endsWith('.apk')) { def fileName = "novel_v${defaultConfig.versionName}_${releaseTime()}_${variant.productFlavors[0].name}.apk" outputFileName = fileName } } } } }
這個是apk的名稱:
def fileName
= "novel_v${defaultConfig.versionName}_${releaseTime()}_${variant.productFlavors[0].name}.apk"
defaultConfig.versionName:版本號。
releaseTime():時間(具體方法接下來說)
variant.productFlavors[0].name:渠道名(這裡為v1或者v2)
apk名稱為novel_v + 版本號 + 時間 + 渠道名
(4)、releaseTime()方法(寫在build.gradle的最外層)
def releaseTime() { return new Date().format("MMdd", TimeZone.getTimeZone("UTC")) }
3、驗證:
(1)、程式碼中獲取渠道號
private String getMetaChannel() { try { ApplicationInfo appInfo = getPackageManager()
.getApplicationInfo(this.getPackageName(), PackageManager.GET_META_DATA); String value = appInfo.metaData.getString("APP_CHANNEL_VALUE"); return value; } catch (PackageManager.NameNotFoundException e) { e.printStackTrace(); } return ""; }
(2)、打debug包
然後執行,便可以打v1渠道的包,在看程式碼中列印出來的渠道是否正確
若是所有的渠道都是相同的渠道號,可以這樣:
productFlavors.all { flavor -> flavor.manifestPlaceholders = [ APP_CHANNEL_VALUE: “渠道號”, ] }
哪裡有不對的地方歡迎指出。
若是有疑問,或許這兩篇能夠幫到你:
https://www.cnblogs.com/tangZH/p/10764638.html
https://www.cnblogs.com/tangZH/p/10764568.html
相關文章
- Android 多渠道打包配置Android
- Walle —— Android多渠道打包神器Android
- Android多渠道打包實踐Android
- android多渠道打包最快方案Android
- Android美團多渠道打包Walle整合Android
- 多渠道打包
- android gradle 多渠道打包小結AndroidGradle
- Android 多渠道打包開發記錄Android
- Android多渠道打包相關介紹Android
- android Ant 批量多渠道打包 總結!Android
- Android Studio 使用Gradle多渠道打包AndroidGradle
- Android 生成簽名apk與多渠道打包AndroidAPK
- Gradle for Android系列之五 多渠道打包GradleAndroid
- Android使用Gradle實現多渠道打包AndroidGradle
- Android使用Ant進行apk多渠道打包AndroidAPK
- Android 詳解Gradle(3.1.4)實現多渠道打包AndroidGradle
- Gradle For Android(二) 多渠道打包與簽名配置GradleAndroid
- Gradle 實現 Android 多渠道定製化打包GradleAndroid
- Gradle實戰:Android多渠道打包方案彙總GradleAndroid
- Gradle for Android(三)多渠道打包、配置簽名資訊GradleAndroid
- Flutter 多渠道打包實踐Flutter
- Android進階之Walle多渠道打包&Tinker熱修復Android
- 關於Android studio Gradle 實現多渠道打包AndroidGradle
- Jenkins+Git+Walle+AndResGuard打造Android多渠道打包系統JenkinsGitAndroid
- Android多渠道打包工具Gradle外掛使用詳解AndroidGradle
- Android持續整合:Jenkins+Gradle+360加固+多渠道打包AndroidJenkinsGradle
- Flutter 多環境、多渠道自動打包Flutter
- Gradle模組化配置及多渠道打包Gradle
- Android 多渠道配置Android
- 借騰訊開源 VasDolly,談談 Android 簽名和多渠道打包的原理!Android
- 史上最詳細的Android Studio系列教程六--Gradle多渠道打包AndroidGradle
- 360加固+美團walle多渠道自動化打包
- 美團多渠道打包工具Walle原始碼解析原始碼
- 自動化瓦力多渠道打包python指令碼Python指令碼
- Android Gradle指令碼解決美團多渠道打包再加固渠道資訊丟失問題AndroidGradle指令碼
- Android學習探索之App多渠道打包及動態新增修改資源屬性AndroidAPP
- 多包名打包以及整合“極光推送”的坑點(區別於“多渠道打包”)
- Android官方多渠道方案詳解Android