【问题标题】:How to fix flutter AndroidX incompatibility?如何修复颤振的 AndroidX 不兼容问题?
【发布时间】:2019-10-25 15:24: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)

【问题讨论】:

标签: android ios gradle flutter dart


【解决方案1】:

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

【讨论】:

    【解决方案2】:

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

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

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

    【讨论】:

      【解决方案3】:

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

      defaultConfig {   
           ....
           multiDexEnabled true             
       }
      
      dependencies {
          .....
          implementation 'com.android.support:multidex:2.0.1'
      }
      

      【讨论】:

        【解决方案4】:

        我通过@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
        

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

        【讨论】:

          【解决方案5】:

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

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

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

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

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

          【讨论】:

          • 我不太明白为什么会这样,但我希望我的回答会有所帮助
          【解决方案6】:

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

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

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

          【讨论】:

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

          总结解决问题的更改:

          启用多索引。

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

          defaultConfig {
              ...
              multiDexEnabled true
          }
          

          启用 Jetifier

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

          android.useAndroidX=true
          android.enableJetifier=true
          

          【讨论】:

            【解决方案8】:

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

            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.
            

            它可以解决您的问题

            【讨论】:

              【解决方案9】:

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

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

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

              【讨论】:

                【解决方案10】:

                感谢您的建议,

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

                multiDexEnabled true

                在默认配置中

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

                2. 运行 flutter clean 并重建您的项目

                【讨论】:

                  【解决方案11】:

                  您似乎遇到了dexandroidX 的问题。

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

                  此答案可解决您的问题。

                  【讨论】:

                    【解决方案12】:

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

                    【讨论】:

                    • 这行得通。但是,似乎迁移工具更改的文件都没有被 git 捕获(所有编辑的文件都在 .gitignore 中)。此修复程序是否仍适用于其他团队成员?
                    • 其他开发人员不应运行迁移
                    猜你喜欢
                    • 2021-06-24
                    • 2023-01-08
                    • 1970-01-01
                    • 2021-06-10
                    • 1970-01-01
                    • 1970-01-01
                    • 1970-01-01
                    • 1970-01-01
                    相关资源
                    最近更新 更多