Flutter,android项目在编译时遇到错误
Flutter, android project runs into an error while compiling
运行 进入构建错误,迁移到 android X,
改变了插件
...................................
运行ning "flutter packages get" 在原型中... 1.4s
在调试模式下在 Redmi 5 Plus 上启动 lib\main.dart...
registerResGeneratingTask 已弃用,请使用 registerGeneratedResFolders(FileCollection)
registerResGeneratingTask 已弃用,请使用 registerGeneratedResFolders(FileCollection)
registerResGeneratingTask 已弃用,请使用 registerGeneratedResFolders(FileCollection)
registerResGeneratingTask 已弃用,请使用 registerGeneratedResFolders(FileCollection)
registerResGeneratingTask 已弃用,请使用 registerGeneratedResFolders(FileCollection)
C:\Users\kenny\Documents\flutter.pub-cache\hosted\pub.dartlang.org\firebase_auth-0.8.1+4\android\src\main\java\io\flutter\plugins\firebaseauth\FirebaseAuthPlugin.java:9: 错误:找不到符号
导入 androidx.annotation.NonNull;
^
符号: class NonNull
位置:包 androidx.annotation
C:\Users\kenny\Documents\flutter.pub-cache\hosted\pub.dartlang.org\firebase_auth-0.8.1+4\android\src\main\java\io\flutter\plugins\firebaseauth\FirebaseAuthPlugin.java:10: 错误:找不到符号
导入 androidx.annotation. 可为空;
^
符号: class 可为空
位置:包 androidx.annotation
C:\Users\kenny\Documents\flutter.pub-cache\hosted\pub.dartlang.org\firebase_auth-0.8.1+4\android\src\main\java\io\flutter\plugins\firebaseauth\FirebaseAuthPlugin.java:706: 错误:找不到符号
private void reportException(Result result, @Nullable Exception 异常) {
^
符号: class 可为空
位置:class FirebaseAuthPlugin
C:\Users\kenny\Documents\flutter.pub-cache\hosted\pub.dartlang.org\firebase_auth-0.8.1+4\android\src\main\java\io\flutter\plugins\firebaseauth\FirebaseAuthPlugin.java:610: 错误:找不到符号
public void onComplete(@NonNull Task 任务) {
^
符号: class NonNull
位置:class FirebaseAuthPlugin.SignInCompleteListener
C:\Users\kenny\Documents\flutter.pub-cache\hosted\pub.dartlang.org\firebase_auth-0.8.1+4\android\src\main\java\io\flutter\plugins\firebaseauth\FirebaseAuthPlugin.java:629: 错误:找不到符号
public void onComplete(@NonNull Task 任务) {
^
符号: class NonNull
位置:class FirebaseAuthPlugin.TaskVoidCompleteListener
C:\Users\kenny\Documents\flutter.pub-cache\hosted\pub.dartlang.org\firebase_auth-0.8.1+4\android\src\main\java\io\flutter\plugins\firebaseauth\FirebaseAuthPlugin.java:647: 错误:找不到符号
public void onComplete(@NonNull Task 任务) {
^
符号: class NonNull
位置:class FirebaseAuthPlugin.GetSignInMethodsCompleteListener
C:\Users\kenny\Documents\flutter.pub-cache\hosted\pub.dartlang.org\firebase_auth-0.8.1+4\android\src\main\java\io\flutter\plugins\firebaseauth\FirebaseAuthPlugin.java:187: 错误:找不到符号
public void onComplete(@NonNull Task 任务) {
^
符号:class 非空
C:\Users\kenny\Documents\flutter.pub-cache\hosted\pub.dartlang.org\firebase_auth-0.8.1+4\android\src\main\java\io\flutter\plugins\firebaseauth\FirebaseAuthPlugin.java:492: 错误:找不到符号
public void onComplete(@NonNull Task 任务) {
^
符号:class 非空
C:\Users\kenny\Documents\flutter.pub-cache\hosted\pub.dartlang.org\firebase_auth-0.8.1+4\android\src\main\java\io\flutter\plugins\firebaseauth\FirebaseAuthPlugin.java:559: 错误:找不到符号
public void onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth) {
^
符号:class 非空
9个错误
****************************************************** *******
警告:如果此版本的 cloud_firestore 或其依赖项与 AndroidX 不兼容,它将破坏您的 Android 构建。
有关问题及其解决方法的更多信息,请参阅....。
对于所有 Android 构建失败都会打印此警告。错误的真正根本原因可能无关。
****************************************************** *******
失败:构建失败,出现异常。
出了什么问题:
任务 ':firebase_auth:compileDebugJavaWithJavac' 执行失败。
Compilation failed; see the compiler error output for details.
尝试:
运行 使用 --stacktrace 选项获取堆栈跟踪。 运行 使用 --info 或 --debug 选项以获得更多日志输出。 运行 使用 --scan 以获得完整的见解。
获取更多帮助
10 秒内构建失败
Gradle 任务 assembleDebug 失败,退出代码为 1
退出 (sigterm)
我偶然发现了一个类似的问题,因为一个 firebase 插件使用了 compileSdkVersion 27
- 我只是将它分叉为使用 28
,但它也应该可以从项目根目录的 build.gradle
:
subprojects {
afterEvaluate {project ->
if (project.hasProperty("android")) {
android {
compileSdkVersion 28
}
}
}
}
你的项目迁移到AndroidX了吗?
您似乎还没有将项目迁移到 AndroidX。
什么是 AndroidX?
"AndroidX is a major improvement to the original Android Support Library. AndroidX fully replaces the Support Library. All new android projects are requested to be migrated to AndroidX if your project is dependant on libraries using AndroidX"
如何迁移到 AndroidX
Summary
[ Prerequisite: Android Studio 3.2+. ]
[ Please take a backup before proceeding.]
- Open your android project in Android Studio
Add these two lines to your gradle.properties file
android.useAndroidX=true
android.enableJetifier=true
Go to your app level build.gradle file and change your
compileSdkVersion and targetSdkVersion to 28
From menu click on Refactor > Migrate to AndroidX
Optionally you can take a zip backup on prompt.
Once the list is prepared, click on 'Do Refactor'
你搬到 android X 了吗?如果是,
1)确保你的compileSdkVersion和targetSdkVersion是28
2) 有时 kotlin 版本也是导致此类错误的原因,请确保使用最新版本的 kotlin。(ext.kotlin_version = '1.3.10',在我的例子中)。
3)类路径'com.google.gms:google-services:4.3.2'
4) 仔细遵循 firebase 说明,将您的应用程序添加到 firebase。
5) 如果您使用 firebase_auth,请确保在将应用程序添加到 firebase 时输入 SHA-1 和 SHA-256 签名。
别忘了将 flutter clean 作为最后一步考虑
使用 Android Studio 3.2 及更高版本,您可以通过从菜单栏中选择重构 > 迁移到 AndroidX 将现有项目迁移到 AndroidX。
重构命令使用了两个标志。默认情况下,它们在您的 gradle.properties
文件中都设置为 true:
android.useAndroidX=true
Android 插件使用适当的 AndroidX 库而不是支持库。
android.enableJetifier=true
Android 插件通过重写二进制文件自动迁移现有 third-party 库以使用 AndroidX。
运行 进入构建错误,迁移到 android X, 改变了插件 ...................................
运行ning "flutter packages get" 在原型中... 1.4s 在调试模式下在 Redmi 5 Plus 上启动 lib\main.dart... registerResGeneratingTask 已弃用,请使用 registerGeneratedResFolders(FileCollection) registerResGeneratingTask 已弃用,请使用 registerGeneratedResFolders(FileCollection) registerResGeneratingTask 已弃用,请使用 registerGeneratedResFolders(FileCollection) registerResGeneratingTask 已弃用,请使用 registerGeneratedResFolders(FileCollection) registerResGeneratingTask 已弃用,请使用 registerGeneratedResFolders(FileCollection) C:\Users\kenny\Documents\flutter.pub-cache\hosted\pub.dartlang.org\firebase_auth-0.8.1+4\android\src\main\java\io\flutter\plugins\firebaseauth\FirebaseAuthPlugin.java:9: 错误:找不到符号 导入 androidx.annotation.NonNull; ^ 符号: class NonNull 位置:包 androidx.annotation C:\Users\kenny\Documents\flutter.pub-cache\hosted\pub.dartlang.org\firebase_auth-0.8.1+4\android\src\main\java\io\flutter\plugins\firebaseauth\FirebaseAuthPlugin.java:10: 错误:找不到符号 导入 androidx.annotation. 可为空; ^ 符号: class 可为空 位置:包 androidx.annotation C:\Users\kenny\Documents\flutter.pub-cache\hosted\pub.dartlang.org\firebase_auth-0.8.1+4\android\src\main\java\io\flutter\plugins\firebaseauth\FirebaseAuthPlugin.java:706: 错误:找不到符号 private void reportException(Result result, @Nullable Exception 异常) { ^ 符号: class 可为空 位置:class FirebaseAuthPlugin C:\Users\kenny\Documents\flutter.pub-cache\hosted\pub.dartlang.org\firebase_auth-0.8.1+4\android\src\main\java\io\flutter\plugins\firebaseauth\FirebaseAuthPlugin.java:610: 错误:找不到符号 public void onComplete(@NonNull Task 任务) { ^ 符号: class NonNull 位置:class FirebaseAuthPlugin.SignInCompleteListener C:\Users\kenny\Documents\flutter.pub-cache\hosted\pub.dartlang.org\firebase_auth-0.8.1+4\android\src\main\java\io\flutter\plugins\firebaseauth\FirebaseAuthPlugin.java:629: 错误:找不到符号 public void onComplete(@NonNull Task 任务) { ^ 符号: class NonNull 位置:class FirebaseAuthPlugin.TaskVoidCompleteListener C:\Users\kenny\Documents\flutter.pub-cache\hosted\pub.dartlang.org\firebase_auth-0.8.1+4\android\src\main\java\io\flutter\plugins\firebaseauth\FirebaseAuthPlugin.java:647: 错误:找不到符号 public void onComplete(@NonNull Task 任务) { ^ 符号: class NonNull 位置:class FirebaseAuthPlugin.GetSignInMethodsCompleteListener C:\Users\kenny\Documents\flutter.pub-cache\hosted\pub.dartlang.org\firebase_auth-0.8.1+4\android\src\main\java\io\flutter\plugins\firebaseauth\FirebaseAuthPlugin.java:187: 错误:找不到符号 public void onComplete(@NonNull Task 任务) { ^ 符号:class 非空 C:\Users\kenny\Documents\flutter.pub-cache\hosted\pub.dartlang.org\firebase_auth-0.8.1+4\android\src\main\java\io\flutter\plugins\firebaseauth\FirebaseAuthPlugin.java:492: 错误:找不到符号 public void onComplete(@NonNull Task 任务) { ^ 符号:class 非空 C:\Users\kenny\Documents\flutter.pub-cache\hosted\pub.dartlang.org\firebase_auth-0.8.1+4\android\src\main\java\io\flutter\plugins\firebaseauth\FirebaseAuthPlugin.java:559: 错误:找不到符号 public void onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth) { ^ 符号:class 非空 9个错误 ****************************************************** ******* 警告:如果此版本的 cloud_firestore 或其依赖项与 AndroidX 不兼容,它将破坏您的 Android 构建。 有关问题及其解决方法的更多信息,请参阅....。 对于所有 Android 构建失败都会打印此警告。错误的真正根本原因可能无关。 ****************************************************** *******
失败:构建失败,出现异常。
出了什么问题: 任务 ':firebase_auth:compileDebugJavaWithJavac' 执行失败。
Compilation failed; see the compiler error output for details.
尝试: 运行 使用 --stacktrace 选项获取堆栈跟踪。 运行 使用 --info 或 --debug 选项以获得更多日志输出。 运行 使用 --scan 以获得完整的见解。
- 获取更多帮助
10 秒内构建失败 Gradle 任务 assembleDebug 失败,退出代码为 1 退出 (sigterm)
我偶然发现了一个类似的问题,因为一个 firebase 插件使用了 compileSdkVersion 27
- 我只是将它分叉为使用 28
,但它也应该可以从项目根目录的 build.gradle
:
subprojects {
afterEvaluate {project ->
if (project.hasProperty("android")) {
android {
compileSdkVersion 28
}
}
}
}
你的项目迁移到AndroidX了吗?
您似乎还没有将项目迁移到 AndroidX。
什么是 AndroidX?
"AndroidX is a major improvement to the original Android Support Library. AndroidX fully replaces the Support Library. All new android projects are requested to be migrated to AndroidX if your project is dependant on libraries using AndroidX"
如何迁移到 AndroidX
Summary
[ Prerequisite: Android Studio 3.2+. ]
[ Please take a backup before proceeding.]
- Open your android project in Android Studio
Add these two lines to your gradle.properties file
android.useAndroidX=true
android.enableJetifier=trueGo to your app level build.gradle file and change your compileSdkVersion and targetSdkVersion to 28
From menu click on Refactor > Migrate to AndroidX
Optionally you can take a zip backup on prompt.
Once the list is prepared, click on 'Do Refactor'
你搬到 android X 了吗?如果是,
1)确保你的compileSdkVersion和targetSdkVersion是28
2) 有时 kotlin 版本也是导致此类错误的原因,请确保使用最新版本的 kotlin。(ext.kotlin_version = '1.3.10',在我的例子中)。
3)类路径'com.google.gms:google-services:4.3.2'
4) 仔细遵循 firebase 说明,将您的应用程序添加到 firebase。
5) 如果您使用 firebase_auth,请确保在将应用程序添加到 firebase 时输入 SHA-1 和 SHA-256 签名。
别忘了将 flutter clean 作为最后一步考虑
使用 Android Studio 3.2 及更高版本,您可以通过从菜单栏中选择重构 > 迁移到 AndroidX 将现有项目迁移到 AndroidX。
重构命令使用了两个标志。默认情况下,它们在您的 gradle.properties
文件中都设置为 true:
android.useAndroidX=true
Android 插件使用适当的 AndroidX 库而不是支持库。
android.enableJetifier=true
Android 插件通过重写二进制文件自动迁移现有 third-party 库以使用 AndroidX。