我们是如何利用 React Native 将生产环境 APK 的大小减少了 70% 的?
在开发 React Native 时,Android 应用的大小是我们最关注的问题之一。因为它会给低端设备带来存储和性能方面的挑战。
此外,APK文件体积较大的应用程序也会降低部分用户的下载意愿。
因此,我们决定减小 Android 应用的apk大小📦,并开始研究和分析哪些因素会导致应用体积膨胀,这帮助我们将生产 apk 的大小从 减少43 MB到17 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 MB从23 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





