如何在 Android Studio 中禁用 MultiDex?
How can I disable MultiDex in Android Studio?
我知道如何启用 MultiDex 支持,但我的问题恰恰相反。
由于某些原因,我的 Android Studio 的 MultiDex 选项似乎默认启用。
当我解压缩生成的 APK 文件并检查里面时,有两个文件。
classes.dex 和 classes2.dex.
您可能会说我的项目可能达到 64K 限制,但不,它没有。
我也尝试过没有任何依赖关系和其他一些 gradle 设置,
但结果都是一样的。
我什至放了行 multiDexEnabled false
,但它也没有帮助。
所以这次我创建了另一个新的空项目,并点击 运行 按钮,没有任何修改。
结果?一样。
如您所见,我有两个引用非常少的 .dex 文件。
我不明白这里发生了什么..
我尝试禁用 MultiDex 的原因是,
首先,我的应用程序非常简单,只有一些依赖项,所以不需要它。
其次,应用程序需要支持更旧的 Android OS。
第三,我想避免旧 Android 设备中的 Dalvik linearAlloc 限制。
最后想知道具体的原因
还有一个有趣的事实。
我反编译并查看了 apk 文件,找不到名为 MainActivity 的 class,它是默认创建的,而应用程序 运行 在我的 phone 正如预期的那样。
我的真实项目也是如此。该应用程序运行良好,但 classes*.dex 中没有我的代码。是的,如果应用程序没有任何问题就很好,但是有点烦人,因为我有时想反编译并查看结果代码。
像 Instant 运行 这样的东西改变了 APK 的性质。 运行 来自 IDE 的应用与通过其他方式构建应用(菜单中的构建 APK、gradle
任务、等)。
这是我禁用 Instant 运行 的原因之一,因为我是那些想要 运行 与我的用户 运行 相同的应用程序的疯子之一.
Android Studio 3.0 对 APK 进行了另一项更改,与您的用户 运行:it adds android:testOnly="true"
, preventing that APK from being installed normally 相比。这可能是一项安全措施,因此您只分发通过其他构建机制制作的 APK。
在您的情况下,根据评论,Instant 运行 似乎是导致 multidex 式行为的原因。这可能与 Instant 运行 如何尝试修补已安装的 APK,而不是将新的 APK 推送到设备或模拟器有关。
因此,要么禁用 Instant 运行,要么不分析 运行 输出,而是专注于通过其他方式构建的 APK。
我知道如何启用 MultiDex 支持,但我的问题恰恰相反。 由于某些原因,我的 Android Studio 的 MultiDex 选项似乎默认启用。 当我解压缩生成的 APK 文件并检查里面时,有两个文件。
classes.dex 和 classes2.dex.
您可能会说我的项目可能达到 64K 限制,但不,它没有。
我也尝试过没有任何依赖关系和其他一些 gradle 设置,
但结果都是一样的。
我什至放了行 multiDexEnabled false
,但它也没有帮助。
所以这次我创建了另一个新的空项目,并点击 运行 按钮,没有任何修改。
结果?一样。
如您所见,我有两个引用非常少的 .dex 文件。 我不明白这里发生了什么..
我尝试禁用 MultiDex 的原因是,
首先,我的应用程序非常简单,只有一些依赖项,所以不需要它。
其次,应用程序需要支持更旧的 Android OS。
第三,我想避免旧 Android 设备中的 Dalvik linearAlloc 限制。
最后想知道具体的原因
还有一个有趣的事实。 我反编译并查看了 apk 文件,找不到名为 MainActivity 的 class,它是默认创建的,而应用程序 运行 在我的 phone 正如预期的那样。 我的真实项目也是如此。该应用程序运行良好,但 classes*.dex 中没有我的代码。是的,如果应用程序没有任何问题就很好,但是有点烦人,因为我有时想反编译并查看结果代码。
像 Instant 运行 这样的东西改变了 APK 的性质。 运行 来自 IDE 的应用与通过其他方式构建应用(菜单中的构建 APK、gradle
任务、等)。
这是我禁用 Instant 运行 的原因之一,因为我是那些想要 运行 与我的用户 运行 相同的应用程序的疯子之一.
Android Studio 3.0 对 APK 进行了另一项更改,与您的用户 运行:it adds android:testOnly="true"
, preventing that APK from being installed normally 相比。这可能是一项安全措施,因此您只分发通过其他构建机制制作的 APK。
在您的情况下,根据评论,Instant 运行 似乎是导致 multidex 式行为的原因。这可能与 Instant 运行 如何尝试修补已安装的 APK,而不是将新的 APK 推送到设备或模拟器有关。
因此,要么禁用 Instant 运行,要么不分析 运行 输出,而是专注于通过其他方式构建的 APK。