在我将下一个依赖项添加到我的 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
这是Android目录 View
最佳答案
classes in a single dex file (# methods: 68762 > 65536)
这清楚地告诉您,您的方法计数高于单个 dex 文件 (64K) 的可接受方法计数。
因此,为了解决这个问题,您应该在 gradle 文件中启用 multidex 或从项目中删除不需要或未使用的第三方库。
如果你问为什么这只发生在 Android Studio 上?那么原因可能是 Android Studio 加载了一些默认的核心类。
关于android - Flutter - 从 Flutter 项目目录而不是从 Android 项目目录获取 64K 方法 DEX 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54602913/