これは私には何も新しいことではありません。GoogleがAndroidスタジオバージョン2.2.2用のGradleプラグインをリリースする前にこれを数ヶ月間行っており、ファイルルックアップ機能が壊れています。Android Gradle Build - アセットディレクトリのプロパティファイルに環境変数を挿入する方法は?
ユースケース:
が、私はAndroidのスタジオ内だけでなく、ジェンキンスからGradleのビルドを実行しています。私はいくつかのビルド情報をビルドに渡す必要があり、それをコードで使用したいと考えています。これらの値には、システム情報、ビルドバリアント、ビルド日付、関連ビルドフレーバのIPアドレスが含まれます。私は2.1.3
android.applicationVariants.all { variant ->
variant.mergeResources.doLast {
File propsFile = file("${buildDir}/intermediates/assets/${variant.dirName}/config.properties")
println("Filtering resource file: " + propsFile)
String content = propsFile.getText('UTF-8')
println("File contents: " + content)
content = content.replaceAll(/@[email protected]/, buildDate)
.replaceAll(/@[email protected]/, buildMode)
.replaceAll(/@[email protected]/, serverUrl)
propsFile.write(content, 'UTF-8')
}
}
からGradleの2.2.2に切り替える前に
は、上記のコードはintermediate/assets/${variant.dirName}
パスでconfig.propertiesファイルのために検索します。ファイルは、@ .. @でマークされたトークンをreplaceAllメソッドに渡された変数に置き換えるために処理されます。
今私の問題は、次のとおりです。
コードが新しいのGradleプラグインのバージョン2.2.2で動作するようになっていました。しかし、私は新しいビルドが中間ディレクトリ内のアセットフォルダを生成しないので、上記のコードは、ファイルを検索するために失敗し、次のエラーをスローすることが観察さ:
Execution failed for task ':app:mergeDebugResources'.
> /home/pawan/git/MyApplication/app/build/intermediates/assets/debug/config.properties (No such file or directory)
新しいバージョンが方法を変えたことは明らかですビルド操作が機能します。今質問は、どうすればこの点から進めばいいのですか?どのように目的の機能を達成するには?回避策または修正プログラム
をあなたはキャッシュを無効にしようとしたことがあり、再起動して、プロジェクトを再構築しますか? –
@ArsenSenchはい、ありました。これは効果がありません。 – Pawan