找不到Gradle DSL方法:“ versionCode()” [英] Gradle DSL method not found: 'versionCode()'
本文介绍了找不到Gradle DSL方法:“ versionCode()”的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
构建我的Android项目时遇到问题。我使用 Grgit 填充 versionCode
和 versionName
在gradle中。一切正常,直到我将Android Studio和gradle工具更新到较新的版本(版本3.4.0和发行版5.1.1)。
Have a problem build my Android project. I using Grgit to fill versionCode
and versionName
in gradle. Everything worked fine, until I updated Android Studio and gradle tools to newer version (build 3.4.0 and distribution 5.1.1).
./ gradlew build
失败并显示错误:
* 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
)
Script which provide externals (project/tools/script-git-version.gradle
)
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
运行正常并显示:
Version Name: v0.6.2-42-g5e33c1a
Version Code: 5
Version Code Time: 1555447320
模块build.gradle文件:
Module build.gradle file:
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"
}
}
}
..
推荐答案
使用 .toInteger()
作为版本代码已解决。
Solved using .toInteger()
for version code.
productFlavors {
dev {
versionCode gitVersionCodeTime.toInteger()
versionName gitVersionName
dimension "build"
applicationIdSuffix ".dev"
}
prod {
versionCode gitVersionCode.toInteger()
versionName gitVersionName
dimension "build"
}
}
这篇关于找不到Gradle DSL方法:“ versionCode()”的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文