问题描述
我试图在 build.gradle
中自动增加versionCode。但它不起作用。然后我试着简单地覆盖versionCode,例如 versionCode 20
,但仍未更新。检查原始 AndroidManifest.xml
并打包在apk中。
完整 build.gradle
:
import java.util.regex.Pattern
buildscript {
repositories {
mavenCentral()
}
依赖项{
classpath'com.android.tools.build:gradle:0.5+'
}
}
储存库{
mavenCentral()
mavenLocal()
maven {
urlhttp://mente.github.io/facebook-api-android-aar
}
}
应用插件:'android'
dependencies {
//由android gradle插件提供
编译'com.android.support:support-v4:+'
编译'com.google.android.gms:play-services:3. +'
compile'com.facebook:facebook-android-sdk:3.0.2@aar'
compile'org .codehaus.jackson:jackson-mapper-asl:1. +'
compile'org.twitter4j:twitter4j-core:3. +'
编译fileTree(dir:'libs',包括:'* .jar')
}
def get VersionCode(){
printlnHello getVersionCode
def manifestFile = file(AndroidManifest.xml)
def pattern = Pattern.compile(versionCode = \(\\ d $)
def manifestText = manifestFile.getText()
def matcher = pattern.matcher(manifestText)
matcher.find()
def version = ++ Integer.parseInt(matcher.group(1))
println sprintf(返回版本%d,版本)
返回版本
}
android {
defaultConfig {
versionCode getVersionCode()
}
signingConfigs {
release {
...
}
}
sourceSets {
main {
manifest.srcFile'AndroidManifest.xml'
res.srcDirs = ['res']
assets.srcDirs = ['assets']
}
}
buildTypes {
release {
signingConfig signingConfigs.release
}
}
buildToolsVersion17.0
compileSdkVersion 17
}
任务包装器(类型:包装器){
gradleVersion ='1.6'
}
另外我的getVersionCode函数的调试行不会打印出来。看起来像 defaultConfig
部分被忽略。我知道这里有关于SO的。但仍然想知道为什么内置 android.defaultConfig.versionCode
不起作用?
def getVersionCodeFromFileAndIncrement(){
printlnHello getVersionCodeFromFileAndIncrement
def manifestFile = file(AndroidManifest.xml)
def pattern = Pattern.compile(versionCode = \(\\d +)\)
def manifestText = manifestFile.getText()
def matcher = pattern.matcher(manifestText)
matcher.find()
def version = ++ Integer.parseInt(matcher.group( 1))
println sprintf(返回版本%d,版本)
返回$ version
}
I'm trying to auto increment versionCode in my build.gradle
. But it doesn't work. Then I've tried to simply overwrite versionCode, e.g. versionCode 20
and still it's not updated. Checked both original AndroidManifest.xml
and packaged in apk.
Full build.gradle
:
import java.util.regex.Pattern
buildscript {
repositories {
mavenCentral()
}
dependencies {
classpath 'com.android.tools.build:gradle:0.5+'
}
}
repositories {
mavenCentral()
mavenLocal()
maven {
url "http://mente.github.io/facebook-api-android-aar"
}
}
apply plugin: 'android'
dependencies {
//provided by android gradle plugin
compile 'com.android.support:support-v4:+'
compile 'com.google.android.gms:play-services:3.+'
compile 'com.facebook:facebook-android-sdk:3.0.2@aar'
compile 'org.codehaus.jackson:jackson-mapper-asl:1.+'
compile 'org.twitter4j:twitter4j-core:3.+'
compile fileTree(dir: 'libs', include: '*.jar')
}
def getVersionCode() {
println "Hello getVersionCode"
def manifestFile = file("AndroidManifest.xml")
def pattern = Pattern.compile("versionCode=\"(\\d+)\"")
def manifestText = manifestFile.getText()
def matcher = pattern.matcher(manifestText)
matcher.find()
def version = ++Integer.parseInt(matcher.group(1))
println sprintf("Returning version %d", version)
return version
}
android {
defaultConfig {
versionCode getVersionCode()
}
signingConfigs {
release {
...
}
}
sourceSets {
main {
manifest.srcFile 'AndroidManifest.xml'
res.srcDirs = ['res']
assets.srcDirs = ['assets']
}
}
buildTypes {
release {
signingConfig signingConfigs.release
}
}
buildToolsVersion "17.0"
compileSdkVersion 17
}
task wrapper(type: Wrapper) {
gradleVersion = '1.6'
}
Also my debug lines from getVersionCode function are not printed out. Looks like defaultConfig
section is ignored. I know there's working example here on SO. But still wondering why built-in android.defaultConfig.versionCode
doesn't work?
Try changing your function name to something else other than getVersionCode(). I ran into the same problem and changed my function name to something else and it worked
def getVersionCodeFromFileAndIncrement() {
println "Hello getVersionCodeFromFileAndIncrement"
def manifestFile = file("AndroidManifest.xml")
def pattern = Pattern.compile("versionCode=\"(\\d+)\"")
def manifestText = manifestFile.getText()
def matcher = pattern.matcher(manifestText)
matcher.find()
def version = ++Integer.parseInt(matcher.group(1))
println sprintf("Returning version %d", version)
return "$version"
}
这篇关于使用Android Gradle更改versionCode的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!