React Native Gradle плагин¶
Это руководство описывает, как настроить React Native Gradle Plugin (часто называемый RNGP) при создании приложения React Native для Android.
Использование плагина¶
React Native Gradle Plugin распространяется в виде отдельного пакета NPM, который устанавливается автоматически с react-native
.
Плагин уже настроен для новых проектов, созданных с помощью npx react-native init
. Вам не нужно делать никаких дополнительных шагов для его установки, если вы создали свое приложение с помощью этой команды.
Если вы интегрируете React Native в существующий проект, обратитесь к соответствующей странице: она содержит конкретные инструкции по установке плагина.
Настройка плагина¶
По умолчанию плагин будет работать из коробки с разумными настройками по умолчанию. Вы должны обратиться к этому руководству и настраивать поведение только в том случае, если вам это необходимо.
Для настройки плагина вы можете изменить блок react
в вашем android/app/build.gradle
:
1 2 3 4 5 6 7 8 9 |
|
Каждый ключ конфигурации описан ниже:
root
.¶
Это корневая папка вашего проекта React Native, т.е. место, где находится файл package.json
. По умолчанию это ...
. Вы можете настроить его следующим образом:
1 |
|
reactNativeDir
.¶
Это папка, в которой находится пакет react-native
. По умолчанию это ../node_modules/react-native
.
Если вы находитесь в монорепо или используете другой пакетный менеджер, вы можете использовать настройку reactNativeDir
в соответствии с вашими установками.
Вы можете настроить его следующим образом:
1 |
|
codegenDir
¶
Это папка, в которой находится пакет react-native-codegen
. По умолчанию это ../node_modules/react-native-codegen
.
Если вы находитесь в монорепо или используете другой менеджер пакетов, вы можете настроить codegenDir
в соответствии с вашими настройками.
Вы можете настроить его следующим образом:
1 |
|
cliFile
¶
Это файл точки входа для React Native CLI. По умолчанию это ../node_modules/react-native/cli.js
.
Файл точки входа необходим, поскольку плагин должен вызывать CLI для компоновки и создания вашего приложения.
Если вы находитесь в монорепо или используете другой менеджер пакетов, вы можете настроить cliFile
в соответствии с вашими настройками.
Вы можете настроить его следующим образом:
1 |
|
debuggableVariants
.¶
Это список вариантов, которые являются отлаживаемыми.
По умолчанию плагин считает debuggableVariants
только debug
, а release
— нет. Если у вас есть другие
варианты (например, staging
, lite
и т.д.), вам нужно будет настроить это соответствующим образом.
Варианты, перечисленные как debuggableVariants
, не будут поставляться в комплекте, поэтому для их запуска вам понадобится Metro.
Вы можете настроить его следующим образом:
1 |
|
nodeExecutableAndArgs
.¶
Это список команды узла и аргументов, которые должны быть вызваны для всех скриптов. По умолчанию это [node]
, но может быть настроен для добавления дополнительных флагов следующим образом:
1 |
|
bundleCommand
.¶
Это имя команды bundle
, которая будет вызвана при создании пакета для вашего приложения. Это полезно, если вы используете RAM Bundles. По умолчанию это bundle
, но может быть настроена для добавления дополнительных флагов следующим образом:
1 |
|
bundleConfig
.¶
Это путь к файлу конфигурации, который будет передан в команду bundle --config <file>
, если он указан. По умолчанию пусто (файл конфигурации не будет передан). Более подробную информацию об объединении конфигурационных файлов можно найти в документации CLI. Может быть настроен следующим образом:
1 |
|
bundleAssetName
.¶
Это имя файла пакета, который должен быть сгенерирован. По умолчанию index.android.bundle
. Может быть настроено следующим образом:
1 |
|
entryFile
¶
Входной файл, используемый для генерации пакета. По умолчанию используется поиск index.android.js
или index.js
. Может быть настроен следующим образом:
1 |
|
extraPackagerArgs
.¶
Список дополнительных флагов, которые будут переданы команде bundle
. Список доступных флагов находится в документации CLI. По умолчанию пустой. Может быть настроен следующим образом:
1 |
|
hermesCommand
¶
Путь к команде hermesc
(компилятор Hermes). React Native поставляется с версией компилятора Hermes в комплекте, поэтому вам обычно не нужно будет настраивать его. По умолчанию плагин будет использовать правильный компилятор для вашей системы.
hermesFlags
¶
Список флагов для передачи в hermesc
. По умолчанию это ["-O", "-output-source-map"]
. Вы можете настроить его следующим образом
1 |
|
Использование ароматов и вариантов сборки¶
При создании приложений Android вы можете захотеть использовать custom flavors, чтобы иметь различные версии вашего приложения, начиная с одного проекта.
Обратитесь к официальному руководству по Android, чтобы настроить пользовательские типы сборки (например, staging
) или пользовательские вкусы (например, full
, lite
и т.д.).
По умолчанию новые приложения создаются с двумя типами сборки (debug
и release
) и без пользовательских вкусов.
Комбинация всех типов сборки и всех вкусов создает набор вариантов сборки. Например, для типов сборки debug
/staging
/release
и full
/lite
у вас будет 6 вариантов сборки: fullDebug
, fullStaging
, fullRelease
и так далее.
Если вы используете пользовательские варианты помимо debug
и release
, вам необходимо указать React Native Gradle Plugin, какие из ваших вариантов являются отлаживаемыми, используя конфигурацию debuggableVariants
следующим образом:
1 2 3 4 5 |
|
Это необходимо, потому что плагин пропустит JS-пакет для всех debuggableVariants
: для их запуска вам понадобится Metro. Например, если вы перечислите fullStaging
в debuggableVariants
, вы не сможете опубликовать его в магазине, так как он будет лишен пакета.
Что плагин делает под капотом?¶
React Native Gradle Plugin отвечает за настройку сборки вашего приложения для отправки приложений React Native в продакшн.
Плагин также используется внутри сторонних библиотек для запуска Codegen, используемого для Новой архитектуры.
Вот краткое описание обязанностей плагина:
- Добавить задачу
createBundle<Variant>JsAndAssets
для каждого не отлаживаемого варианта, которая отвечает за вызов командbundle
,hermesc
иcompose-source-map
. - Установка правильной версии зависимостей
com.facebook.react:react-android
иcom.facebook.react:hermes-android
, чтение версии React Native изpackage.json
командыreact-native
. - Настройка соответствующих Maven-репозиториев (Maven Central, Google Maven Repo, локальный Maven-репозиторий JSC и т.д.), необходимых для потребления всех необходимых Maven-зависимостей.
- Настройка NDK для создания приложений, использующих новую архитектуру.
- Настройка полей
buildConfigFields
, чтобы вы могли знать во время выполнения, включены ли Hermes или Новая архитектура. - Настройка порта Metro DevServer в качестве ресурса Android, чтобы приложение знало, через какой порт подключаться.
- Вызов React Native Codegen, если библиотека или приложение использует Codegen для новой архитектуры.