提问者:小点点

在Flutter中实现Firebase Crashlytics-找不到参数的方法classpath()


请帮帮忙...:(

尝试在 Flutter 中实现 Firebase Crashlytics 时出现此错误:

  • 找不到参数的方法类路径()[com.google. Firebase:Firebase-crashlytics-gradle:2.0.0-beta02]

这是完整的错误消息:

Launching lib/main_ADHD.dart on HTC 10 in debug mode...

FAILURE: Build failed with an exception.

* Where:
Build file 'C:\Users\lars\OneDrive - Aalborg Universitet\Programmering\Flutter projekter\meditationsguitarapps\android\app\build.gradle' line: 48

* What went wrong:
A problem occurred evaluating project ':app'.
> Could not find method classpath() for arguments [com.google.firebase:firebase-crashlytics-gradle:2.0.0-beta02] on DefaultConfig_Decorated{name=main, dimension=null, minSdkVersion=null, targetSdkVersion=null, renderscriptTargetApi=null, renderscriptSupportModeEnabled=null, renderscriptSupportModeBlasEnabled=null, renderscriptNdkModeEnabled=null, versionCode=null, versionName=null, applicationId=dk.ADHD, testApplicationId=null, testInstrumentationRunner=null, testInstrumentationRunnerArguments={}, testHandleProfiling=null, testFunctionalTest=null, signingConfig=null, resConfig=null, mBuildConfigFields={}, mResValues={}, mProguardFiles=[], mConsumerProguardFiles=[], mManifestPlaceholders={}, mWearAppUnbundled=null} of type com.android.build.gradle.internal.dsl.DefaultConfig.

* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output. Run with --scan to get full insights.

* Get more help at https://help.gradle.org

BUILD FAILED in 4s
Running Gradle task 'assembleDebug'...
Running Gradle task 'assembleDebug'... Done                         8,7s
Exception: Gradle task assembleDebug failed with exit code 1

这是我的Android/app/build.gradle:

def localProperties = new Properties()
def localPropertiesFile = rootProject.file('local.properties')
if (localPropertiesFile.exists()) {
    localPropertiesFile.withReader('UTF-8') { reader ->
        localProperties.load(reader)
    }
}

def flutterRoot = localProperties.getProperty('flutter.sdk')
if (flutterRoot == null) {
    throw new GradleException("Flutter SDK not found. Define location with flutter.sdk in the local.properties file.")
}

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

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

apply plugin: 'com.android.application'
apply plugin: 'kotlin-android'
apply from: "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle"

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

android {
    compileSdkVersion 28

    sourceSets {
        main.java.srcDirs += 'src/main/kotlin'
    }

    lintOptions {
        disable 'InvalidPackage'
    }

    defaultConfig {
        // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html).
        applicationId "dk.ADHD"
        classpath 'com.google.firebase:firebase-crashlytics-gradle:2.0.0-beta02'

        minSdkVersion 16
        targetSdkVersion 28
        versionCode flutterVersionCode.toInteger()
        versionName flutterVersionName
        testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
    }

    signingConfigs {
        release {
            keyAlias keystoreProperties['keyAlias']
            keyPassword keystoreProperties['keyPassword']
            storeFile file(keystoreProperties['storeFile'])
            storePassword keystoreProperties['storePassword']
        }
    }
    buildTypes {
        release {
            signingConfig signingConfigs.release
            /* Add the firebaseCrashlytics extension (by default,
            * it's disabled to improve build speeds) and set
            * nativeSymbolUploadEnabled to true. */
            firebaseCrashlytics {
                nativeSymbolUploadEnabled true
            }
        }
    }
}

flutter {
    source '../..'
}

dependencies {
    implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
    testImplementation 'junit:junit:4.12'
    androidTestImplementation 'androidx.test:runner:1.2.0'
    androidTestImplementation 'androidx.test.espresso:espresso-core:3.2.0'
    implementation 'com.google.firebase:firebase-crashlytics:17.1.1'


}

apply plugin: 'com.google.gms.google-services'
apply plugin: 'com.google.firebase.crashlytics'

这是我的Android/build.gradle:

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

    dependencies {
        classpath 'com.android.tools.build:gradle:3.5.3'
        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
        classpath 'com.google.gms:google-services:4.3.3'   // new
        classpath 'com.google.firebase:firebase-crashlytics-gradle:2.2.0'



    }
}

allprojects {
    repositories {
        google()
        jcenter()
    }

}

rootProject.buildDir = '../build'
subprojects {
    project.buildDir = "${rootProject.buildDir}/${project.name}"
}
subprojects {
    project.evaluationDependsOn(':app')
}

