2015/08/27
Android Studio でコンパイルの前処理
Android Studio の gradle でコンパイル前に処理を入れる方法を調べたメモ。
- 環境:Android studio 1.3
build.gradle の拡張については意外に情報が少ないです。
公式の資料は以下です。
翻訳は有志の方がされていますが内容はすこし古いです。
やりたいことは アプリバージョン と GitのコミットID を asstes のファイルに埋め込む事です。
src/main/assets/about-template.html:
Version:@VERSION@ (Commit:@COMMIT_ID@)
↓
src/main/assets/about.html:
Version:1.0.0 (Commit:cc2e3ac008092db2cd46b80336921471e6716af4)
結論としては app/build.gradle に以下を追加することでできました。
import org.apache.tools.ant.filters.ReplaceTokens
def getCommitId() {
try {
def stdout = new ByteArrayOutputStream()
exec {
commandLine 'git', 'rev-list', 'master', '--max-count', '1'
standardOutput = stdout
}
return stdout.toString().trim();
}
catch (Exception e) {
println e.toString();
return "";
}
}
task makeAboutHtml {
copy {
from 'src/main/assets/about-template.html'
into 'src/main/assets/'
rename(/-template.html$/,".html");
filter(ReplaceTokens, tokens: [
VERSION: android.defaultConfig.versionName,
COMMIT_ID: getCommitId()
])
}
}
android.applicationVariants.all { variant ->
variant.mergeAssets.dependsOn('makeAboutHtml')
}
補足:
- git.exe に実行環境でパスが通っている必要があります。
- applicationVariants はエディタに Cannot resolve symbol と言われますが無視して問題ありません。
- これでだいぶ悩みました。
- 本当は build/ に直接コピーしたいのですがまだそこまでやり方がわかりません。
この投稿へのコメント

コメント・フォーム