如何解决Flutter错误:找不到方法versionName()

问题描述 投票:0回答:3

实际上,当我尝试运行适用于 Android 的 Flutter 构建时,我遇到了一个非常奇怪的错误。 首先我想向你展示这个错误。之后,我向您展示

Flutter doctor
结果和我的项目的具体代码部分。

使用

flutter run

运行android项目后出错
  • 出了什么问题:评估项目“:app”时出现问题。

在 DefaultConfig_Decolated{name=main,dimension=null, 上找不到参数 [1.0.0, null] 的方法 versionName() minSdkVersion=DefaultApiVersion{mApiLevel=18, mCodename='null'}, targetSdkVersion=DefaultApiVersion{mApiLevel=28, mCodename='null'}, renderscriptTargetApi=null, renderscriptSupportModeEnabled=null, renderscriptSupportModeBlasEnabled=null, renderscriptNdkModeEnabled=null,versionCode=8,versionName=null, applicationId=de.danielederosa.virtualguestbook, testApplicationId=null,testInstrumentationRunner=null, testInstrumentationRunnerArguments={},testHandleProfiling=null, testFunctionalTest=null,signingConfig=null,resConfig=null, mBuildConfigFields={}, mResValues={}, mProguardFiles=[], mConsumerProguardFiles=[], mManifestPlaceholders={}, mWearAppUnbundled=null} 类型 com.android.build.gradle.internal.dsl.DefaultConfig。

  • 尝试:使用 --stacktrace 选项运行以获取堆栈跟踪。使用 --info 或 --debug 选项运行以获得更多日志输出。使用 --scan 运行以获得完整的见解。

  • https://help.gradle.org

    获取更多帮助

在 6 秒内构建失败异常:Gradle 任务 assembleDebug 失败,并显示 退出代码 1 退出 (sigterm)

build.gradle

buildscript {
    ext.kotlin_version = '1.3.50'
    repositories {
        google()
        jcenter()
    }

    dependencies {
        classpath 'com.android.tools.build:gradle:3.6.2'
        classpath 'com.google.gms:google-services:4.3.4'
        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
    }
}

gradle.wrapper.properties

distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
zipStoreBase=GRADLE_USER_HOME
zipStorePath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-5.6.4-all.zip

pubspec.yaml

version: 1.0.0+8

有趣的是,它显示

versionName=null
,如果我像这样覆盖变量:

defaultConfig {
        // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html).
        applicationId "de.danielederosa.virtualguestbook"
        minSdkVersion 18
        targetSdkVersion 28
        versionCode flutterVersionCode.toInteger()
        versionName '1.0.0',
        multiDexEnabled true
    }

您知道可能出现什么问题吗?也许与 gradle 版本有些不兼容?

android flutter gradle
3个回答
1
投票

我认为您在“versionName '1.0.0'”行上犯了一个错误, 有一个不应该出现的逗号。 将行更改为

versionName '1.0.0'
我希望我有所帮助。


0
投票

将其设为默认设置,看看它是否有效:

这是我默认的flutter build.gradle(应用程序)

def flutterVersionName = localProperties.getProperty('flutter.versionName')
if (flutterVersionName == null) {
    flutterVersionName = '1.0'
}

defaultConfig {
        // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html).
        applicationId "com.teddichiiwa.example"
        minSdkVersion 16
        targetSdkVersion 28
        versionCode flutterVersionCode.toInteger()
        versionName flutterVersionName
    }

0
投票

我找到了解决方案,我不知道我是怎么做到的,但这可能对我有帮助,如果其他解决方案请通知我,

将其添加到您的 app/build.gradle 文件中

  versionCode flutterVersionCode.toInteger()
  versionName flutterVersionName
  compileSdkPreview = "UpsideDownCake"

也更新你的这个

def keystoreProperties = new Properties()
def keystorePropertiesFile = rootProject.file('key.properties')
if (keystorePropertiesFile.exists()) {
keystoreProperties.load(new FileInputStream(keystorePropertiesFile))
}

def localProperties = new Properties() 
def localPropertiesFile = rootProject.file('local.properties')
if (localPropertiesFile.exists()) {
localProperties.load(new FileInputStream(localPropertiesFile))
}

def flutterVersionName =localProperties.getProperty('flutter.versionName')
if (flutterVersionName == null) {
flutterVersionName = '1.0.1'
}

def flutterVersionCode =localProperties.getProperty('flutter.versionCode')
if (flutterVersionCode == null) {
flutterVersionCode = '7'
}

我还将 local.properties 更新为此

sdk.dir=/Users/cleaques_sys1/Library/Android/sdk
flutter.sdk=/Users/cleaques_sys1/flutter
flutter.buildMode=release
flutter.flutterVersionName=1.0.1
flutter.versionCode=7
flutter.flutterVersionCode=7
flutter.versionName=1.0.1
© www.soinside.com 2019 - 2024. All rights reserved.