我更新了一个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
型
3条答案
按热度按时间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版本支持的范围内。
在完成上述所有操作后,尝试运行以下命令以将项目与更新的配置同步
字符串
我希望你在项目中使用版本控制,这样你就可以随时回滚
让我知道任何
x6yk4ghg2#
尝试删除依赖项
字符串
在
型
检查导入是否正确
在android studio中打开android文件夹以识别配置文件中的问题
odopli943#
在pubspec.yml文件中创建环境
字符串
然后在flutter项目的根目录下运行以下命令:
型
然后检查flutter项目中是否有任何错误,可能会因为升级包而得到新的错误,你只需要更新代码就可以修复它。
你还需要更新你的pod,所以在你的flutter项目的根目录下运行以下命令:
型
你的项目也使用了firebase,所以你可以使用FlutterFire配置你的flutter项目。
这里是FlutterFireCLI Migration Guide的链接,我知道它已经存档了,但它到今天仍然相关,它将有助于迁移到Flutter中使用Firebase的新方式,正如你所说,你的项目已经2年了,所以你需要迁移。
这里是关于如何使用FlutterFire CLI的快速概述,请参阅我上面提供的链接以了解有关如何使用它的更多信息:
型
在Android Studio中打开flutter项目的Android文件夹,然后尝试以下操作:
型
然后试着运行你的Flutter项目。
编辑
尝试在项目的根目录下运行以下命令。
型
完成所有操作后,再次运行
flutter clean
,然后在flutter项目的根目录下运行flutter run
。