【发布时间】:2021-10-25 11:10:38
【问题描述】:
我正在使用 react native 和 react-native 开发一个应用程序,它会在屏幕上显示我的名字。因为我正在编译为 Apk 文件。大小高达 27 MB。这是正常的吗?有什么方法可以减小应用程序的大小?谢谢各位
【问题讨论】:
标签: reactjs react-native react-native-android
我正在使用 react native 和 react-native 开发一个应用程序,它会在屏幕上显示我的名字。因为我正在编译为 Apk 文件。大小高达 27 MB。这是正常的吗?有什么方法可以减小应用程序的大小?谢谢各位
【问题讨论】:
标签: reactjs react-native react-native-android
除了 Hermes,你可以尝试移除一些可以替换的库。从您的问题中,我可以感觉到您的应用是一个简单的基本应用,但如果您有的话,您可以尝试查看哪些库占用了大量存储空间。
至于我自己,我删除了 @react-native-firebase/firestore 并减少了大约 5~10MB,以及 5 分钟的构建时间(没有意识到这是一个如此庞大的包,但公平地说,firebase sdk v9 的目标是用 modular imports 解决这个问题,但 react-native 库还不支持)。
除此之外,您的问题很可能与this SO question 重复,因此您可以检查一下。
【讨论】:
如果您想详细了解 .apk 文件为何如此大,可以使用存档工具打开它,就像打开 .zip 文件一样。捆绑一个新的 react-native 项目我最终得到一个大小为 31.4 MB 的 .apk,所以是的,我会说这是正常的。这是我生成的 apk 包含的内容
如您所见,大部分大小来自 lib 目录的子文件夹。这些目录包含不同平台的 .so 文件(编译库)。 docs中提到了这一点:
默认情况下,生成的 APK 包含 x86 和 ARMv7a CPU 架构。这样可以更轻松地共享运行的 APK 在几乎所有的安卓设备上。然而,这样做的缺点是 任何设备上都会有一些未使用的本机代码,导致 不必要的大 APK。
如果您想减小大小,请使用Proguard 来减小 apk 的大小。
【讨论】:
转到 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 进行安装
【讨论】: