android – Flutter的Multidex问题

前端之家收集整理的这篇文章主要介绍了android – Flutter的Multidex问题前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我在使用 Android Studio中的Flutter时使用gradle编译以下错误

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;

简短的版本

只有在我添加足够的依赖项时才会出现这种情况,如预期的那样.我已启用multidex并按照说明(https://developer.android.com/studio/build/multidex.html)在Android项目build.gradle文件添加了multidex依赖项,但不知道如何处理Flutter App的“为multidex配置应用程序”中的第2步,或者即使遗漏那一步是否是问题.

重新创建的步骤:

>从工具栏中选择File / New / New Flutter Project
>选择“颤动应用程序”
>包括Kotlin&迅捷的支持
>检查应用程序编译并运行
>将以下内容添加到pubspec.yaml中的依赖项:

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

>点击包进入Android Studio或运行flutter包进入项目目录
>修改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'

>遵循每个依赖项的多索引步骤;即修改其build.gradle文件,启用multidex并添加multidex依赖项.
>在我的项目及其依赖项的每个build.gradle文件中,将minSdkVersion修改为21和27中的每一个,并为它们启用multidex.
>启用缩小我的项目.
>更换位置:“^ 1.2.0”,地理位置:“^ 0.2.1”
>根本不启用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!

解决方法

你的两个软件包似乎不同意它们的传递依赖性.一个人想要11.6.,另一个想要一些播放服务依赖.由于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'
    }
}

猜你在找的Flutter相关文章