gradle 找不到符号BuildConfig FlutterFirebaseCoreRegistrar

bt1cpqcv  于 4个月前  发布在  Flutter
关注(0)|答案(3)|浏览(92)

我更新了一个2岁的Flutter项目,并在调试得到以下错误。我需要帮助,因为没有谷歌和SO的条目帮助。我试图修复错误超过一个星期。
错误:
正在调试模式下在sdk gphone x86上启动lib/main.dart./Users/michael/.pub-cache/hosted/pub.dev/firebase_core-2.24.2/android/src/main/java/io/flutter/plugins/firebase/core/FlutterFirebaseCoreRegistrar.java:19:error:无法找到符号LibraryVersionComponent.create(BuildConfig.LIBRARY_NAME,BuildConfig.LIBRARY_VERSION)); ^符号:变量BuildConfig位置:类FlutterFirebaseCoreRegistrar
我猜我的错误的原因是与使用的Java-Versions有关。但我不知道在哪里优化。当我在android studio中打开项目结构时,我可以看到为firebase_core等生成的build. gradle文件提到Java-Version_1_8(Java 8)作为compileoptions。但如果我将它们更改为Java_17,则行为没有变化。我仍然得到错误“cannot find symbol”。
我尝试了Gradle 7.5和Gradle 8。两者都显示了上述错误。
可以运行另一个新创建的flutter项目。
我的Flutter医生

[✓] Flutter (Channel stable, 3.16.1, on macOS 14.1.1 23B81 darwin-x64, locale de-DE)
[✓] Android toolchain - develop for Android devices (Android SDK version 34.0.0)
[✓] Xcode - develop for iOS and macOS (Xcode 15.0.1)
[✓] Chrome - develop for the web
[✓] Android Studio (version 2022.3)
[✓] VS Code (version 1.84.2)
[✓] VS Code (version 1.48.2)

字符串
我的build.gradle(项目)

buildscript {
     // 202306 BEFORE '1.7.10' AFTER '1.9.21'
     ext.kotlin_version = '1.9.21'
     repositories {
         google()
         jcenter()
     }
 
 
  dependencies {
         // classpath 'com.android.tools.build:gradle:3.5.0'
         classpath 'com.android.tools.build:gradle:8.1.4'
         classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
         // 202306 BEFORE 4.3.10 AFTER 4.4.0
         classpath 'com.google.gms:google-services:4.4.0'
     }
 
 }
 
 // 202306 
 subprojects{
     afterEvaluate {
         android {
             namespace 'com.example.camflo'
         }
     } }
 
 allprojects {
     repositories {
         google()
         jcenter()
     } }
 
 rootProject.buildDir = '../build' subprojects {
     project.buildDir = "${rootProject.buildDir}/${project.name}" } subprojects {
     project.evaluationDependsOn(':app') }
 
 tasks.register("clean", Delete) {
     delete rootProject.buildDir }


我的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 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 plugin: 'com.google.gms.google-services' apply from:
 "$flutterRoot/packages/flutter_tools/gradle/flutter.gradle"
 
 android {
     // compileSdkVersion 28
     compileSdkVersion 33
 
     namespace = "com.example.camflo"
 
     sourceSets {
         main.java.srcDirs += 'src/main/kotlin'
     }
 
     // 202306 added buildFeatures and buildConfig with no change of error
     // buildFeatures {
     //    buildConfig = true
     // }
 
     defaultConfig {
         // TODO: Specify your own unique Application ID (https://developer.android.com/studio/build/application-id.html).
         applicationId "com.camflo.app"
         minSdkVersion 29
         // minSdkVersion 30
         // targetSdkVersion 28
         targetSdkVersion 33
         versionCode flutterVersionCode.toInteger()
         versionName flutterVersionName
     }
 
     buildTypes {
         release {
             // TODO: Add your own signing config for the release build.
             // Signing with the debug keys for now, so `flutter run --release` works.
             signingConfig signingConfigs.debug
         }
     }
     lint {
         disable 'InvalidPackage'
     } }
 
 flutter {
     source '../..' }
 
 dependencies {
     implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
     implementation 'com.google.firebase:firebase-analytics:17.5.0' }


我的依赖项:

environment:
  sdk: ">=2.12.0 <=4.0.0"

dependency_overrides:
  package_info_plus: ^4.2.0
  http: ^1.1.2

