Android Gradle ビルド環境ごと:
現在、「readVersions」gradle タスクを使用して、ローカルの version.properties ファイルからバージョン コードとバージョン名を読み取っています。アプリにフレーバーを追加中です。これらのフレーバーには異なるバージョンが必要です。そこで、フレーバー固有の "res" および "src" ディレクトリの隣にあるフレーバー固有のディレクトリ (例: one/version.properties、two/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
}
「flavor」ディレクトリ内の「version.properties」ファイルにアクセスする際に使用できるように、フレーバーを組み込んだ新しい readVersions タスクが必要です。
私が試してみました:
android.productFlavors.all{ flavor ->
task ("${flavor.name}_readVersions")<<{
def versionPropsFile = file(flavor.name+'/version.properties')
...
しかし、「preBuild」ステップでアクティブなフレーバーのタスク のみを実行する方法がわかりません。
概念的に私はこれが欲しい:
project.afterEvaluate {
preBuild.dependsOn ${active_flavor}_readVersions
}
再編成してより簡単な解決策を見つけることをお勧めする人へ。現在、私のビルド プロセスには、これらの version.properties ファイルに対する他の依存関係があります。バージョン コードとバージョン名を 2 つの場所で定義することもできます (たとえば、「フレーバー」内とフレーバーの version.properties ファイル内ですが、DRY 構成が本当に必要です)。