I.はじめに
国内のAndroidアプリケーションの流通市場の状況は、我々はAPPを公開するとき、一般に、複数のチャンネルのパッケージを生成する必要があるため、異なるアプリケーション市場にアップロード。これらのチャネルは、パッケージが異なる情報源、またはAPPの相互作用や背景データのレポートが含まれている必要が、それはそれぞれの情報チャネルをもたらすでしょう。このように、我々は、各流通市場のためのダウンロード数、ユーザー数のキーの統計データにできるようになります。
二、Gradleのマルチチャンネルパッケージ
1、一般的な練習
一般的な慣行の下でAndroidManifest
チャンネル数の増加:
<meta-data android:name="SDK_CHANNEL" android:value="Channel ID" />
手動で設定を変更し、再度梱包するには。このように、反復的な作業負荷が大幅に増加しました。だから、AndroidStudio上のマルチチャンネルパッケージが存在します。
2、Gradleのマルチチャンネルパッケージ
この場合は、アンドロイドのGradleは、私たちは、ファイルAndroidManifestの内容を交換するために非常に便利な方法を提供し、彼はあるmanifestPlaceholder
、Manifest
プレースホルダ。
ManifestPlaceholders
これは、あるProductFlavor
プロパティのタイプが地図であるので、我々は、同時に多くのプレースホルダを設定することができます。ここでは、この構成例のチャンネル番号でmanifestPlaceholdersの使用を立証しなければなりません。
では、追加のタグに次のコード:build.gradle
android
android {
...
productFlavors{
google{
manifestPlaceholders = [
SDKChannel: "google",
app_name : "@string/app_name",
]
}
baidu{
manifestPlaceholders = [
SDKChannel: "baidu",
app_name : "@string/app_name",
]
}
}
}
ではAndroidManifest.xml
、次のようにファイルのコードは次のとおりです。
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
package="com.sdk">
<application ...
android:label="${app_name}">
<meta-data
android:name="SDKChannel"
android:value="${SDKChannel}" />
...
</application>
</manifest>
次に、我々は、パックの効果を見てみましょう。
チャンネル番号は、その後、アプリケーションの多くは、我々はそれを一つずつ設定することができない場合は、あまりにも疲れて、メンテナンスが面倒で、我々はまた、反復productFlavors量によって変更することができます。
android {
...
productFlavors{
google{
}
baidu{
}
}
productFlavors.all { flavor ->
flavor.manifestPlaceholders = [SDKChannel: name, app_name : "@string/app_name"]
}
}
私たちは、その後、チャンネル名として自分の名前を入れ、各ProductFlavorの機能すべてを反復処理、非常に便利です。ここであなただけのProductFlavorを横断するとき、あなたはあなたの多くを行うことができ、この一つのことを行うやりたいことができない、これはGradleの柔軟性、プログラム書き込みスクリプトの場所です。
アンドロイドのGradleので、我々は、任意のファイルAndroidManifest $ {ヴァール}プレースホルダの書式を置き換えることができ、アプリケーションモードmanifestPlaceholdersプレースホルダを提供します。彼の名前の使用シナリオは、例えば、この1つのチャンネル、だけでなく、認証のContentProviderの承認、または他の動的構成メタ情報に限定されるものではないので。たくさんのことを行うために私たちを助けることができるそれを柔軟に使用することは、私たちはより柔軟かつ便利に作成してみましょう。