dependencies:
  flutter:
    sdk: flutter
  flutter_localizations:
    sdk: flutter
 
  shared_preferences: "2.2.2"
  platform: ^3.1.3 
  firebase_core: ^2.24.2
  firebase_analytics: ^10.7.1
  firebase_auth: ^4.14.1
  firebase_storage: ^11.5.2
  cloud_firestore: ^4.13.2
  provider: ^6.1.1
  image_picker: ^1.0.4
  timeago: ^3.6.0
  flutter_spinkit: ^5.2.0
  geolocator: ^10.1.0
  uuid: ^4.2.1
  image: ^4.1.3
  animator: ^3.3.0
  http: ^0.13.0
  path_provider: ^2.0.1
  firebase_messaging: ^14.7.5
  cached_network_image: ^3.3.0
  photo_view: ^0.14.0
  
  preload_page_view: ^0.2.0
  flutter_google_places_hoc081098: ^1.2.0
  material_design_icons_flutter: 7.0.7296
  google_mobile_ads: ^4.0.0
  google_maps_webservice: ^0.0.20-nullsafety.2
  firebase_dynamic_links: ^5.4.5
  cupertino_icons: ^1.0.6

  dev_dependencies:
    flutter_test:
      sdk: flutter

fgw7neuy

fgw7neuy1#

对于第一次尝试,我认为错误很可能是项目中使用的flutter和Android版本之间的不匹配。buildConfig符号由Android构建系统生成,如果flutter和Android版本不兼容,该符号可能不可用。
1.run www.example.com
2.更新Android SDK-在Android Studio中,转到SDK管理器,然后安装任何可用的更新。
1.更新项目中的build.gradle文件以执行此操作
a. inside项目级build.gradle文件:
将ext.Kotlin_version更改为兼容版本,以便您可以在Kotlin网站上查看最新的Kotlin版本。
然后将类路径“com.android.tools.build:gradle:8.1.4”更改为兼容版本。您可以在Android Gradle插件发行说明页面上查看最新的Android Gradle插件版本。
B.在应用级build.gradle文件内部:
将compileSdkVersion更改为兼容版本。您可以在Android Studio SDK管理器中查看最新的Android SDK版本。
然后将minSdkVersion和targetSdkVersion更改为兼容版本。确保它们在Flutter版本支持的范围内。
在完成上述所有操作后,尝试运行以下命令以将项目与更新的配置同步

flutter pub get

字符串
我希望你在项目中使用版本控制,这样你就可以随时回滚
让我知道任何

x6yk4ghg

x6yk4ghg2#

尝试删除依赖项

implementation 'com.google.firebase:firebase-analytics:17.5.0'

字符串

dependencies {
 implementation "org.jetbrains.kotlin:kotlin-stdlib-jdk7:$kotlin_version"
 implementation 'com.google.firebase:firebase-analytics:17.5.0' }


检查导入是否正确
在android studio中打开android文件夹以识别配置文件中的问题

odopli94

odopli943#

在pubspec.yml文件中创建环境

environment:
  sdk: '>=3.2.3 <4.0.0'

字符串
然后在flutter项目的根目录下运行以下命令:

flutter clean
flutter upgrade
flutter pub upgrade
flutter pub outdated
flutter pub upgrade --major-versions
flutter pub get


然后检查flutter项目中是否有任何错误,可能会因为升级包而得到新的错误,你只需要更新代码就可以修复它。
你还需要更新你的pod,所以在你的flutter项目的根目录下运行以下命令:

cd ios
pod repo update
pod update
pod install
cd..


你的项目也使用了firebase,所以你可以使用FlutterFire配置你的flutter项目。
这里是FlutterFireCLI Migration Guide的链接,我知道它已经存档了,但它到今天仍然相关,它将有助于迁移到Flutter中使用Firebase的新方式,正如你所说,你的项目已经2年了,所以你需要迁移。
这里是关于如何使用FlutterFire CLI的快速概述,请参阅我上面提供的链接以了解有关如何使用它的更多信息:

# install firebase cli if not installed already
npm install -g firebase-tools

# Install the CLI if not already done so
dart pub global activate flutterfire_cli

# Run the `configure` command, select a Firebase project and platforms
flutterfire configure


在Android Studio中打开flutter项目的Android文件夹,然后尝试以下操作:

Build -> Clean Project;
File -> Invalidate Caches / Restart...
Build -> Rebuild Project


然后试着运行你的Flutter项目。

编辑

尝试在项目的根目录下运行以下命令。

flutter pub cache repair


完成所有操作后,再次运行flutter clean,然后在flutter项目的根目录下运行flutter run

相关问题