уменьшение размера Apk в react native android - PullRequest
0 голосов
/ 16 июня 2020

В настоящее время размер моего приложения составляет 17 МБ. Но только 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"
  }

Моя собственная версия реакции: "version": "0.62.2"

Я установил для этих двух значение true:

def enableSeparateBuildPerCPUArchitecture = true
def enableProguardInReleaseBuilds = true

Когда я проверял анализатор приложения с помощью android студия. Я получил это: Здесь

Я не уверен, что такое 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) размер моего приложения увеличился?

Спасибо

Ответы [ 3 ]

3 голосов
/ 16 июня 2020

Я настоятельно рекомендую изучить Android App Bundles . Это, вероятно, наиболее эффективный способ уменьшить размер вашего APK. разные APK для каждого возможного варианта устройства вашего приложения. Поэтому, когда у кого-то с экраном xhdpi загруженный APK не имеет ресурсов hdpi, xxhdpi или xxxhdpi, он получает только xhdpi. Еще одна значительная экономия в размере заключается в том, что вам не нужно загружать весь скомпилированный код для вашей собственной архитектуры ЦП. Если у кого-то есть устройство armv7, он загружает только собственные компиляции armv7. -12 МБ APK.

Настройка пакетов приложений - хлопот и может быть сложной для существующих приложений, но вам нужно сделать это только один раз, и оно того стоит.

2 голосов
/ 16 июня 2020

libjsc.so - это движок javascript, который запускает React Native на устройстве. Я думаю, что Hermes - это новая замена для этого.

libflipper.sp, вероятно, имеет отношение к приложению отладки flipper. Он добавляется по умолчанию в новые приложения React Native. https://fbflipper.com/

Вот хороший ресурс о внутренней работе android и React Native. https://medium.com/@yushulx / react-native-for- android -basi c -knowledge-before-coding-83f5d15d7d65

React Native обычно немного увеличивает размер приложения. Насколько я могу судить, необходимо включить RN, работающий javascript поверх магистрали Java / Kotlin. Возможно, вам удастся удалить из своего приложения флиппер. Но на самом деле это действительно хороший инструмент.

Также enableSeparateBuildPerCPUArchitechture должен создавать несколько файлов apk. Если вы не получаете там несколько файлов apk, значит, вы фактически не разделяете библиотеки архитектуры.

Каждый раз, когда вы добавляете библиотеку, вы увеличиваете размер apk.

Совет для профессионалов: не используйте ^ для зависимостей. Особенно React Native. React native - зверь быстро движется и часто ломается. Если вы используете ^, вы потенциально принимаете критические изменения каждый раз при обновлении библиотеки. Эти изменения может быть сложно отследить, когда у вас много зависимостей в React Native.

1 голос
/ 16 июня 2020

попробуйте эту команду cd android. gradlew AssemblyRelease создаст формат aab. Ниже приведены преимущества Android App Bundle по сравнению с APK в магазине приложений

1) Меньший размер загрузки 2) Функции приложения по запросу 3) Модули только для активов

в моем примере размер моего приложения был 25 мб и уменьшилось на 70%

...