mPaaS 开启multidex ,也没有问题 可以正常运行,会有其他什么影响吗?
版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。
mPaaS是一个移动应用开发平台,提供了一系列的移动开发和运营服务。对于开启multidex的影响,主要有以下几个方面:
应用包大小:开启multidex会增加应用的包大小,因为需要引入额外的库和文件。这可能会对应用的下载和安装速度产生影响,并占用用户设备的存储空间。
应用启动时间:开启multidex会增加应用启动时间,因为需要加载额外的类和资源。这可能会导致应用启动变慢,影响用户的使用体验。
内存占用:开启multidex会增加应用的内存占用,因为需要加载额外的类和资源。如果设备内存较小,可能会导致应用崩溃或者出现其他问题。
兼容性问题:开启multidex可能会导致一些兼容性问题,特别是在Android 5.0及以下版本上。在这些版本上,需要进行额外的配置和适配,以确保应用的兼容性。
开启 multidex(多 Dex 文件)对于 mPaaS 应用正常运行通常没有直接的负面影响。Multidex 允许应用程序突破 Dex 文件的 64K 方法限制,以支持更大型的代码库和更多的第三方库。
然而,需要注意以下几点:
冷启动时间略有增加:由于 Android 系统在加载额外的 Dex 文件时需要一些额外的时间,所以启动应用程序可能会比单个 Dex 文件的应用程序稍微慢一些。这种冷启动延迟通常是微不足道的,但在某些情况下可能会被察觉到。
方法调用速度较慢:由于方法调用涉及到跨 Dex 边界的转换,可能导致略微的性能损失。在多 Dex 的情况下,方法调用需要更多的处理和时间。然而,对于大多数应用程序来说,这个性能损失是可以忽略的。
构建和维护复杂性增加:使用 multidex 后,构建过程会变得更复杂,因为需要管理和处理多个 Dex 文件。此外,如果你依赖的库或框架不支持 multidex,可能需要进行一些额外的配置和处理。
总体而言,启用 multidex 对于支持更大型代码库和解决 64K 方法限制是非常有用的。但要注意,在使用 multidex 时,确保你的应用程序仍能够在预期的性能范围内运行,并且库和框架也支持这种配置。
MultiDex 是为了解决 Android 5.0 以下 Dex 方法的数量或者类的数量超过 65535 这个问题的方案。
在当前应用功能膨胀的情况下,我们需要对 Dex 做一些规划。
由于 mPaaS 接入方式是基于 bundle。在打包的时候,bundle 会尝试和用户的 Dex 做一次合并,但 mPaaS 会优先保证用户的首个 Dex 的顺序。
在这种情况下,为了接入 mPaaS,请您尽量避免在 Application 中添加过多的逻辑,使得第一个 Dex 尽可能的小。您可以使用 --main-dex-list 参数指定您在第一个 Dex 中的类。
如果您的 APK 中第一个 Dex 类过多导致 mPaaS 必要的几个 bundle 无法合并的话,可能在 Android 5.0 以下的运行时环境中造成无法启动框架(ClassNotFound 或者 ClassNotDef 等问题)。
Portal 和 Bundle 不建议自行介入 MultiDex,除非您是单 portal 工程,需要使用multiDexEnabled true。如果您的 Bundle 过大,目前只能使用拆分 bundle 的方式进行,不要在 bundle 中开启 multidex 支持。