【问题标题】:Flutter - Getting 64K methods DEX Error from the Flutter project direcory but not from the Android project directoryFlutter - 从 Flutter 项目目录中获取 64K 方法 DEX 错误,但不是从 Android 项目目录中获取
【发布时间】:2019-02-09 03:35:52
【问题描述】:

在我将下一个依赖项添加到我的 Flutter 项目之后:

cloud_firestore: ^0.9.0   
firebase_auth: ^0.8.0+1   
google_sign_in: ^4.0.0

我尝试通过单击 Android Studio 中的 运行 按钮来运行该应用,但这里发生了一些奇怪的事情:

案例1:如果我从Android Studio打开Flutter项目根目录,我们称之为my_flutter_app目录,然后单击 run 按钮我得到下一个错误:

D8:无法将请求的类放入单个 dex 文件中(# 方法: 68762 > 65536) java.lang.RuntimeException: java.lang.RuntimeException: com.android.builder.dexing.DexArchiveMergerException:出错时 合并 dex 档案:.dex 文件中方法引用的数量 不能超过 64K。

注意:我完全理解该错误的含义以及如何解决它,事实上,如果我添加已知行来解决它:

multiDexEnabled true

凭借其各自的依赖关系,该应用程序构建良好并部署到设备上而不会出现任何错误。

但奇怪的是接下来:

案例 2: 如果我从 Android Studio 打开同一个 Flutter 应用的 android 目录,我的意思是 my_flutter_app/android 目录,然后单击 run 按钮,应用程序构建良好并部署到设备上,没有出现任何错误。 (是的,不修改任何文件,两种情况完全相同,没有 multiDexEnabled true 行)

那么,我想知道这里发生了什么? 为什么 Android 项目 向我显示 64K 方法 DEX 错误,而 Flutter 项目 显示?

我正在努力使我的开发内容尽可能干净,所以如果没有必要,我会犹豫添加 multiDexEnabled true 行,这就是我提出问题的原因。

编辑:以下是每个目录的内容:

这是 Flutter 根目录视图

这是 Android 目录视图

【问题讨论】:

  • 尝试运行flutter clean
  • 我刚刚试了一下,得到了同样的 DEX 错误

标签: android flutter flutter-dependencies


【解决方案1】:

单个 dex 文件中的类(# 方法:68762 > 65536)

这清楚地告诉您,您的方法计数高于单个 dex 文件 (64K) 的可接受方法计数。

因此,为了解决这个问题,您应该在 gradle 文件中启用 multidex,或者从项目中删除不需要或未使用的第三方库。

如果您问为什么这种情况只发生在 Android Studio 上?那么原因可能是 Android Studio 加载了一些默认的核心类。

【讨论】:

  • 不,我问为什么只从 Flutter 根目录而不是 Android 目录运行应用程序会发生这种情况? (对于这两种情况,我都使用 Android Studio)。正如我在问题中所写的那样,我完全知道 64K Dex 错误意味着什么以及如何解决它。
  • my_flutter_app/android 运行项目时不会出现错误,并且仅当您从my_flutter_app 目录运行项目时才会发生错误!?
  • 我编辑了问题以显示两个目录中的内容
  • 好吧,正如我所说,当您从Project 视图编译它时,Android Studio 会加载一些额外的第三方或内部库,同时当您切换到 Android 时,AS 会忽略某些内容查看。
猜你喜欢
  • 2020-10-14
  • 1970-01-01
  • 1970-01-01
  • 2019-04-06
  • 2021-12-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2023-02-07
相关资源
最近更新 更多