发布于 2026-01-06 15 阅读
0

我们是如何利用 React Native 将生产环境 APK 的大小减少了 70% 的?

我们是如何利用 React Native 将生产环境 APK 的大小减少了 70% 的?

在开发 React Native 时,Android 应用的大小是我们最关注的问题之一。因为它会给低端设备带来存储和性能方面的挑战。

此外,APK文件体积较大的应用程序也会降低部分用户的下载意愿。

因此,我们决定减小 Android 应用的apk大小📦,并开始研究和分析哪些因素会导致应用体积膨胀,这帮助我们将生产 apk 的大小从 减少43 MB17 MB

Hello World本文将通过一个简单的 React Native 应用来解释减小 APK 大小的整个过程。

让我们开始吧

创建一个名为“HelloWorld”的 React Native 应用

 npx react-native init HelloWorld 

应用HelloWorld创建成功啦🎉🎉

  • 我们移除了样板代码App.js,并将其替换为仅显示文本的内容。Hello World !
import React from 'react';
import {View, StyleSheet, Text} from 'react-native';

const App = () => {
  return (
    <>
      <View style={styles.container}>
        <Text>Hello World !</Text>
      </View>
    </>
  );
};

const styles = StyleSheet.create({
  container: {
    flex: 1,
    alignItems: 'center',
    justifyContent: 'center',
  },
});

export default App;

让我们创建一个正式版HelloWorld应用的 APK 文件,看看 APK 文件的大小是多少。

  • 我们注意到,我们得到的 apk 文件大小竟然有23 MB🙄 这么大,而它实际上只是一个包含文本的应用程序Hello World !

为什么会react-native创建一个apk23 MB 大小的文件 🤔 ?

在阅读了 React Native 官方文档后,我们发现 Google Play 商店中的所有应用都使用不同的 ABI,例如:

  • armeabi-v7a
  • arm64-v8a
  • x86
  • x86_64

因此,为了支持上述所有 ABI,react-native默认情况下会创建一个Universal APK包含不同设备配置所需文件的单个文件,apk这使得 apk 的大小膨胀到23 MB

什么是ABI 🤔?

不同的安卓设备使用不同的CPU,而这些CPU又支持不同的指令集。每种CPU和指令集的组合都有其自身的应用程序二进制接口(ABI)。

我们是如何减小 APK 文件大小的?

我们不再使用生成格式,而是Universal apk改用了一种全新的发布格式,称为.aab

生成 aab 文件并上传到 Google Play 商店后,应用程序大小大幅减少了 70%,7.29 MB23 MB🍻

看起来很有趣,对吧😎

那么它究竟是什么aab?它又是如何帮助我们的呢?

AAB(Android App Bundle)是谷歌推出的一种新的发布格式,其中包含了应用程序的所有编译代码和资源。

Google Play 使用上传的应用包,针对每种设备配置和硬件生成并提供优化且更小的 APK,因此只会下载特定设备运行应用所需的代码和资源,不会捆绑任何额外的文件,从而大幅apk减小apk应用大小。

下面的流程图将帮助您更好地了解整个过程。

APK

AAB

如何生成aab?

生成 aab 非常简单。您可以从 aab 生成Android studio,也可以通过aab 生成terminal

Android Studio

终端

 cd android/ && ./gradlew bundleRelease

生成的 AAB 文件位于android/app/build/outputs/bundle/release/app.aab,可以上传到 Google Play。

就这些啦!如果还有任何疑问,请在下方评论区留言哦🍻

文章来源:https://dev.to/srajesh636/how-we-reduced-our-production-apk-size-by-70-in-react-native-1lci