在 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 并在 Android 项目 build.gradle
文件中添加了 multidex 依赖项( https://developer.android.com/studio/build/multidex.html ),但不确定对于 Flutter 应用程序的“为 multidex 配置您的应用程序”中的第 2 步该怎么做,甚至该步骤的遗漏是否是问题所在。
重建步骤:
- 从工具栏中选择
File/New/New Flutter Project
- 选择“颤振应用程序”
- 包括 Kotlin 和 Swift 支持
- 检查应用程序编译和运行
- 将以下内容添加到
pubspec.yaml
的依赖项中:
dependencies:
flutter_google_place_picker: "^0.0.1"
location: "^1.2.0"
- 在 Android Studio 中点击
Packages Get
或在项目目录中运行flutter packages get
- 修改
android/app/build.gradle
在合适的地方添加以下部分:
dependencies {
compile 'com.android.support:multidex:1.0.1'
}
android {
defaultConfig {
multiDexEnabled true
}
}
- 从工具栏中选择
Run/Run
我尝试过的其他事情
- 将
build.gradle
中的“编译”依赖项替换为以下各项:
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依赖。在我的项目及其依赖项的每个
build.gradle
文件中将 minSdkVersion 修改为 21 和 27 中的每一个,并为它们启用 multidex。为我的项目启用缩小。
将
location: "^1.2.0"
替换为geolocation: "^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!
原文由 SpoonerNZ 发布,翻译遵循 CC BY-SA 4.0 许可协议
你的两个包似乎不同意它们的传递依赖关系。一个想要 11.6.+,另一个想要 11.+ 的一些播放服务依赖项。由于 11.6.2 和 11.8.0 都在那里,这将导致冲突。
如果您在
android/
文件夹中运行./gradlew androidDependencies
,您将获得依赖解析结果的列表,其中包含以下内容:这些 11.6.2 和 11.8.0 包不能一起工作。要解决此问题,您需要修补您的依赖项以相互保持一致,或者将依赖项覆盖添加到您的
android/app/build.gradle
文件的顶层并希望最好: