標籤:led alt 來講 col tde gconf deb 統計分析 UI
好久沒有發部落格了,原因是換工作了,今天端午假期,所以來發一篇部落格,
多渠道打包,藉助友盟移動統計分析,希望對各位有所協助
多渠道打包的理解:
渠道包就是要在安裝包中添加渠道資訊,也就是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-------- 多渠道打包(藉助友盟移動統計分析)