Flutter-从Flutter项目目录中获取64K方法DEX错误,但不是从Android项目目录中获取

时间:2019-02-09 03:35:53

标签: 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 目录,然后单击 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根目录视图

This is the Flutter root directory view

这是Android目录视图

This is the Android directory view

1 个答案:

答案 0 :(得分:0)

  

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

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

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

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

enter image description here