如何修复颤振的 AndroidX 不兼容问题?

Posted

技术标签:

【中文标题】如何修复颤振的 AndroidX 不兼容问题?【英文标题】:How to fix flutter AndroidX incompatibility? 【发布时间】:2021-08-07 12:56:27 【问题描述】:

我刚导入webview_flutter插件,发现插件和我的flutter环境不兼容。然后使用 android Studio,我使用“迁移到 AndroidX”选项迁移我的 AndroidX 环境。

我想使用 webview_flutter 插件来查看页面。帮助表示赞赏。

这是错误信息

在调试模式下在 Andromax B26D2H 上启动 lib/main.dart... D8:程序类型已经存在:android.support.v4.media.MediaBrowserCompat$ItemCallback

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

出了什么问题: 任务执行失败 ':app:transformDexArchiveWithExternalLibsDexMergerForDebug'. com.android.builder.dexing.DexArchiveMergerException:合并 dex 档案时出错:/Users/tio/Documents/Development/firecek_2019/build/app/intermediates/transforms/dexBuilder/debug/22.jar,/Users/tio/Documents/ Development/firecek_2019/build/app/intermediates/transforms/dexBuilder/debug/105.jar, /Users/tio/Documents/Development/firecek_2019/build/app/intermediates/transforms/dexBuilder/debug/148.jar, /Users/ tio/Documents/Development/firecek_2019/build/app/intermediates/transforms/dexBuilder/debug/133.jar, /Users/tio/Documents/Development/firecek_2019/build/app/intermediates/transforms/dexBuilder/debug/72.jar , /Users/tio/Documents/Development/firecek_2019/build/app/intermediates/transforms/dexBuilder/debug/128.jar, /Users/tio/Documents/Development/firecek_2019/build/app/intermediates/transforms/dexBuilder/debug /79.jar, /Users/tio/Documents/Development/firecek_2019/build/app/intermediates/transforms/dexBuilder/debug/88.jar, /Users/tio/Documents/Development/firecek_2019/build/app/inte rmediates/transforms/dexBuilder/debug/110.jar, /Users/tio/Documents/Development/firecek_2019/build/app/intermediates/transforms/dexBuilder/debug/67.jar, /Users/tio/Documents/Development/firecek_2019/ build/app/intermediates/transforms/dexBuilder/debug/120.jar, /Users/tio/Documents/Development/firecek_2019/build/app/intermediates/transforms/dexBuilder/debug/91.jar, /Users/tio/Documents/ Development/firecek_2019/build/app/intermediates/transforms/dexBuilder/debug/102.jar, /Users/tio/Documents/Development/firecek_2019/build/app/intermediates/transforms/dexBuilder/debug/6.jar, /Users/ tio/Documents/Development/firecek_2019/build/app/intermediates/transforms/dexBuilder/debug/118.jar, /Users/tio/Documents/Development/firecek_2019/build/app/intermediates/transforms/dexBuilder/debug/5.jar , /Users/tio/Documents/Development/firecek_2019/build/app/intermediates/transforms/dexBuilder/debug/52.jar, /Users/tio/Documents/Development/firecek_2019/build/app/intermediates/transforms/dexBuilder/debug /58.jar , /Users/tio/Documents/Development/firecek_2019/build/app/intermediates/transforms/dexBuilder/debug/43.jar, /Users/tio/Documents/Development/firecek_2019/build/app/intermediates/transforms/dexBuilder/debug /127.jar, /Users/tio/Documents/Development/firecek_2019/build/app/intermediates/transforms/dexBuilder/debug/142.jar, /Users/tio/Documents/Development/firecek_2019/build/app/intermediates/transforms /dexBuilder/debug/151.jar, /Users/tio/Documents/Development/firecek_2019/build/app/intermediates/transforms/dexBuilder/debug/19.jar, /Users/tio/Documents/Development/firecek_2019/build/app /intermediates/transforms/dexBuilder/debug/34.jar, /Users/tio/Documents/Development/firecek_2019/build/app/intermediates/transforms/dexBuilder/debug/46.jar, /Users/tio/Documents/Development/firecek_2019 /build/app/intermediates/transforms/dexBuilder/debug/63.jar, /Users/tio/Documents/Development/firecek_2019/build/app/intermediates/transforms/dexBuilder/debug/107.jar, /Users/tio/Documents /发展/firecek _2019/build/app/intermediates/transforms/dexBuilder/debug/9.jar, /Users/tio/Documents/Development/firecek_2019/build/app/intermediates/transforms/dexBuilder/debug/31.jar, /Users/tio/ Documents/Development/firecek_2019/build/app/intermediates/transforms/dexBuilder/debug/15.jar, /Users/tio/Documents/Development/firecek_2019/build/app/intermediates/transforms/dexBuilder/debug/115.jar, /用户/tio/Documents/Development/firecek_2019/build/app/intermediates/transforms/dexBuilder/debug/70.jar, /Users/tio/Documents/Development/firecek_2019/build/app/intermediates/transforms/dexBuilder/debug/62 .jar, 通过https://developer.android.com/studio/build/dependencies#duplicate_classes了解如何解决问题。 程序类型已经存在:android.support.v4.media.MediaBrowserCompat$ItemCallback

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

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

在 4m 59s 内构建失败 ****************************************************** ***************************************** Gradle 失败可能是因为这个 Flutter 应用程序中的 AndroidX 不兼容。 请参阅https://flutter.dev/docs/development/packages-and-plugins/androidx-compatibility 了解有关该问题以及如何解决该问题的更多信息。


Gradle 任务 assembleDebug 失败,退出代码为 1 退出(sigterm)

