android 渠道方案,Android多渠道打包时获取当前渠道的方法
作為Androidapp,發(fā)布多個分發(fā)平臺是常規(guī)操作。然后,有時由于個渠道面對的用戶不同,或平臺審核標準不同,需要在各渠道使用不同的業(yè)務邏輯,這就需要根據(jù)渠道使用選擇差異化代碼。
這里把簡單的代碼記一下。
首先,分渠道打包很簡單。
在項目的build.gradle里設置
android{
...
productFlavors{
home_site{
dimension"money"
manifestPlaceholders=[UMENG_CHANNEL_VALUE:"home_site"]
}
main_store{
dimension"money"
manifestPlaceholders=[UMENG_CHANNEL_VALUE:"main_store"]
}
other_store{
dimension"money"
manifestPlaceholders=[UMENG_CHANNEL_VALUE:"other_store"]
}
}
}
其中的?dimension是維度,通過?flavorDimensions設置。
defaultConfig{
...
flavorDimensions"money"
}
設置維度主要是為了管理方便。
這個項目里總共設置了三個渠道
其中?UMENG_CHANNEL_VALUE可以隨便命名,不過項目里的友盟統(tǒng)計會需要用到渠道名,所以這里就用UMENG的命名方法了。
接下來就是獲取當前的渠道名,這樣就可以根據(jù)不同的渠道包設置不同的邏輯,比如設置某一模塊在某些平臺發(fā)布的版本隱藏,而再另一些平臺的版本上顯示。
首先,需要在?AndroidManifest.xml文件定義信息變量。
android:icon="@mipmap/logo"
android:label="@string/app_name"
android:name=".App"
android:roundIcon="@mipmap/logo"
android:theme="@style/AppTheme.NoActionBar">
...
android:name="CHANNEL_NAME"
android:value="${UMENG_CHANNEL_VALUE}"/>
然后就可以在Application或Activity中獲取了。
ApplicationInfoapplicationInfo=null;
try{
applicationInfo=getPackageManager().getApplicationInfo(getPackageName(),PackageManager.GET_META_DATA);
if(applicationInfo==null){
return;
}
Stringvalue=applicationInfo.metaData.getString("CHANNEL_NAME");
CommonConfig.CHANNEL_NAME=value;
//按渠道設置差異化代碼
System.out.println("CHANNEL_NAME:"+value);
switch(value){
case"home_site":
//邏輯1
break;
case"main_store":
//邏輯2
break;
case"other_store":
//邏輯3
break;
}
}catch(PackageManager.NameNotFoundExceptione){
e.printStackTrace();
}
您可能感興趣的文章:AndroidStudio多渠道打包、自定義打包APK名稱Android多渠道打包的方法步驟AndroidStudio多渠道打包套路android二次打包完成apk多渠道打包的方法Android幾種多渠道打包的步驟詳解AndroidStudio多渠道打包的配置方法AndroidStudio多渠道批量打包及代碼混淆Android多渠道打包總結(jié)(推薦)使用AndroidStudioGradle實現(xiàn)友盟多渠道打包Android使用美團多渠道打包方案詳解
總結(jié)
以上是生活随笔為你收集整理的android 渠道方案,Android多渠道打包时获取当前渠道的方法的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: python while循环if_pyt
- 下一篇: 狄克斯特拉(Dijkstra)算法原理详