【问题标题】:reducing Apk size in react native android减少反应原生android中的Apk大小
【发布时间】:2020-06-16 19:23:51
【问题描述】:

目前我的应用程序大小为 17 MB。但只有2个主屏幕。每个屏幕包含 3 个子屏幕。所以总共有6个屏幕。

My package.json :
  "dependencies": {
    "@react-native-community/async-storage": "^1.11.0",
    "@react-native-firebase/app": "^7.2.0",
    "@react-native-firebase/auth": "^8.0.4",
    "@react-native-firebase/firestore": "^7.1.5",
    "@react-navigation/native": "^5.5.0",
    "@react-navigation/stack": "^5.4.1",
    "firebase": "^7.15.0",
    "react": "16.11.0",
    "react-native": "0.62.2",
    "react-native-animatable": "^1.3.3",
    "react-native-asyncstorage": "^1.0.0",
    "react-native-dropdown-picker": "^3.0.0",
    "react-native-floating-action": "^1.20.0",
    "react-native-keyboard-done-button": "^1.0.0",
    "react-native-linear-gradient": "^2.5.6",
    "react-native-loading-spinner-overlay": "^1.1.0",
    "react-native-numeric-input": "^1.8.3",
    "react-native-safe-area-context": "^3.0.2",
    "react-native-screens": "^2.8.0",
    "react-native-scrollable-tab-view": "^1.0.0",
    "react-native-tag-input": "0.0.21",
    "react-native-vector-icons": "^6.6.0",
    "react-navigation": "^4.3.9",
    "react-navigation-stack": "^2.7.0"
  }

我的 react 原生版本:"version": "0.62.2"

我将这两个设置为 true :

def enableSeparateBuildPerCPUArchitecture = true
def enableProguardInReleaseBuilds = true

当我使用 android studio 检查应用程序分析器时。我懂了 : Here

我不确定libjsc.so, libflipper.sp 是什么以及为什么它会消耗这么多内存。我是新手,这是我的第一个应用程序。任何帮助都会很棒。

我也想知道因为react-native-scrollable-tab-view (top tab view), react-native-vector-icons, react-native-tag-input (just some tag input lib) 我的应用程序大小增加了?

谢谢

【问题讨论】:

    标签: javascript android reactjs react-native visual-studio-code


    【解决方案1】:

    我强烈建议您查看Android App Bundles。它们可能是减小 APK 大小的最有效方法。

    它的工作方式是编译您的捆绑包并将其上传到 Play 商店,然后 Google 的服务器将使用您的生产密钥库为您应用的每个可能的设备变体创建不同的 APK。因此,当有 xhdpi 屏幕的人,他们下载的 APK 没有 hdpi、xxhdpi 或 xxxhdpi 资产时,他们只会获得 xhdpi。另一个大的节省是您不必为您的本机 CPU 架构下载所有已编译的代码。如果有人有 armv7 设备,他们只会下载 armv7 原生编译。

    我的团队已经能够通过这种方法实现显着的节省,从 25 MB 的 APK 文件到我们的用户只需下载 10-12 MB 的 APK。

    应用程序包的设置很麻烦,并且对于现有应用程序来说可能很复杂,但您只需要做一次,这是值得的。

    【讨论】:

      【解决方案2】:

      libjsc.so 是在设备上运行 React Native 的 javascript 引擎。我认为Hermes 是新的替代品。

      libflipper.sp 可能与脚蹼调试应用程序有关。它默认添加到新的反应原生应用程序中。 https://fbflipper.com/

      这是关于 android 和 React Native 内部工作原理的一个很好的资源。 https://medium.com/@yushulx/react-native-for-android-basic-knowledge-before-coding-83f5d15d7d65

      React Native 通常会大大增加应用程序的大小。最好我能说有必要在 Java/Kotlin 主干之上包含一个运行 javascript 的 RN。您也许可以删除应用程序的鳍状肢部分。但它实际上是一个非常好的工具。

      另外enableSeparateBuildPerCPUArchitechture 应该产生多个apk 文件。如果您没有在那里获得多个 apk 文件,那么您实际上并没有拆分架构库。

      任何时候添加库都会增加 apk 的大小。

      专业提示:不要在依赖项上使用^。尤其是 React Native 的。 React Native 是一个快速移动的野兽,并且经常中断。如果您使用^,您可能会在库升级时接受重大更改。当您在 React Native 中有很多依赖项时,这些更改可能很难追踪。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 2014-09-25
        • 2022-01-11
        • 1970-01-01
        • 1970-01-01
        • 2017-03-02
        • 2021-08-03
        • 1970-01-01
        相关资源
        最近更新 更多