使用Android Gradle更改versionCode [英] Change versionCode using Android Gradle

查看:765
本文介绍了使用Android Gradle更改versionCode的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我试图在 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'c​​om.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 不起作用?

解决方案<尝试将你的函数名改为除getVersionCode()之外的其他东西。我遇到了同样的问题,并改变了我的函数名称,它的工作原理

  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的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