Пролог.
Многие разработчики получили электронное письмо от Google об изменениях в Google Play Marker.
С 1 августа 2019 года в Google Play будет приниматься только 64-битная версия приложения, поэтому, если вам повезло и у вас есть приложение для Android, написанное на Java или Kotlin - вы можете пропустить эту статью, в противном случае - читать дальше ...
Вы можете прочитать больше здесь, в Блоге Google.
НЕ ПАНИКА! Я объясню, что вам нужно сделать.
Эпизод 1. Небольшая редакция последних новостей.
- Изменения в 2019 году:
Google пытается перевести все мобильные приложения (кроме игр, написанных на Unity) на 64-битную поддержку.
Если вы не выполните никаких действий:
- ваше приложение по-прежнему будет доступно в Google Play Market
- все обновления, не поддерживающие 64-битную версию, будут проигнорированы
Это означает, что вы не сможете обновить приложение, если не добавите 64-разрядную версию поддержки.
- Изменения в 2021 году:
Все приложения, не поддерживающие 64-битную версию, будут недоступны в Google Play Market (включая игры, написанные на движке Unity).
- Исключения:
- Приложения, работающие на Android 8 Oreo или более ранней версии, не нуждаются в поддержке 64-разрядных версий.
- Android TV и Wear OS не нуждаются в поддержке 64-битных версий (но это не совсем ReactNative, да)
Эпизод 2. Что делать?
Спасибо Facebook и ReactCommunity! По состоянию на 12 марта 2019 года ReactNative выпускает новую версию 0.59
.
Вы можете прочитать примечания к выпуску ReactNative 0.59
здесь.
Да, они добавили ловушки, но здесь важна поддержка 64-битной версии на Android.
Итак, первый и единственный шаг, который вам нужно сделать, - это обновить версию ReactNative до 0.59.1
или выше.
Важно. Обновление должно быть выполнено для 0.59.1
при аренде. Это связано с отсутствием команд для вашего приложения gradle.
Если для вас так важно иметь 0.59
, есть некоторая информация о присутствии ведьмы, которую вам нужно проверить, а если она отсутствует - просто добавьте ее.
Следуйте официальному руководству по обновлению здесь, чтобы обновить ReactNative.
Или вы можете прочитать мою статью для альтернативы здесь.
Шаги довольно просты:
- Просто беги:
react-native upgrade <version>
2. Разрешите конфликт с помощью git
и вуаля! И все готово.
Когда вы закончите, давайте рассмотрим то, что должно быть в вашем проекте ReactNative.
Нам нужно взглянуть на ваш менеджер ABI (двоичный интерфейс приложения) в проекте Android; в основном это директивы устройству о том, какой набор команд он должен использовать.
Взглянем на файл /android/app/build.gradle
, нас интересует блок abi
:
android { ... splits { abi { reset() enable enableSeparateBuildPerCPUArchitecture universalApk false include "armeabi-v7a", "x86", "arm64-v8a", "x86_64" } } // In case, if you're using `ndk` defaultConfig { ndk { // Tells Gradle to build outputs for the following ABIs and package // them into your APK. abiFilters "armeabi-v7a", "x86", "arm64-v8a", "x86_64" } } applicationVariants.all { variant -> variant.outputs.each { output -> def versionCodes = ["armeabi-v7a":1, "x86":2, "arm64-v8a": 3, "x86_64": 4] def abi = output.getFilter(OutputFile.ABI) if (abi != null) { output.versionCodeOverride = versionCodes.get(abi) * 1048576 + defaultConfig.versionCode } } } ... }
ВАЖНО. Убедитесь, что в include
и versionCodes
у вас есть "arm64-v8a"
и "x86-64"
.
ВАЖНО. Если вы используете ndk
, убедитесь, что у вас тоже есть "arm64-v8a"
и "x86-64"
.
Давайте рассмотрим конфигурацию ABI-менеджера, чтобы узнать, что там происходит:
armeabi-v7a
иx86
- поддержка наборов инструкций на x86 (32-битных) процессорахarm64-v8a
иx86-64
- наборы инструкций для 64-битных процессоров.
Благодаря этим директивам мы сообщаем нашему приложению, что оно может работать на 32- и 64-битных процессорах.
Если вам чего-то не хватает build.gradle
, просто добавьте это.
Обновлять
Важная вещь, которую вам нужно знать о поддержке нескольких архитектур - это увеличение размера вашего
.apk
файла. Не беспокойтесь, это не имеет ничего общего с самим JS.
Все, что вам нужно сделать, это
bundle
ваше приложение Android, это означает заменить ваш.apk
на.aab
.
Если вы следовали документации ReactNative о доставке в Google Play, скорее всего, вы использовали эту команду для создания приложения:
./gradlew assembleRelease
Вам нужно заменить эту команду на:
./gradlew bundleRelease
Будет создан
.aab
файл, после чего вы сможете выполнить доставку как обычно, но теперь вам нужно использовать функцию Подписание приложений в Google Play, чтобы подписать свое приложение и все.
Как работает пакет Android, вы можете отреагировать в официальной документации здесь или вы можете прочитать эту статью Уменьшите размер своего приложения React Native в 3 раза с помощью одной простой команды »для более широкого обзора.
Эпилог.
Я знаю, что обновление ReactNative может быть болезненным, но новые спецификации Google Play Market заставляют нас актуализировать наши проекты. В конце концов, благодаря этим изменениям у вас по-прежнему будет хороший прирост производительности и хуки в вашем проекте ReactNative, так что это не высокая цена.
Хорошо провести время!
Хотите меня нанять или просто поболтать? - через LinkedIn.