相关疑难解决方法(0)

使用gradle额外属性自动增加VersionCode

我正在用gradle构建一个Android应用程序.到目前为止,我使用Manifest文件来增加versionCode,但是我想从外部文件中读取versionCode,并且取决于它是发布风格还是调试风格增加了versionCode.我尝试了额外的属性,但是你无法保存它们,这意味着下次我构建它时我得到了相同的版本代码.任何帮助将非常感谢!

project.ext{
    devVersionCode = 13
    releaseVersionCode = 1
}

buildscript {
    repositories {
        mavenCentral()
    }
    dependencies {
        classpath 'com.android.tools.build:gradle:0.6.+'
    }
}

apply plugin: 'android'

repositories {
    mavenCentral()
}

dependencies {
    compile project(':Cropper')
    compile "com.android.support:appcompat-v7:18.0.+"
    compile "com.android.support:support-v4:18.0.+"
    compile fileTree(dir: 'libs', include: '*.jar')
}

def getReleaseVersionCode() {
    def version = project.releaseVersionCode + 1
    project.releaseVersionCode = version
    println sprintf("Returning version %d", version)
    return version
}

def getDevVersionCode() {
    def version = project.devVersionCode + 1
    project.devVersionCode = version
    println sprintf("Returning version %d", version)
    return …
Run Code Online (Sandbox Code Playgroud)

android gradle build.gradle android-gradle-plugin

112
推荐指数
9
解决办法
8万
查看次数

Android应用中的自动增量版本代码

有没有办法在每次在Eclipse中构建Android应用程序时自动增加版本代码?

根据http://developer.android.com/guide/publishing/versioning.html,您必须手动增加版本代码AndroidManifest.xml.

我明白,你必须在每次构建之前运行一个脚本,例如解析AndroidManifest.xml文件,找到版本号,增加它并在构建本身启动之前保存文件.但是,我无法了解Eclipse如何以及是否支持在构建之前/之后运行脚本.

我发现这篇关于配置ant builder的文章,但这并不完全是关于Android的,我担心这会让Android的预定义构建步骤过多?

应该是一个常见的问题,你是如何解决的?

好吧,人们可以手动执行此操作,但是一旦忘记执行此项工作,您将获得具有相同编号的不同版本,并且整个版本控制毫无意义.

eclipse android build version

62
推荐指数
5
解决办法
3万
查看次数

如何在Build期间自动修改Manifest中的versionName?

到目前为止,我一直专注于我的应用程序的编程,并且很少关注使构建过程更加智能.因此,我一直在手工操作("愚蠢的方式"),包括手动更新android:versionCodeandroid:versionNameAndroidManifest.xml.

我想现在自动(即在构建或出口时):

  1. git包含构建和版本代码的最新标记/分支中获取.
  2. 解析它们,以便我可以将它们分配给AndroidManifest.xml中的相应字段.
  3. 相应地修改AndroidManifest.xml.
  4. 继续正常的构建过程(Eclipse + ADT,没有任何Ant),好像我手工完成了1-2-3 ......

我找到了一些关于" 预构建步骤",构建器和build.xml的线索,但我不知道在哪里可以找到这些以及从哪里开始.

有关该主题的更多信息的任何提示或指示?(一步一步的教程是理想的)

更新1:我发现这个帖子暗示我:

  1. 右键单击项目, Properties > Builders
  2. 添加指向项目的Ant构建文件的构建器.
  3. 订购在Java构建器之前调用的构建器

很好,但这里是该项目的蚂蚁构建文件?我在哪里找到它?

更新2:显然,可以将整个项目导出到Ant文件中.但我不确定这是我想要的.预构建步骤必须始终包含Ant构建文件吗?

更新3:正在构建一个Ant文件,仅用于预构建步骤,正确的方法吗?

eclipse android adt

25
推荐指数
1
解决办法
8182
查看次数

版本码是否有最大值?

我们总是需要增加versionCode一些任意数字才能将其发布到Google Play.
该值是否有限,如果达到该值会发生什么?

defaultConfig {
        applicationId "my.app"
        minSdkVersion 15
        targetSdkVersion 22
        versionCode 65
        versionName "1.05"
        setProperty("archivesBaseName", "myapp-$versionCode")

    }
Run Code Online (Sandbox Code Playgroud)

android gradle build.gradle android-gradle-plugin

24
推荐指数
4
解决办法
1万
查看次数

使用Gradle自动递增versionCode时出现问题

我正在尝试配置应用程序的构建变体,作为从Ant迁移到Gradle的一部分.我想出的结构如下:

main
  |-> monkey
Run Code Online (Sandbox Code Playgroud)

我想要一种自动递增 "猴子"味道的版本代码的方法.我复制了AndroidManifest,因此它类似于下面的结构.我添加了两个版本代码和两个版本名称,我将用它来解释我面临的问题.

main
  |-> AndroidManifest.xml
        | -> versionName="mainFlavour"
        | -> versionCode=12
monkey
  |-> AndroidManifest.xml
        | -> versionName="monkeyFlavour"
        | -> versionCode=13
Run Code Online (Sandbox Code Playgroud)

第一种方法

我的第一次尝试是基于这个答案,包括定义一个解析AndroidManifest文件并增加版本代码的任务.该任务将是该任务的依赖generateBuildConfig项.

结果是每当我使用'monkey'风格构建时,读取版本代码和版本名称属性会导致此输出:

 versionName "monkeyFlavour"
 versionCode 12
Run Code Online (Sandbox Code Playgroud)

也就是说,构建版本具有'monkey'风格的版本名称,但是'main'风格的版本代码.使用PackageManagerBuildConfig读取这些值没有区别.这是我使用的代码:

// Increment version code for 'monkey' builds
task('increaseVersionCode') << {
    def manifestFile = file("src/monkey/AndroidManifest.xml")
    def pattern = Pattern.compile("versionCode=\"(\\d+)\"")
    def manifestText = manifestFile.getText()
    def matcher = pattern.matcher(manifestText)
    matcher.find()
    def versionCode = Integer.parseInt(matcher.group(1))
    def manifestContent = matcher.replaceAll("versionCode=\"" + ++versionCode + "\"") …
Run Code Online (Sandbox Code Playgroud)

android gradle android-manifest

5
推荐指数
0
解决办法
388
查看次数

仅在发行版上自动增加版本代码

目前我正在尝试通过自动递增版本代码来改进我们的编译器,因此我们的QA团队已经知道他们正在测试的构建版本并且可以记录特定的版本代码.我们有3个productFlavors(登台,qa,生产)和2个签名配置(调试,发布).

我研究了不同的解决方案:

如何在Android Gradle中自动增加versionCode

如何在Android Gradle中自动增加versionCode

使用gradle额外属性自动增加VersionCode

基于这些答案,我使用version.properties文件构建了一个版本代码增量器.

现在问题出现了,对于每个productFlavor和SigningConfig组合(+ android studio中的gradle sync),都会生成一个新的版本代码.每当我点击播放按钮创建qaRelease构建时,我希望版本代码递增.所以我们的构建周期将是:

  • 开发(永远不要更改版本代码)
  • qual(更新版本代码)
  • 制作(永远不要更改版本代码)

android gradle android-gradle-plugin

4
推荐指数
2
解决办法
2762
查看次数