【问题标题】:How to reduce the size of React Native .apk file?如何减小 React Native .apk 文件的大小?
【发布时间】:2021-10-25 11:10:38
【问题描述】:

我正在使用 react native 和 react-native 开发一个应用程序,它会在屏幕上显示我的名字。因为我正在编译为 Apk 文件。大小高达 27 MB。这是正常的吗?有什么方法可以减小应用程序的大小?谢谢各位

【问题讨论】:

标签: reactjs react-native react-native-android


【解决方案1】:

将您的引擎更改为Hermes,您应该会看到文件大小减小和许多其他性能改进。

关注this启用它。

【讨论】:

    【解决方案2】:

    除了 Hermes,你可以尝试移除一些可以替换的库。从您的问题中,我可以感觉到您的应用是一个简单的基本应用,但如果您有的话,您可以尝试查看哪些库占用了大量存储空间。

    至于我自己,我删除了 @react-native-firebase/firestore 并减少了大约 5~10MB,以及 5 分钟的构建时间(没有意识到这是一个如此庞大的包,但公平地说,firebase sdk v9 的目标是用 modular imports 解决这个问题,但 react-native 库还不支持)。

    除此之外,您的问题很可能与this SO question 重复,因此您可以检查一下。

    【讨论】:

      【解决方案3】:

      如果您想详细了解 .apk 文件为何如此大,可以使用存档工具打开它,就像打开 .zip 文件一样。捆绑一个新的 react-native 项目我最终得到一个大小为 31.4 MB 的 .apk,所以是的,我会说这是正常的。这是我生成的 apk 包含的内容

      • 应用程序发布.apk 100 %
        • okhttp3 0.064 %
        • 科特林 0.077 %
        • META-INF 0.33 %
        • 资产 0.85 %
        • 分辨率 1.93 %
        • 库 89.77 %
          • armeabi-v7a 19.32 %
          • x86 22.73 %
          • x86_64 26.14 %
          • arm64-v8a 23.86 %

      如您所见,大部分大小来自 lib 目录的子文件夹。这些目录包含不同平台的 .so 文件(编译库)。 docs中提到了这一点:

      默认情况下,生成的 APK 包含 x86 和 ARMv7a CPU 架构。这样可以更轻松地共享运行的 APK 在几乎所有的安卓设备上。然而,这样做的缺点是 任何设备上都会有一些未使用的本机代码,导致 不必要的大 APK。

      如果您想减小大小,请使用Proguard 来减小 apk 的大小。

      【讨论】:

        【解决方案4】:

        转到 android\app\build.gradle 并设置此选项,此外您还可以启用 hermes

        def enableSeparateBuildPerCPUArchitecture = true
        
        
        def enableProguardInReleaseBuilds = true
        

        如果你想全部合并,它将返回模拟器并分别发布 apk,你可以使用 .aab 格式而不是 apk . playstore 使用 .aab 并安装适合用户移动版本的应用程序版本。您的 27mb 文件在 .aab 中的实际构建/安装中几乎不会 7-8mb,但对于个人使用或上面的测试解决方案,最好是 arm-v7 版本的 apk 运行几乎每个 android手机所以从发布版本中选择 armv7 进行安装

        【讨论】:

          最近更新 更多