对于那些不熟悉 Gradle 的人(比如我),底部是我的模块的完整 build.gradle 脚本,因此您可以看到该工具的集成位置和方式,就像我们刚刚获得的片段一样。Exec 命令在与 build.grade 文件相同的文件夹中运行 exe,因此请使用工具和源的相对路径。
这是 VersionUtils.java,我模块中的一个源文件,其中包含模块的 BuildNum。
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;。罐; .lib 并使用每个源文件的 FileWriteTime 和 FileSize 生成 CRC32。因此,当我重新编写 VersionUtils.java(首先写入 VersionUtils.~java)以增加 BuildNo 时,我比较了 CRC,如果它们相同,我可以简单地丢弃临时文件。否则,我会交换(删除和重命名)文件,从而使用新的 BuildNo 重建我的模块。(听起来比在一个小时内编写代码更痛苦。)
无论如何,现在 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')
}