【问题讨论】:

你能添加 gradle 文件吗 我该怎么做?无论如何,我还是移动开发新手 检查这个:***.com/a/56129623/10380182 【参考方案1】:

首先确保 pubspec.yaml 中的所有包都是最新版本。然后用android studio打开你的flutter应用程序的android项目,选择Refactor->Migrate to Androidx(确保你是从android项目而不是从flutter项目做的)。等到 android studio 完成迁移你的项目,重建你的项目。希望对您有所帮助!

【讨论】:

这行得通。但是,似乎迁移工具更改的文件都没有被 git 捕获(所有编辑的文件都在 .gitignore 中)。此修复程序是否仍适用于其他团队成员? 其他开发人员不应运行迁移【参考方案2】:

您似乎遇到了dexandroidX 的问题。

关注https://***.com/a/56490440/9236994

此答案可解决您的问题。

【讨论】:

【参考方案3】:

感谢您的建议,

我已通过以下步骤修复它: 1.尝试添加这一行 在你的项目文件夹> android > app > build.gradle,添加以下行

multiDexEnabled true

在默认配置中

    然后在 android/build.gradle 文件中升级 gradle 依赖:classpath 'com.android.tools.build:gradle:3.3.1' (之前是 3.2.1 版本)

    运行 flutter clean 并重建您的项目

【讨论】:

【参考方案4】:

创建一个新的 Flutter 项目并将现有代码移至其中:flutter migration

flutter create --androidx -t <project-type> <new-project-path>

例如:flutter create --androidx -t app .

【讨论】:

【参考方案5】:

您可以按照此链接中给出的这些步骤来解决此问题

https://medium.com/@sahaishashank2507/the-gradle-failure-may-have-been-because-of-androidx-incompatibilities-in-this-flutter-app-39b34acee40e?source=---------2------------------

You need to open your project in the android studio.
select Refactor->Migrate to Androidx(You need to migrate Android Project not 
flutter one)
Android Studio finish some process you have to wait for it .
Than rebuild your project and it will work fine.

它可以解决您的问题

【讨论】:

【参考方案6】:

总结解决问题的更改:

启用多索引。

转到[project_folder]/app/build.gradle 并添加以下行。

defaultConfig 
    ...
    multiDexEnabled true

启用 Jetifier

转到[project_folder]/android/app/gradle.properties 并添加以下行。

android.useAndroidX=true
android.enableJetifier=true

【讨论】:

【参考方案7】:

对于我来说,我复制了 settings.gradle 文件 到新文件 settings_aar.gradle

然后从 settings_aar.gradle 中删除以下代码:

 def flutterProjectRoot = rootProject.projectDir.parentFile.toPath()
 def plugins = new Properties()

【讨论】:

兄弟你是不是把settings.gradle文件复制后删掉了? bcz 我已经这样做了,但我的问题没有解决..【参考方案8】:

好的,感谢@Navpreet Singh,我终于解决了问题

为了修复Firebase FCM(在小米设备上)默认灰色图标的问题,我在Manifest中添加了:

从那时起,我在构建应用程序时遇到了这个错误:

正在运行 Gradle 任务“assembleDebug”... 运行 Gradle 任务 'assembleDebug'... 已完成 20,2 秒 构建失败可能是因为插件中的 AndroidX 不兼容。该工具即将 尝试使用 Jetifier 解决不兼容问题。 构建 cloud_firestore 插件... 例外:由于上述问题,无法构建 cloud_firestore 插件。 运行 Gradle 任务 'assembleAarRelease'...

当我注释掉 Manifest 中的元数据时,程序又开始编译了。

【讨论】:

我不太明白为什么会这样,但我希望我的回答会有所帮助【参考方案9】:

我通过@tiklupxgit 找到了this solution on Github,很快解决了这个问题。

[Project Directory]/android/build.gradle中更新这一行

classpath 'com.android.tools.build:gradle:3.5.4'

现在在[Project Directory] 下的终端中运行这些命令

flutter clean && flutter pub get

最后,再次构建您的项目。

【讨论】:

【参考方案10】:

只需在 app/build.gradle 文件中启用 multidex。

defaultConfig    
     ....
     multiDexEnabled true             
 

dependencies 
    .....
    implementation 'com.android.support:multidex:2.0.1'

【讨论】:

【参考方案11】:

我已经尝试过最好的方法来分解它。我一直在尝试使用 youtube video flutter 插件从 URL 使用 youtube 视频,并收到 androidx 不兼容插件错误。最后,我找到了结果。更新一下

    android 中的 build.Gradle 文件 - 类路径 'com.android.tools.build:gradle:4.1.0' gradle-wrapper.properties

distributionUrl=https://services.Gradle.org/distributions/gradle-6.7-all.zip 更新上面的值,对我来说它会很完美。

【讨论】:

【参考方案12】:

您只需在 pubspec.yaml 中运行“获取包”,问题就会得到解决

【讨论】:

以上是关于如何修复颤振的 AndroidX 不兼容问题?的主要内容,如果未能解决你的问题,请参考以下文章

Flutter & AndroidX 不兼容如何手动设置依赖

构建失败可能是由于插件中的 AndroidX 不兼容。该工具即将尝试使用Jetifier解决不兼容问题

androidx.appcompat.widget.AppCompatTextView 与 API < 26 不兼容

构建失败可能是由于插件中的 AndroidX 不兼容

这个 Flutter 应用程序中的 Gradle 失败 AndroidX 不兼容

Gradle 失败可能是因为这个 Flutter 应用程序中的 AndroidX 不兼容