android - Flutter - 从 Flutter 项目目录而不是从 Android 项目目录获取 64K 方法 DEX 错误

标签 android flutter flutter-dependencies

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

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

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

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

D8: Cannot fit requested classes in a single dex file (# methods: 68762 > 65536) java.lang.RuntimeException: java.lang.RuntimeException: com.android.builder.dexing.DexArchiveMergerException: Error while merging dex archives: The number of method references in a .dex file cannot exceed 64K.

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

multiDexEnabled true

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

但奇怪的是接下来:

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

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

我试图让我的开发内容尽可能干净,所以我犹豫要不要添加 multiDexEnabled true 行,所以这就是我提出问题的原因。

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

这是Flutter根目录 View

This is the Flutter root directory view

这是Android目录 View

This is the Android directory view

最佳答案

classes in a single dex file (# methods: 68762 > 65536)

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

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

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

enter image description here

关于android - Flutter - 从 Flutter 项目目录而不是从 Android 项目目录获取 64K 方法 DEX 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54602913/

相关文章:

android - 在 Android 8 (Oreo) 中,Intent Chooser 无法设置 WallPaper

flutter - 如何在 Flutter 中将参数发送到 setstate

sqlite - 升级 SQFLITE : Unhandled Exception: DatabaseException(table UsernameTable has no column named rememberMe (Sqlite code 1):

android - 仅切换选项卡时调用 TabLayoutOnPageChangeListener onTabReselected

android - 在地理点周围创建边界框

android - 如何每30分钟后发出警报

async-await - Flutter 在 main 中读取共享首选项,然后决定哪个启动页面?

flutter - flutter : How to change color of all text before a particular character in TextField?

Dart 内置值反序列化对象列表

flutter - 如何在 flutter 中制作这个气泡类型的小部件来描述点击时的特定消息?