当前位置: 首页 > 知识库问答 >
问题:

有颤振的Multidex问题

鄢晔
2023-03-14
Dex: Error converting bytecode to dex:
Cause: com.android.dex.DexException: Multiple dex files define Lcom/google/android/gms/internal/zzcew;
UNEXPECTED TOP-LEVEL EXCEPTION:
com.android.dex.DexException: Multiple dex files define Lcom/google/android/gms/internal/zzcew;

[... stacktrace omitted for brevity ...]

* What went wrong:
Execution failed for task ':app:transformDexArchiveWithDexMergerForDebug'.
> com.android.build.api.transform.TransformException: com.android.dex.DexException: Multiple dex files define Lcom/google/android/gms/internal/zzcew;

这只有在我添加了足够多的依赖项时才会发生,这可能是预期的。我已经按照说明(https://developer.Android.com/studio/build/multidex.html)在Android项目build.gradle文件中启用了multidex并添加了multidex依赖项,但不确定如何处理Flutter应用程序的“为multidex配置您的应用程序”中的第2步,甚至不确定是否遗漏了该步骤。

>

  • 从工具栏中选择文件/新建/新建Flutter项目
  • 选择“flutter应用程序”
  • 包括Kotlin和Swift支持
  • 检查应用程序是否编译并运行
  • pubspec.yaml中的依赖项添加以下内容:

    dependencies:
      flutter_google_place_picker: "^0.0.1"
      location: "^1.2.0"
    

    修改android/app/build.gradle在适当的位置添加以下部分:

    dependencies {
      compile 'com.android.support:multidex:1.0.1'
    }
    android {
        defaultConfig {
            multiDexEnabled true
        }
    }
    

    >

  • build.gradle中的“compile”依赖项替换为以下各项:

    compile 'com.android.support:multidex:1.0.3'
    implementation 'com.android.support:multidex:1.0.1'
    implementation 'com.android.support:multidex:1.0.3'
    

    对我的每个依赖项执行multidex步骤;即修改其build.gradle文件、启用multidex并添加multidex依赖项。

    根本不启用multidex(即跳过重新创建的步骤7)。这将导致以下错误:

    FAILURE: Build failed with an exception.
    
    * What went wrong:
    Execution failed for task ':app:transformDexArchiveWithExternalLibsDexMergerForDebug'.
    > java.lang.RuntimeException: java.lang.RuntimeException: com.android.builder.dexing.DexArchiveMergerException: Unable to merge dex
    
    $ flutter doctor -v
    [√] Flutter (Channel beta, v0.2.8, on Microsoft Windows [Version 10.0.16299.371], locale en-GB)
        • Flutter version 0.2.8 at D:\flutter
        • Framework revision b397406561 (2 weeks ago), 2018-04-02 13:53:20 -0700
        • Engine revision c903c217a1
        • Dart version 2.0.0-dev.43.0.flutter-52afcba357
    
    [√] Android toolchain - develop for Android devices (Android SDK 27.0.3)
        • Android SDK at C:\Users\Dave\AppData\Local\Android\sdk
        • Android NDK location not configured (optional; useful for native profiling support)
        • Platform android-27, build-tools 27.0.3
        • Java binary at: D:\AndroidDev\jre\bin\java
        • Java version OpenJDK Runtime Environment (build 1.8.0_152-release-1024-b02)
        • All Android licenses accepted.
    
    [√] Android Studio (version 3.1)
        • Android Studio at D:\AndroidDev
        • Java version OpenJDK Runtime Environment (build 1.8.0_152-release-1024-b02)
    
    [√] Connected devices (1 available)
        • Android SDK built for x86 64 • emulator-5554 • android-x64 • Android 5.1.1 (API 22) (emulator)
    
    • No issues found!
    
  • 共有1个答案

    宦瀚
    2023-03-14

    您的两个包在它们的传递依赖关系上似乎不一致。一个想要11.6.+,另一个想要一些play-services依赖项的11.+。由于11.6.2和11.8.0都存在,这将导致冲突。

    如果您在android/文件夹中运行./gradlew androiddependencies,您将得到依赖关系解析结果的列表,其中包含以下内容:

    +--- :flutter_google_place_picker (variant: release)
    +--- com.google.android.gms:play-services-location:11.8.0@aar
    +--- com.google.android.gms:play-services-places:11.6.2@aar
    +--- com.google.android.gms:play-services-maps:11.6.2@aar
    +--- com.google.android.gms:play-services-base:11.8.0@aar
    +--- com.google.android.gms:play-services-tasks:11.8.0@aar
    +--- com.google.android.gms:play-services-basement:11.8.0@aar
    

    这两个11.6.2和11.8.0包不能一起工作。要解决这个问题,您需要为依赖项打补丁,使其彼此一致,或者在android/app/build.gradle文件的顶层添加一个依赖项覆盖,并希望得到最好的结果:

    configurations.all {
        resolutionStrategy {
            force 'com.google.android.gms:play-services-places:11.8.0'
            force 'com.google.android.gms:play-services-location:11.8.0'
        }
    }
    
     类似资料:
    • 我一直试图设置一个颤振路径,所以我不需要每次都做一个临时路径。我是新的使用终端和Unix(Mac用户也),不明白如何设置我的路径与说明在网站上。我不完全确定我的flutter SDK在哪里,这也没有帮助。想一步一步地知道该怎么做。

    • 我无法在尝试设置平台后修复颤振问题,问题如下所示: https://i.stack.imgur.com/uddfn.png

    • 正在启动lib\main。IA Emulator上AOSP上的dart处于调试模式。。。正在运行Gradle任务“assembleDebug”。。。警告:插件路径_provider_android需要android SDK版本31。警告:插件共享的_首选项_android需要android SDK版本31。一个或多个插件需要更高的Android SDK版本。通过将以下内容添加到D:\App Dev

    • 我可以使用“startAfter”和“limit”进行分页,但它有错误。 例如,在Firestore DB中,我有7条记录: 当页面大小为5时,第一页就可以了,因为我使用了: 它给了我1-5项。 当它加载第二页时,我使用了: 问题是第二页结果只有item7,item6消失了。“开始”也有同样的问题。 真希望它有“抵消”功能,有人有解决办法吗?

    • 在谷歌Play上部署我的Flitter应用程序后,它在启动时崩溃。它为2台设备(Google Test devices on Play)工作,并为其他设备提供以下错误。 问题:java.lang.不满意LinkError:dalvik.system.PathClassLoader[DexPathList[[[zip file"/data/app/abc.pota.tallxy-1/base.apk

    • 我是新来的,所以如果这个问题太基本,我非常抱歉。 我在iOS中提出了一个flutter项目,目前正试图在windows 10中继续编码,但当我运行flutter doctor时,我收到了以下结果: 医生摘要(要查看所有详细信息,请运行flutter doctor -v): [√] Flutter(频道稳定,2.2.1,在Microsoft Windows[版本10.0.19042.1052],区域