How to reduce the size of an expo/react-native app on Android

后端 未结 9 1069
渐次进展
渐次进展 2020-11-30 20:12

I am developing a small dictionary app by using react native with expo.

As I am compiling to Apk file. The size goes up to 30mb and after having installed on a devi

相关标签:
9条回答
  • 2020-11-30 20:50

    Upgrade react-native to newer version, for different versions it is giving different size apk.

    for 0.57 it was ≈12mb

    for 0.59.3 it was ≈30mb

    and for 0.59.9 it was ≈15mb

    always try to use updated react-native version

    0 讨论(0)
  • 2020-11-30 20:54

    the expo is for development the app you should migrate to react-native for production

    • make a new react app "react-native init"

    • Copy the source files over from Expo project

    • Install all dependencies of the Expo project except Expo specific libraries.

    • Make necessary adjustments to app.json file

    • Download the signing key of your Android app from Expo using exp

    • fetch:android:keystore and set it up



    This reduces your app dramatically you can also enable proguard and specific build for cpu architecture

    buildTypes {
        release {
            debuggable false
            minifyEnabled true
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }
     }
    



    for more info visit https://medium.com/@aswinmohanme/how-i-reduced-the-size-of-my-react-native-app-by-86-27be72bba640

    using expo component

    after you done and want publish with less size or just wan't to use a native library expo give you an option called ExpoKit this also can be used with already build with native code react projects

    1-run command expo eject to add ExpoKit (choose the "ExpoKit" option)
    (no need to do this if you have copied files manually or using native project)
    2 -start expo packager with expo start.Leave this running and continue with the following steps.
    3- link library for android and ios, this command mostly do this react-native link, sometime this will not work and you should do it manually for this means visit expokit
    PS: I didn't test this so if this not work inform me

    0 讨论(0)
  • 2020-11-30 20:55

    Upgrade expo version to 31.exporecently launched single-SDK builds for Android. These builds contain only the SDK version the app uses when built and are both faster and slimmer. it helps for smaller standalone app build size. release note

    0 讨论(0)
  • 2020-11-30 20:58

    There are basically two options for reducing size of apk file from 32mb(expo) to 7mb(react-native cli).

    1. Detach from expo
    2. create new react-native cli project and copy all source from expo to new react-native project.
    0 讨论(0)
  • 2020-11-30 21:02

    Vote over here so that expo can look into the feature https://expo.canny.io/feature-requests/p/reducing-app-size Problem is react-native uses hermes so the packaging is similar to what native android app from android studio can do but since herme is like latest about 1-2year expo team has not made the support for hermes please vote.. And I also totally agree with @jakobinn

    0 讨论(0)
  • 2020-11-30 21:04

    Make following changes in build.gradle file located at:

    ./android/app/build.gradle
    

    Remove x86 from abi filters.

    splits {
            abi {
                reset()
                enable true
                universalApk false
                include "armeabi-v7a", "x86"
            }
        }
    

    Generate different APK's for different architecture

    def enableSeparateBuildPerCPUArchitecture = true
    

    Enable ProGuard :

    def enableProguardInReleaseBuilds = true
    

    Also set minifyEnabled true and shrinkResources true

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

    Also, you can have different build types for development and release builds(depends on your user base)

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

    Also don't forget to remove the unused FONT Files

    0 讨论(0)
提交回复
热议问题