Use versionName & versionCode from AndroidManifest.xml in gradle
Published by shakalaca on July 9th, 2014
與別人合作的 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 找不到。