开发者社区 问答 正文

mPaaS 开启multidex ,也没有问题 可以正常运行,会有其他什么影响吗?

mPaaS 开启multidex ,也没有问题 可以正常运行,会有其他什么影响吗?

展开
收起
青城山下庄文杰 2023-07-31 11:18:26 77 分享 版权
4 条回答
写回答
取消 提交回答
  • pb 方式不支持用这个-此回答整理自钉群“mPaaS接入问题官方答疑【2群】”

    2023-08-01 09:58:36
    赞同 展开评论
  • 北京阿里云ACE会长

    mPaaS是一个移动应用开发平台,提供了一系列的移动开发和运营服务。对于开启multidex的影响,主要有以下几个方面:

    应用包大小:开启multidex会增加应用的包大小,因为需要引入额外的库和文件。这可能会对应用的下载和安装速度产生影响,并占用用户设备的存储空间。

    应用启动时间:开启multidex会增加应用启动时间,因为需要加载额外的类和资源。这可能会导致应用启动变慢,影响用户的使用体验。

    内存占用:开启multidex会增加应用的内存占用,因为需要加载额外的类和资源。如果设备内存较小,可能会导致应用崩溃或者出现其他问题。

    兼容性问题:开启multidex可能会导致一些兼容性问题,特别是在Android 5.0及以下版本上。在这些版本上,需要进行额外的配置和适配,以确保应用的兼容性。

    2023-07-31 21:13:01
    赞同 展开评论
  • 开启 multidex(多 Dex 文件)对于 mPaaS 应用正常运行通常没有直接的负面影响。Multidex 允许应用程序突破 Dex 文件的 64K 方法限制,以支持更大型的代码库和更多的第三方库。

    然而,需要注意以下几点:

    1. 冷启动时间略有增加:由于 Android 系统在加载额外的 Dex 文件时需要一些额外的时间,所以启动应用程序可能会比单个 Dex 文件的应用程序稍微慢一些。这种冷启动延迟通常是微不足道的,但在某些情况下可能会被察觉到。

    2. 方法调用速度较慢:由于方法调用涉及到跨 Dex 边界的转换,可能导致略微的性能损失。在多 Dex 的情况下,方法调用需要更多的处理和时间。然而,对于大多数应用程序来说,这个性能损失是可以忽略的。

    3. 构建和维护复杂性增加:使用 multidex 后,构建过程会变得更复杂,因为需要管理和处理多个 Dex 文件。此外,如果你依赖的库或框架不支持 multidex,可能需要进行一些额外的配置和处理。

    总体而言,启用 multidex 对于支持更大型代码库和解决 64K 方法限制是非常有用的。但要注意,在使用 multidex 时,确保你的应用程序仍能够在预期的性能范围内运行,并且库和框架也支持这种配置。

    2023-07-31 20:59:16
    赞同 展开评论
  • 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 支持。

    2023-07-31 20:36:35
    赞同 展开评论