Androidマルチチャンネルを包装する時、現在のチャンネルを取得する方法


Androidアプリとして、複数の配信プラットフォームをリリースするのが一般的です。その後、チャネルが直面するユーザーが違ったり、プラットフォームの審査基準が違ったりするため、各チャネルで異なる業務ロジックを使用する必要があります。これはチャネルによって異なるコードを選択する必要があります。
ここで簡単なコードをメモしてください。
まず、チャンネル別に包装するのは簡単です。
プロジェクトの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();
    }

以上が本文の全部です。皆さんの勉強に役に立つように、私たちを応援してください。