Androidマルチチャンネルを包装する時、現在のチャンネルを取得する方法
2676 ワード
Androidアプリとして、複数の配信プラットフォームをリリースするのが一般的です。その後、チャネルが直面するユーザーが違ったり、プラットフォームの審査基準が違ったりするため、各チャネルで異なる業務ロジックを使用する必要があります。これはチャネルによって異なるコードを選択する必要があります。
ここで簡単なコードをメモしてください。
まず、チャンネル別に包装するのは簡単です。
プロジェクトのbuild.gradleに設定します。
このプロジェクトには全部で三つのルートが設置されています。
そのうち UMENG_CHANNEL.VALEは自由にネーミングできますが、プロジェクトの友盟統計会はチャネル名が必要ですので、ここでUMENGのネーミング方法を使います。
次に、現在のチャンネル名を取得します。このようにして、異なるチャンネルパッケージによって、いくつかのモジュールがいくつかのプラットフォームで公開されているバージョンを隠して、他のプラットフォームのバージョンで表示するように、異なる論理を設定することができます。
まず第一に、 Android Manifest.xmlファイル定義情報変数。
ここで簡単なコードをメモしてください。
まず、チャンネル別に包装するのは簡単です。
プロジェクトの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は次元で、通過します。 flavoorDimensions設定。
defaultConfig {
...
flavorDimensions "money"
}
次元を設定するのは主に管理が便利なためです。このプロジェクトには全部で三つのルートが設置されています。
そのうち UMENG_CHANNEL.VALEは自由にネーミングできますが、プロジェクトの友盟統計会はチャネル名が必要ですので、ここでUMENGのネーミング方法を使います。
次に、現在のチャンネル名を取得します。このようにして、異なるチャンネルパッケージによって、いくつかのモジュールがいくつかのプラットフォームで公開されているバージョンを隠して、他のプラットフォームのバージョンで表示するように、異なる論理を設定することができます。
まず第一に、 Android Manifest.xmlファイル定義情報変数。
<application
android:icon="@mipmap/logo"
android:label="@string/app_name"
android:name=".App"
android:roundIcon="@mipmap/logo"
android:theme="@style/AppTheme.NoActionBar">
...
<meta-data
android:name="CHANNEL_NAME"
android:value="${UMENG_CHANNEL_VALUE}" />
</application>
アプリやActivityで取得できます。
ApplicationInfo applicationInfo = null;
try {
applicationInfo = getPackageManager().getApplicationInfo(getPackageName(), PackageManager.GET_META_DATA);
if (applicationInfo == null) {
return;
}
String value = 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.NameNotFoundException e) {
e.printStackTrace();
}
以上が本文の全部です。皆さんの勉強に役に立つように、私たちを応援してください。