task clean(type: Delete) {
    delete rootProject.buildDir
}

这是我的pubspec.yaml:

name: meditationsguitar
description: A new Flutter project.

# The following defines the version and build number for your application.
# A version number is three numbers separated by dots, like 1.2.43
# followed by an optional build number separated by a +.
# Both the version and the builder number may be overridden in flutter
# build by specifying --build-name and --build-number, respectively.
# In Android, build-name is used as versionName while build-number used as versionCode.
# Read more about Android versioning at https://developer.android.com/studio/publish/versioning
# In iOS, build-name is used as CFBundleShortVersionString while build-number used as CFBundleVersion.
# Read more about iOS versioning at
# https://developer.apple.com/library/archive/documentation/General/Reference/InfoPlistKeyReference/Articles/CoreFoundationKeys.html

version: 1.0.0+34

environment:
  sdk: ">=2.1.0 <3.0.0"

dependencies:
  flutter:
    sdk: flutter
  in_app_purchase: 0.2.2+4
  audioplayers: ^0.12.1
  url_launcher: ^5.4.1
  share: 0.6.3+5
  firebase_core: ^0.4.0+9
  firebase_analytics: ^5.0.10
  shared_preferences: ^0.5.4+6
  firebase_crashlytics: ^0.1.3




  # The following adds the Cupertino Icons font to your application.
  # Use with the CupertinoIcons class for iOS style icons.
  cupertino_icons: ^0.1.2

dev_dependencies:
  flutter_test:
    sdk: flutter
  basic_utils: ^1.8.1
  flutter_launcher_icons: "^0.7.3"
  url_launcher: ^5.1.3
  auto_size_text: ^2.1.0



flutter_icons:
#  android: "launcher_icon"
  android: true
  ios: true
  #image_path: "assets/images/meditationForBoern/icon/icon.jpg"
  #image_path: "assets/images/mindfulEating/icon/icon.png"
  image_path: "assets/images/ADHD/icon/icon.jpg"



# For information on the generic Dart part of this file, see the
# following page: https://dart.dev/tools/pub/pubspec

# The following section is specific to Flutter.
flutter:

  # The following line ensures that the Material Icons font is
  # included with your application, so that you can use the icons in
  # the material Icons class.
  uses-material-design: true

  # To add assets to your application, add an assets section, like this:
  assets:
   # - assets/images/meditationForBoern/
   # - assets/audio/meditationForBoern/
   # - assets/images/mindfulEating/
   # - assets/audio/mindfulEating/
    - assets/images/ADHD/
    - assets/audio/ADHD/



  # An image asset can refer to one or more resolution-specific "variants", see
  # https://flutter.dev/assets-and-images/#resolution-aware.

  # For details regarding adding assets from package dependencies, see
  # https://flutter.dev/assets-and-images/#from-packages

  # To add custom fonts to your application, add a fonts section here,
  # in this "flutter" section. Each entry in this list should have a
  # "family" key with the font family name, and a "fonts" key with a
  # list giving the asset and other descriptors for the font. For
  # example:
fonts:
  - family: Roboto
    fonts:
      - asset: fonts/Roboto-Black.ttf
        weight: 900

  #       - asset: fonts/TrajanPro_Bold.ttf
  #         weight: 700
  #
  # For details regarding fonts from package dependencies,
  # see https://flutter.dev/custom-fonts/#from-packages

我该如何解决这个问题?


共2个答案

匿名用户

看起来您无意中为android应用程序添加了Firebase构建脚本。然而,既然这是Flutter,你就不需要它们了。您需要添加的任何内容都可以在firebase_crashlytics的官方pub.dev文档中找到。按照下面列出的步骤以及pub.dev上的内容,您的问题应该得到解决。

删除 android/build.gradle 中的行

classpath 'com.google.firebase:firebase-crashlytics-gradle:2.2.0'

删除 android/app/build.gradle 中的行

apply plugin: 'com.google.firebase.crashlytics'
implementation 'com.google.firebase:firebase-crashlytics:17.1.1'
firebaseCrashlytics {
    nativeSymbolUploadEnabled true
}
classpath 'com.google.firebase:firebase-crashlytics-gradle:2.0.0-beta02'

匿名用户

classpath 'com.google.firebase:firebase-crashlytics-gradle:2.0.0-beta02'

如果您不需要此行,请将其从android/app/build. gradle中删除或以其他方式将其从那里删除并将其添加到android/build.gradle

类路径未添加到android/app/build. gradle中,也未添加到defaultConfig中。它被添加到依赖项中。