在我的 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根目录视图
这是Android目录视图