
我昨天晚上有一个小需要就是:
每次调试运行一个 Xposed 模块时 想在 log 中看到当前的构建版本编号。
添加一个编译版本的时间 戳应该可以满足我的需求。
虽然按 Xposed 的工作原理每次更新模块之后,都必须重启手机,模块才会被重新加载应用。
但是我还是想看到一个编译的构建版本号。
根据一般编译过程(见最下) 来看。
每次编译 时 generatDebugBuildConfig 任务都会执行。
而且添加在 BuildConfig 类中作为静态常量,使用上也很方便。
于是:
1 ). 编写一个时间戳生成函数 :
def generateBuildNumber(){ def date = new Date() def formattedDate = date.format("yyyyMMdd") def formattedSeconds = date.format("HHmmss") def formatInt = formattedDate as int; def secondsInt = formattedSeconds as int; return (formatInt + secondsInt) as int } 2 ). 在 defaultConfig DSL 容器中添加一个增加自定义 buildConfigField 的配置
buildConfigField 'int','buildNumber', "${generateBuildNumber()}" 然后 BuildConfig 类中就有了一个自定义的 buildNumber
// Fields from default config. public static final int buildNumber = 20282037; Executing tasks: [:app:assembleDebug] Configuration on demand is an incubating feature. :app:preBuild UP-TO-DATE :app:preDebugBuild UP-TO-DATE :app:checkDebugManifest :app:preReleaseBuild UP-TO-DATE :app:prepareComAndroidSupportAppcompatV72301Library UP-TO-DATE :app:prepareComAndroidSupportDesign2301Library UP-TO-DATE :app:prepareComAndroidSupportSupportV42301Library UP-TO-DATE :app:prepareDebugDependencies :app:compileDebugAidl UP-TO-DATE :app:compileDebugRenderscript UP-TO-DATE :app:generateDebugBuildConfig :app:generateDebugAssets UP-TO-DATE :app:mergeDebugAssets UP-TO-DATE :app:generateDebugResValues UP-TO-DATE :app:generateDebugResources UP-TO-DATE :app:mergeDebugResources UP-TO-DATE :app:processDebugManifest UP-TO-DATE :app:processDebugResources UP-TO-DATE :app:generateDebugSources :app:processDebugJavaRes UP-TO-DATE :app:compileDebugJavaWithJavac :app:compileDebugNdk UP-TO-DATE :app:compileDebugSources Compile Debug Sources banxi :app:preDexDebug UP-TO-DATE :app:dexDebug :app:validateDebugSigning :app:packageDebug :app:zipalignDebug :app:assembleDebug BUILD SUCCESSFUL Total time: 1.752 secs 1 hantsy 2015-10-17 15:57:39 +08:00 return (formatInt + secondsInt) as int 这个重复的概率应该很大的吧。 直接用 timestamp 就行了。也可以读取 Git 的版本号。 |