ビルドプロセスに含ま:カスタムアクティブフレーバー固有のGradleのタスクは、Android Gradleのビルド環境パー
私は現在、地元version.propertiesからの私のバージョンコードとバージョン名を読みは「readVersions」Gradleのタスクを経由してファイル。私は自分のアプリにフレーバーを追加する過程にあります。これらのフレーバーには異なるバージョンが必要です。だから私はフレーバー特有の "res"と "src"ディレクトリの隣に2つの異なるversion.propertiesファイルをフレーバー特有のディレクトリ(例えば1つ/ version.properties、2つ/ version.properties)の中に入れることを考えていました。
私はreadVersionsタスクを持っている:
task readVersions() {
def Properties versionProps = new Properties()
def versionPropsFile = file('version.properties')
if (versionPropsFile.exists())
versionProps.load(new FileInputStream(versionPropsFile))
def v_code = (versionProps['VERSION_CODE'] ?: "0").toInteger()
def v_name = versionProps['VERSION_NAME']
// Set
versionCode v_code
versionName v_name
}
project.afterEvaluate {
preBuild.dependsOn readVersions
}
私は「味」内「version.properties」ファイルにアクセスするには、それを使用できるように、私は味を組み込んだ新しいreadVersionsタスクを持っていると思いますディレクトリ。
android.productFlavors.all{ flavor ->
task ("${flavor.name}_readVersions")<<{
def versionPropsFile = file(flavor.name+'/version.properties')
...
をしかし、私は、「事前に作成」ステップの間に実行するようにだけアクティブな味のタスクを取得する方法がわからない:
私が試してみました。再編と単純解決策を見つけることをお勧め方へ
project.afterEvaluate {
preBuild.dependsOn ${active_flavor}_readVersions
}
:
は、概念的には私がこれをしたいです。私のビルドプロセスは現在、これらのversion.propertiesファイルに依存しています。私 はだけ(例えば「味」の内側だけでなく、味のversion.propertiesファイル内の、しかし私は本当にはDRYのconfigsをしたい )2つの場所でバージョンコードとバージョン名を定義
「アクティブフレーバー」はありません。あなたの 'build.gradle'ファイルはあなたのアプリをビルドしません。あなたの 'build.gradle'ファイルはあなたのアプリを構築するための* how *のオブジェクトモデルを構築します。オブジェクトモデルを構築します。適切なフレーバー特有のタスクが独自のフレーバー特有のタスクに依存する場合、両方のフレーバーのために 'dependsOn'が必要です。 – CommonsWare
はい、私はこれを理解しています。それが私の「概念的」記述子の中でその部分を強調しようとした理由です。私がしようとしていることを理解していますか?私がしようとしていることを達成するオブジェクトモデルを構築する方法を知っていますか?もしそうでなければ私の目標をさらに定義しようとすることができます。 – FishStix
私はフレーバーのカスタム "dependsOn"を作成することを躊躇しています。適切なフレーバー固有のタスクは、独自のフレーバー固有のタスクに依存します。私が10種類か20種類のフレーバーで終わるとどうなりますか?私は$ {flavor.name} /version.propertiesファイルからローカルのversionCode/Nameを取得したいだけです。これを達成するには20のカスタムタスクが本当に必要ですか? – FishStix