android-------- 多渠道打包(借助友盟移動統計分析)
好久沒有發博客了,原因是換工作了,今天端午假期,所以來發一篇博客,
多渠道打包,借助友盟移動統計分析,希望對各位有所幫助
多渠道打包的理解:
渠道包就是要在安裝包中添加渠道信息,也就是channel,對應不同的渠道,例如:小米市場、豌豆莢、應用寶市場等
為什麽要提供多渠道包?
我們要在安裝包中添加不同的標識,應用在請求網絡的時候攜帶渠道信息,方便後臺做運營統計(這就是添加渠道信息的用處)。
實現多渠道打包的原理
一般來講,這個渠道的標識會放在AndroidManifest.xml的Application的一個Metadata中。然後就可以在java中通過API獲取對應的數據了。
進入主題
註冊友盟,並且添加新應用,獲得AppKey
引入依賴
compile ‘com.umeng.sdk:common:latest.integration‘
AndroidManifest.xml 添加appkey 和渠道占位符
<!--友盟統計相關 meta-data--> <meta-data android:value="5b2497a6f29d985d850001b3" android:name="UMENG_APPKEY"/><!--友盟 appkey--> <meta-data android:value="${UMENG_CHANNEL_VALUE}" android:name="UMENG_CHANNEL"/><!--渠道號-->
在build.gradle中去動態的替換掉我們的占位符的value即可
defaultConfig { applicationId "com.zhangqie.channel" minSdkVersion 15 targetSdkVersion 22 versionCode 1 versionName"1.0" testInstrumentationRunner "android.support.test.runner.AndroidJUnitRunner" multiDexEnabled true //突破應用方法數65535的一個限制 manifestPlaceholders = [UMENG_CHANNEL_VALUE:"name"] }
簽名文件生成 可以看我的博客Android Studio apk打包,keystore.jks文件生成,根據keystore密鑰獲取SHA1安全碼
簽名配置
signingConfigs { debug {} //release包添加簽名文件配置 release{ storeFile file("../channle.jks") storePassword "123456" keyAlias "channle" keyPassword "123456" } } buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile(‘proguard-android.txt‘), ‘proguard-rules.pro‘ signingConfig signingConfigs.release } }
渠道指定兩種方式
productFlavors{ xiaomi{ //manifestPlaceholders = [UMENG_CHANNEL_VALUE: "xiaomi"] } wandoujia{ //manifestPlaceholders = [UMENG_CHANNEL_VALUE: "wandoujia"] } }
//2 productFlavors.all{ flavor -> flavor.manifestPlaceholders = [UMENG_CHANNEL_VALUE: name] }
把前面的註釋取消, 第2處下面代碼刪除就是第二種方式
之後再控制臺 Terminal
輸入 gradlew assembleRelease
執行打包(註意: Mac的要這樣添加 ./gradlew assembleRelease
)
當然 gradlew assembleDebug 這是debug的
也可以指定打包 gradlew assembleWandoujiaRelease
豌豆莢的
執行打包
我弄時遇到一個坑
原因是我的 位置順序放錯誤了
buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile(‘proguard-android.txt‘), ‘proguard-rules.pro‘ signingConfig signingConfigs.release } } signingConfigs { debug {} //release包添加簽名文件配置 release{ storeFile file("../channle.jks") storePassword "123456" keyAlias "channle" keyPassword "123456" } }
所以要註意,
打包完成
生成apk包了
我們可以改變apk輸出的名稱
buildTypes { release { minifyEnabled false proguardFiles getDefaultProguardFile(‘proguard-android.txt‘), ‘proguard-rules.pro‘ signingConfig signingConfigs.release //指定我們release包的輸出文件名 就是我們的渠道名字 applicationVariants.all{ variant -> variant.outputs.each { output-> def outFile = output.outputFile if (outFile != null && outFile.name.endsWith(".apk")){ def fileName = "${variant.productFlavors[0].name}"+".apk" output.outputFile = new File(outFile.parent,fileName); } } } } }
輸入 gradlew assembleRelease
執行打包
名稱已改變,根據自己的需要設置,
這樣我們多渠道打包就完成了
android-------- 多渠道打包(借助友盟移動統計分析)