Gradle に慣れていない人 (私のように) のために、下部に私のモジュールの完全な build.gradle スクリプトがあるので、ツールがどこにどのように統合されているかを確認できます。Exec コマンドは、build.grade ファイルと同じフォルダーで exe を実行するため、ツールとソースへの相対パスを使用します。
これは、モジュールの BuildNum を含むモジュール内のソース ファイルである VersionUtils.java です。
package ca.mmist;
public class VersionUtils
{
public static final int nSkyUtilsCRC = 1078887142;
public static final int nSkyUtilsBuild = 228;
}
私が本当に望んでいたのは、ビルドが必要な依存関係が変更された場合にのみ BuildNum が増加するようにすることでした。そのため、BuildNum.exe を変更して VersionUtils.java 内の「src」フォルダーを見つけ、各サブフォルダーを再帰的にスキャンして.java を探します。.xml; .jar; .lib を開き、各ソース ファイルの FileWriteTime と FileSize を使用して CRC32 を生成します。そのため、BuildNo をインクリメントするために VersionUtils.java を (最初に VersionUtils.~java に) 書き直すと、CRC を比較し、それらが同じである場合は、単純に一時ファイルを破棄できます。そうしないと、ファイルを交換 (削除して名前を変更) し、新しい BuildNo でモジュールを再構築します。(1 時間でコーディングするよりも苦痛に思えます。)
いずれにせよ、今では QA は、マニフェストのバージョン タグを人間が変更することを忘れずに、出荷されたソフトウェアのビルドを正確に検証できることを嬉しく思います。
apply plugin: 'com.android.library'
android {
compileSdkVersion 16
buildToolsVersion "19.1.0"
task buildNum(type: Exec, description: 'BuildNum.exe') {
commandLine '../../../Tools/Bin/buildnum.exe', 'src/main/java/ca/mmist/VersionUtils.java'
}
tasks.withType(JavaCompile) {
compileTask -> compileTask.dependsOn buildNum
}
defaultConfig {
minSdkVersion 10
targetSdkVersion 16
}
buildTypes {
release {
minifyEnabled false
proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.txt'
}
}
}
dependencies {
compile 'com.android.support:support-v4:18.+'
compile files('libs/maplink.jar')
}