多渠道打包。爲了方便統計不同市場的用戶情況等信息。 需要實現每個市場一個唯一標識來統計信息 。比如友盟統計
友盟統計具體實現步驟我就不詳述了。 可以去看友盟的文檔。
我們多渠道打包一般是 Android Stuido 環境下。
1 在application 下配置meta data
<application
android:allowBackup="true"
android:icon="@mipmap/ic_launcher"
android:label="@string/app_name"
android:supportsRtl="true"
android:theme="@style/AppTheme">
<meta-data
android:name="CHANNEL_NAME" //獲取渠道的標識key
android:value="${UMENG_CHANNEL_VALUE}" /> //不同的value區分不同的渠道
<activity android:name=".MainActivity">
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
2 在gradle 下配置
UMENG_CHANNEL_VALUE 多個渠道 多個名字
productFlavors {
xiaomi {}
baidu {}
wandoujia {}
}
productFlavors.all {
flavor -> flavor.manifestPlaceholders = [UMENG_CHANNEL_VALUE: name] //這個標識將productFlavors 中的名字 賦值給 UMENG_CHANNEL_VALUE 也就是 xiaomi{} 會賦值 xiaomi 給UMENG_CHANNEL_VALUE;
}
3 打包
可以看到 已經配置的 三個渠道名字 這樣答出來的包 直接是有名字區分的。 每個名字對應一個UMENG_CHANNEL_VALUE 這樣就 xiaomi baidu 就根據UMENG_CHANNEL_VALUE 的值不同就可以區分開來 不同的渠道
二 多渠道的打包我們知道 改怎麼實現了。 那麼如果需求定的是根據不同的渠道來展示不同的啓動頁 圖片 比如我想要在小米應用商店下載的app 打開的時候展示 小xx首發 logo 圖。 百xx下載的app 打開的是百xx首發的logo圖 怎麼辦 ?
1 根據不同渠道的UMENG_CHANNEL_VALUE 值 我可以變換 logo 圖 。那麼如何拿到UMENG_CHANNEL_VALUE 的值。
2
<meta-data
android:name="CHANNEL_NAME" //友盟的標識
android:value="${UMENG_CHANNEL_VALUE}" /> //不同的value區分不同的值
這裏我們可以 根據CHANNEL_NAME 作爲key 來取UMENG_CHANNEL_VALUE 這樣判斷一下 就可以實現需求
3 那麼如何取到 UMENG_CHANNEL_VALUE 呢
ApplicationInfo info= null;
try {
info=getPackageManager().getApplicationInfo(getPackageName(),PackageManager.GET_META_DATA);
String msg =info.metaData.getString("ab");
if("xiaomi".equals(msg)){
}else if(){
}...
} catch (Exception e) {
e.printStackTrace();
}
注意我這裏用的是getApplicationInfo 網上搜到的獲取meta data 數據的,很多都是 ActivityInfo 這是獲取在Activty節點中配置的metadata 的 我們這是在Application 節點下配置的
你要是用getActivityInfo 是拿不到東西的。
至此大功告成。