热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

使用Gradle设置Android应用版本-SetAndroidappversionusingGradle

ImtryingtouseGradletosetappsname.Please,lookatthissnippetofbuild.gradle:我正在尝试使用Gra

I'm trying to use Gradle to set app's name. Please, look at this snippet of build.gradle:

我正在尝试使用Gradle来设置应用程序的名称。请看一下build.gradle的这个片段:

android {
    ...
    defaultConfig {
        ...
        versionCode getVersionCode()
        versionName getVersionName()
        ...
    }
    ...
}

...

int getVersionCode() {
    return 1
}

def getVersionName() {
    return "1.0"
}

Android Studio says

Android Studio说

   'versionCode' cannot be applied to 'java.lang.Integer'
   'versionName' cannot be applied to 'java.lang.String'

and when I install the app on a device it has no versionCode and versionName at all.

当我在设备上安装应用程序时,它根本没有versionCode和versionName。

The problem is clear to me but I don't know how to solve it.
Please advice.

问题很明显,但我不知道如何解决它。请指教。

4 个解决方案

#1


25  

EDITED

EDITED

In order to define your app version dynamically, specify a custom method with def and call it, as such:

为了动态定义您的应用版本,请使用def指定自定义方法并将其调用,如下所示:

def computeVersionName() {
    return "2.0"
}

android {
    compileSdkVersion 19
    buildToolsVersion "19.0.0"

    defaultConfig {
        versionCode 12
        versionName computeVersionName()
        minSdkVersion 16
        targetSdkVersion 16
    }
}

See here for more.

请看这里了解更多。

Make sure not to use function names that could conflict with existing getters in the given scope. For instance, defaultConfig { ... } calling getVersionName() will automatically use the getter defaultConfig.getVersionName() instead of the custom method.

确保不要使用可能与给定范围内的现有getter冲突的函数名称。例如,defaultConfig {...}调用getVersionName()将自动使用getter defaultConfig.getVersionName()而不是自定义方法。

#2


46  

It doesn't resolve your issue, but it can be a different solution.

它不能解决您的问题,但它可能是一个不同的解决方案。

You can use gradle.properties inside your root project and define:

您可以在根项目中使用gradle.properties并定义:

VERSION_NAME=1.2.1
VERSION_CODE=26

Then in your build.gradle you can use:

然后在build.gradle中,您可以使用:

versionName project.VERSION_NAME
versionCode Integer.parseInt(project.VERSION_CODE)

#3


10  

Here is a build.gradle that I am using based on ideas from JakeWharton :

这是我根据JakeWharton的想法使用的build.gradle:

apply plugin: 'com.android.application'
def versiOnMajor= 1
def versiOnMinor= 2
def versiOnPatch= 0

def gitVersion() {
    def counter = 0
    def process = "git rev-list master --first-parent --count".execute()
    return process.text.toInteger()
}

repositories {
    mavenCentral()
}

android {
    compileSdkVersion 19
    buildToolsVersion '19.1.0'


    defaultConfig {
        applicationId 'my.project.com'
        minSdkVersion 14
        targetSdkVersion 19
        versionCode gitVersion()
        versionName "${versionMajor}.${versionMinor}.${versionPatch}"
    }
    ....
}

#4


0  

If you use a gradle.properties file to store shared build versions, make sur to use the toInteger() function for the version code, compiled/min and target sd versions.

如果使用gradle.properties文件来存储共享构建版本,请使用toInteger()函数来获取版本代码,编译/分钟和目标sd版本。

See this post for more information: https://medium.com/@ali.muzaffar/gradle-configure-variables-for-all-android-project-modules-in-one-place-5a6e56cd384e#.yl1x0ziqe

有关更多信息,请参阅此帖子:https://medium.com/@ali.muzaffar/gradle-configure-variables-for-all-android-project-modules-in-one-place-5a6e56cd384e#.yl1x0ziqe


推荐阅读
author-avatar
有心人php
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有