如何减少react-native应用程序的大小

use*_*876 11 react-native react-native-android expo

我正在开发一个小字典应用程序,使用本机与本世纪的反应.

因为我正在编译Apk文件.尺寸达到30mb并且安装在设备上,它达到80mb.

这是正常的吗?

有没有办法减少应用程序的大小?

感谢你们.

jak*_*inn 39

对于使用 expo 的 android APK 包,您可以使用以下命令:

expo build:android -t app-bundle
Run Code Online (Sandbox Code Playgroud)

将其上传到 Play 商店后,大小会小得多。这与 React Native SDK 32 及更早版本相关。


nim*_*adi 13

expo用于测试您应该迁移到应用于生产的本地应用程序

  • 制作一个新的反应应用程序" react-native init"

  • 从Expo项目复制源文件

  • 安装除Expo特定库之外的Expo项目的所有依赖项.
  • app.json文件进行必要的调整
  • 使用exp从Expo下载Android应用程序的签名密钥

  • fetch:android:keystore并设置它



这可以大大减少您的应用程序您还可以为cpu架构启用proguard和特定构建以

获取更多信息,请访问 https://medium.com/@aswinmohanme/how-i-uuced-the-size-of-my-react-native-app逐86-27be72bba640

使用expo组件

在你完成并希望以较小的尺寸发布或者只是想要使用本地库展示给你一个名为ExpoKit的选项,这也可以用于已经构建的本机代码反应项目

1-run命令expo eject添加ExpoKit(选择"ExpoKit"选项)
(如果您手动或使用本机项目复制文件,则无需执行此操作)
2 -start expo packager with expo start.Leave this running并继续执行以下步骤.
用于android和ios的3-链接库,这个命令大部分是这样做的react-native link,有时候这个不行,你应该手动做这个意味着访问expokit
PS:我没有测试这个,所以如果这不起作用告诉我

  • 请更具体地说明如何执行此操作:**安装除 Expo 特定库之外的 Expo 项目的所有依赖项** (5认同)
  • 错误的是,Expo 不仅仅用于应用程序测试。这个答案不适用于那些拥有 Expo 依赖库的人。 (5认同)
  • 它的效果很好,从32mb减少到9mb。而且,甚至7mb。太棒了 (3认同)
  • 如何在新项目中使用expo特定库? (3认同)
  • 它的效果很好,从32mb减少到9mb。而且,甚至7mb。太棒了 但是,另一个问题是,将其安装在设备上时,最大可达22mb。我怎么解决这个问题? (2认同)

aks*_*ore 9

build.gradle位于以下位置的文件中进行以下更改:

./android/app/build.gradle
Run Code Online (Sandbox Code Playgroud)

从abi过滤器中删除x86。

splits {
        abi {
            reset()
            enable true
            universalApk false
            include "armeabi-v7a", "x86"
        }
    }
Run Code Online (Sandbox Code Playgroud)

为不同的架构生成不同的APK

def enableSeparateBuildPerCPUArchitecture = true
Run Code Online (Sandbox Code Playgroud)

启用ProGuard:

def enableProguardInReleaseBuilds = true
Run Code Online (Sandbox Code Playgroud)

同时将minifyEnabled和true设置为true

buildTypes {
        release {
            minifyEnabled true
            shrinkResources true
            proguardFiles getDefaultProguardFile("proguard-android.txt"), "proguard-rules.pro"
        }
    }
Run Code Online (Sandbox Code Playgroud)

此外,您可以有不同的构建类型来进行开发和发布(取决于您的用户群)

buildTypes {
        debug {
            ndk {
                abiFilters "armeabi-v7a", "x86"
            }
            ....
        }

        release {
            ndk {
                abiFilters "armeabi-v7a", "arm64-v8a"
            }
            ....
        }
Run Code Online (Sandbox Code Playgroud)

同样不要忘记删除未使用的FONT文件

  • @Yossi我没有找到任何答案,我将API过滤器保留为`“armeabi-v7a”,“x86”` (2认同)

Ped*_*nso 6

到 2021 年,现在有一个更简单的选择来减少 Android 二进制文件的大小,因为弹出/迁移到纯 react-native、切换到裸工作流和在本地构建自己的二进制文件需要大量的工作和学习,如果你不知道的话如何做到这一点,或者没有你的环境和工具都设置好了。

在 app.json 中,进行以下更改:

"expo": {
...
  "android": {
    "enableDangerousExperimentalLeanBuilds": true
  }
}
Run Code Online (Sandbox Code Playgroud)

根据您的项目,仅此一项就可以将应用程序大小减少约 40-50%。

关于使用此选项,您应该了解一些事项,因此您应该阅读 https://github.com/expo/fyi/blob/master/managed-app-size.md。它仍然比弹出更容易。

最重要的是,在上传到 Play 商店后,您仍应使用应用程序包 (.aab) 将大小再缩小约 50%:

expo build:android -t app-bundle

  • 我给你这个“enableDangerousExperimentalLeanBuilds”:true 我的应用程序是 80mb,现在是 59mb (2认同)