Flutter,android项目在编译时遇到错误

Posted

技术标签:

【中文标题】Flutter,android项目在编译时遇到错误【英文标题】:Flutter, android project runs into an error while compiling 【发布时间】:2019-07-26 05:49:30 【问题描述】:

遇到构建错误,迁移到 android X, 改变了插件 ....................................

在原型中运行“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\an​​droid\src\main\java\io\flutter\plugins\firebaseauth\FirebaseAuthPlugin.java :9: 错误:找不到符号 导入androidx.annotation.NonNull; ^ 符号:类 NonNull 位置:包androidx.annotation C:\Users\kenny\Documents\flutter.pub-cache\hosted\pub.dartlang.org\firebase_auth-0.8.1+4\an​​droid\src\main\java\io\flutter\plugins\firebaseauth\FirebaseAuthPlugin.java :10:错误:找不到符号 导入androidx.annotation.Nullable; ^ 符号:类 Nullable 位置:包androidx.annotation C:\Users\kenny\Documents\flutter.pub-cache\hosted\pub.dartlang.org\firebase_auth-0.8.1+4\an​​droid\src\main\java\io\flutter\plugins\firebaseauth\FirebaseAuthPlugin.java :706: 错误: 找不到符号 私人无效报告异常(结果结果,@Nullable Exception异常) ^ 符号:类 Nullable 位置:类 FirebaseAuthPlugin C:\Users\kenny\Documents\flutter.pub-cache\hosted\pub.dartlang.org\firebase_auth-0.8.1+4\an​​droid\src\main\java\io\flutter\plugins\firebaseauth\FirebaseAuthPlugin.java :610: 错误: 找不到符号 public void onComplete(@NonNull Task task) ^ 符号:类 NonNull 位置:类 FirebaseAuthPlugin.SignInCompleteListener C:\Users\kenny\Documents\flutter.pub-cache\hosted\pub.dartlang.org\firebase_auth-0.8.1+4\an​​droid\src\main\java\io\flutter\plugins\firebaseauth\FirebaseAuthPlugin.java :629: 错误: 找不到符号 public void onComplete(@NonNull Task task) ^ 符号:类 NonNull 位置:类 FirebaseAuthPlugin.TaskVoidCompleteListener C:\Users\kenny\Documents\flutter.pub-cache\hosted\pub.dartlang.org\firebase_auth-0.8.1+4\an​​droid\src\main\java\io\flutter\plugins\firebaseauth\FirebaseAuthPlugin.java :647: 错误: 找不到符号 public void onComplete(@NonNull Task task) ^ 符号:类 NonNull 位置:类 FirebaseAuthPlugin.GetSignInMethodsCompleteListener C:\Users\kenny\Documents\flutter.pub-cache\hosted\pub.dartlang.org\firebase_auth-0.8.1+4\an​​droid\src\main\java\io\flutter\plugins\firebaseauth\FirebaseAuthPlugin.java :187: 错误: 找不到符号 public void onComplete(@NonNull Task task) ^ 符号:类 NonNull C:\Users\kenny\Documents\flutter.pub-cache\hosted\pub.dartlang.org\firebase_auth-0.8.1+4\an​​droid\src\main\java\io\flutter\plugins\firebaseauth\FirebaseAuthPlugin.java :492: 错误: 找不到符号 public void onComplete(@NonNull Task task) ^ 符号:类 NonNull C:\Users\kenny\Documents\flutter.pub-cache\hosted\pub.dartlang.org\firebase_auth-0.8.1+4\an​​droid\src\main\java\io\flutter\plugins\firebaseauth\FirebaseAuthPlugin.java :559: 错误: 找不到符号 公共无效 onAuthStateChanged(@NonNull FirebaseAuth firebaseAuth) ^ 符号:类 NonNull 9 个错误 ****************************************************** ******* 警告:如果此版本的 cloud_firestore 或其依赖项与 AndroidX 不兼容,它将破坏您的 Android 构建。 有关该问题以及如何解决该问题的更多信息,请参阅......。 此警告会针对所有 Android 构建失败打印。错误的真正根本原因可能是无关的。 ****************************************************** *******

FAILURE:构建失败并出现异常。

出了什么问题: 任务 ':firebase_auth:compileDebugJavaWithJavac' 执行失败。

编译失败;有关详细信息,请参阅编译器错误输出。

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

通过https://help.gradle.org获取更多帮助

在 10 秒内构建失败 Gradle 任务 assembleDebug 失败,退出代码为 1 退出(sigterm)

【问题讨论】:

error: resource android:attr/fontVariationSettings not found的可能重复 可能想看看“迁移到 AndroiX”。 你搬到android X了吗 【参考方案1】:

我偶然发现了一个类似的问题,因为 firebase 插件使用了compileSdkVersion 27 - 我只是将它分叉为使用28,但也应该可以从项目根目录的build.gradle 覆盖它:https://***.com/a/50916298/109219

subprojects 
    afterEvaluate project ->
        if (project.hasProperty("android")) 
            android 
                compileSdkVersion 28
            
        
    

【讨论】:

尝试了解决方案,但没有成功,我已经更新了我的帖子【参考方案2】:

您是否已将项目迁移到 AndroidX?

您的项目似乎尚未迁移到 AndroidX。

什么是 AndroidX?

“AndroidX 是对原始 Android Support Library 的重大改进。AndroidX 完全取代了 Support Library。如果您的项目依赖于使用 AndroidX 的库,则要求所有新的 android 项目迁移到 AndroidX”

read more here ...

如何迁移到 AndroidX

总结

[先决条件:Android Studio 3.2+。 ][请在继续之前进行备份。]

    在 Android Studio 中打开您的 android 项目

    将这两行添加到您的 gradle.properties 文件android.useAndroidX=true android.enableJetifier=true

    转到您的应用级别 build.gradle 文件并更改您的 compileSdkVersiontargetSdkVersion28

    从菜单中点击 Refactor > Migrate to AndroidX

    您可以选择在提示时进行 zip 备份。

    列表准备好后,点击“Do Refactor

read more here ...

【讨论】:

迁移无效,将我最初的帖子更改为错误消息 @rizu 迁移工作。这是一个不同的错误,您需要创建一个新问题。请不要编辑您的问题。这将使将来阅读此问题的其他 *** 用户感到困惑。所以我请你把旧问题放回去,问一个新问题。【参考方案3】:

您是否已迁移到 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作为最后一步

【讨论】:

【参考方案4】:

使用 Android Studio 3.2 及更高版本,您可以通过从菜单栏中选择 Refactor > Migrate to AndroidX 将现有项目迁移到 AndroidX。

重构命令使用两个标志。默认情况下,它们在您的 gradle.properties 文件中都设置为 true:

android.useAndroidX=true

Android 插件使用适当的 AndroidX 库而不是支持库。

android.enableJetifier=true

Android 插件通过重写二进制文件自动迁移现有的第三方库以使用 AndroidX。

【讨论】:

以上是关于Flutter,android项目在编译时遇到错误的主要内容,如果未能解决你的问题,请参考以下文章

为 iOS 编译 Flutter 项目时的 Xcode 构建问题

使用 Firebase In App Messaging 插件时 Flutter 无法编译项目

Android开发错误——Android Studio中遇到过的错误问题与解决方案汇总

为啥我在构建项目时出现 Flutter gradle 错误?

Flutter 错误:VM 快照无效,无法从设置中推断。 - 当想要在 android 项目中包含 Flutter 模块时

android 依赖项更改后 Flutter 项目无法编译