首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >找不到Gradle DSL方法:“versionCode()”

找不到Gradle DSL方法:“versionCode()”
EN

Stack Overflow用户
提问于 2019-04-19 00:01:56
回答 1查看 2.1K关注 0票数 1

在构建我的Android项目时遇到问题。我在gradle中使用Grgit填充versionCodeversionName。一切都很好,直到我将Android Studio和gradle工具更新到更新版本(build 3.4.0和发行版5.1.1)。

./gradlew build失败并显示错误:

代码语言:javascript
复制
* What went wrong:
A problem occurred evaluating project ':app'.
> Could not find method versionCode() for arguments [1555447320] on ProductFlavor_Decorated{name=dev, dimension=null, minSdkVersion=null, targetSdkVersion=null, renderscriptTargetApi=null, renderscriptSupportModeEnabled=null, renderscriptSupportModeBlasEnabled=null
, renderscriptNdkModeEnabled=null, versionCode=null, versionName=null, applicationId=null, testApplicationId=null, testInstrumentationRunner=null, testInstrumentationRunnerArguments={}, testHandleProfiling=null, testFunctionalTest=null, signingConfig=null, resConfi
g=null, mBuildConfigFields={}, mResValues={}, mProguardFiles=[], mConsumerProguardFiles=[], mManifestPlaceholders={}, mWearAppUnbundled=null} of type com.android.build.gradle.internal.dsl.ProductFlavor.

提供外部变量的脚本(project/tools/script-git-version.gradle)

代码语言:javascript
复制
buildscript {
    repositories {
        jcenter()
    }
    dependencies {
        //previous: 'org.ajoberstar:grgit:1.5.0'
        classpath 'org.ajoberstar.grgit:grgit-gradle:3.1.1'
    }
}

import org.ajoberstar.grgit.Grgit

/**
 * git.describe()
 *
 * Find the most recent tag that is reachable from HEAD. If the tag points to the commit,
 * then only the tag is shown. Otherwise, it suffixes the tag name with the number of additional
 * commits on top of the tagged object and the abbreviated object name of the most recent commit.
 *
 * More info: https://git-scm.com/docs/git-describe
 */

ext {
    git = Grgit.open(currentDir: projectDir)
    gitVersionName = git.describe(tags: true)
    gitVersionCode = git.tag.list().size()
    gitVersionCodeTime = git.head().time
}

task printVersion() {
    println("Version Name: $gitVersionName")
    println("Version Code: $gitVersionCode")
    println("Version Code Time: $gitVersionCodeTime")
}

任务./gradlew printVersion运行良好并显示:

代码语言:javascript
复制
Version Name: v0.6.2-42-g5e33c1a
Version Code: 5
Version Code Time: 1555447320

模块build.gradle文件:

代码语言:javascript
复制
apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
apply plugin: 'kotlin-kapt'
apply plugin: 'kotlin-android-extensions'
apply plugin: 'io.fabric'
apply from: "$project.rootDir/tools/script-git-version.gradle"

// Create a variable called keystorePropertiesFile, and initialize it to your
// keystore.properties file, in the rootProject folder.
def keystorePropertiesFile = rootProject.file("$project.rootDir/tools/keystore.properties")

// Initialize a new Properties() object called keystoreProperties.
def keystoreProperties = new Properties()

// Load your keystore.properties file into the keystoreProperties object.
keystoreProperties.load(new FileInputStream(keystorePropertiesFile))

android {
    compileSdkVersion 28
    buildToolsVersion '28.0.3'

    defaultConfig {
        applicationId "com.itti.sample"
        minSdkVersion 21
        targetSdkVersion 28
        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
    }

    ..

    flavorDimensions "build"
    productFlavors {
        dev {
            versionCode gitVersionCodeTime
            versionName gitVersionName
            dimension "build"
            applicationIdSuffix ".dev"
        }

        prod {
            versionCode gitVersionCode
            versionName gitVersionName
            dimension "build"
        }
    }
}

..
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2019-04-19 00:32:10

版本代码使用.toInteger()解决。

代码语言:javascript
复制
productFlavors {
    dev {
        versionCode gitVersionCodeTime.toInteger()
        versionName gitVersionName
        dimension "build"
        applicationIdSuffix ".dev"
    }

    prod {
        versionCode gitVersionCode.toInteger()
        versionName gitVersionName
        dimension "build"
    }
}
票数 7
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/55749856

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档