【问题标题】:React Native for small size apk with low internet bandwidthReact Native 适用于互联网带宽低的小型 apk
【发布时间】:2016-07-04 12:25:42
【问题描述】:

我正计划为互联网带宽较低的新兴市场开发一款应用。该应用程序严重需要互联网连接才能运行。
我需要这个应用程序有一个小的 apk 大小(不超过 10mb)并在 3G 网络上工作。
根据我的研究,如果我从 React Native 中删除 x86 JS 二进制文件,则 apk 大小可能小至 4mb。我想 4mb 不包括 JS 文件和图像,所以客户端需要在他/她第一次打开应用程序时下载,对吗?
如果我想要一个在 3G 上运行的 apk 大小小于 10mb 的应用程序,那么使用 React Native 对我来说一般来说是一个好主意吗?提高效率的最佳实践是什么?

【问题讨论】:

    标签: performance react-native network-efficiency


    【解决方案1】:

    除了删除影响很小的 js 之外,您应该使用二进制资源,例如字体和嵌入的图像。 除此之外,这些技术可能对您有用:

    1) 启用 Proguard:

    要启用 Proguard,请编辑 android/app/build.gradle:

    def enableProguardInReleaseBuilds = true
    

    生成单独的构建:

    2) 在你的 app/build.gradle 集中

    def enableSeparateBuildPerCPUArchitecture = true
    

    3) 从 abiFilters 中移除 x86

    以下是对您可能会觉得有用的链接的参考:

    关于减小 apk 大小的博客:

    https://realm.io/news/reducing-apk-size-native-libraries/

    链接 Play 商店中最小的 RN 应用之一:

    https://github.com/sonnylazuardi/ziliun-react-native

    关于 apk 大小的 React Native 问题的有用讨论:

    https://github.com/facebook/react-native/issues/5037

    【讨论】:

    • 我有点好奇为什么 JS 文件不会真正影响 apk 的大小。我添加了一个 1mb 的 js 库。我似乎并没有真正增加apk的大小。为什么会这样?
    • 该JS文件的部分是否正在程序中执行?我认为,如果文件没有被执行,它们不会包含在最终版本中。(这是我的猜测)
    • js 文件捆绑在应用程序中。它是一个已发布的签名 apk。那些js文件应该存在于某个地方..
    • @abeikverdi 我现在想通了。这是因为 Webpack。如果未使用该库,则它不与源捆绑
    【解决方案2】:

    如果您只想要应用较小的应用,请使用原生平台本身。本机 android 应用程序的最小大小为 1 MB。您不能将 React Native 应用程序的大小减小到小于 4 MB。

    【讨论】:

    • 对,4mb 对我有用,只要它只有 4mb。 js 文件大小是否包含在这 4mb 中?
    • 是的。初始 js 将被包括在内。
    • 客户端第一次加载应用后,如果设备从我的服务器获取js怎么办?这会减少 apk 的大小吗?
    • 这可能会减小应用程序的大小。但是,我不知道有什么办法。
    • Expo 正在这样做,但我很困惑你们的构建大小是 4 MB,我的最小构建大小是 9 Mb。
    猜你喜欢
    • 2019-06-22
    • 2023-04-08
    • 2011-09-12
    • 2018-03-31
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-11-27
    • 1970-01-01
    相关资源
    最近更新 更多