Use versionName & versionCode from AndroidManifest.xml in gradle

與別人合作的 project 因為對方用的是 Eclipse (其實是只有我用 Android Studio),版本的設定會習慣放在 AndroidManifest.xml 裡面,但這麼一來如果 gradle 運行中需要使用到 versionName 或者 versionCode,就得額外設定並且注意是否與 AndroidManifest.xml 同步。這麼做除了讓專案的維護更麻煩以外,還得注意不同步的問題。
最早都是透過複雜的 script 分析 AndroidManifest.xml 把設定值取出,後來發現有個很好用的工具:com.android.builder.core.DefaultManifestParser。
在你的 build.gradle 中最前面先

import com.android.builder.core.DefaultManifestParser

接著在 defaultConfig 裡面設定:
````
defaultConfig {
def manifestParser = new DefaultManifestParser()
versionName = manifestParser.getVersionName(android.sourceSets.main.manifest.srcFile)
versionCode = manifestParser.getVersionCode(android.sourceSets.main.manifest.srcFile)
}

```
That’s it ! 唯一要注意的是,sourceSets 的設定要放在 defaultConfig 之前,否則 gradle 會跟你抱怨 manifest 找不到。


comments powered by Disqus