Plugin Gradle de React Native
Esta página fue traducida por PageTurner AI (beta). No está respaldada oficialmente por el proyecto. ¿Encontraste un error? Reportar problema →
Esta guía describe cómo configurar el Plugin Gradle de React Native (comúnmente llamado RNGP) al compilar tu aplicación de React Native para Android.
Uso del plugin
El Plugin Gradle de React Native se distribuye como un paquete NPM independiente que se instala automáticamente con react-native.
El plugin ya viene configurado para nuevos proyectos creados con npx react-native init. No necesitas pasos adicionales para instalarlo si creaste tu aplicación con este comando.
Si estás integrando React Native en un proyecto existente, consulta la página correspondiente: contiene instrucciones específicas para instalar el plugin.
Configuración del plugin
Por defecto, el plugin funcionará inmediatamente con valores predeterminados razonables. Solo deberías consultar esta guía y personalizar el comportamiento si lo necesitas.
Para configurar el plugin, puedes modificar el bloque react dentro de tu android/app/build.gradle:
apply plugin: "com.facebook.react"
/**
* This is the configuration block to customize your React Native Android app.
* By default you don't need to apply any configuration, just uncomment the lines you need.
*/
react {
// Custom configuration goes here.
}
Cada clave de configuración se describe a continuación:
root
Es la carpeta raíz de tu proyecto React Native, es decir, donde reside el archivo package.json. El valor predeterminado es ... Puedes personalizarlo así:
root = file("../")
reactNativeDir
Es la carpeta donde reside el paquete react-native. El valor predeterminado es ../node_modules/react-native.
Si estás en un monorepositorio o usas un gestor de paquetes diferente, puedes ajustar reactNativeDir según tu configuración.
Puedes personalizarlo así:
reactNativeDir = file("../node_modules/react-native")
codegenDir
Es la carpeta donde reside el paquete react-native-codegen. El valor predeterminado es ../node_modules/react-native-codegen.
Si estás en un monorepositorio o usas un gestor de paquetes diferente, puedes ajustar codegenDir según tu configuración.
Puedes personalizarlo así:
codegenDir = file("../node_modules/@react-native/codegen")
cliFile
Es el archivo de entrada para la CLI de React Native. El valor predeterminado es ../node_modules/react-native/cli.js.
Este archivo es necesario porque el plugin debe invocar la CLI para empaquetar y crear tu aplicación.
Si estás en un monorepositorio o usas un gestor de paquetes diferente, puedes ajustar cliFile según tu configuración.
Puedes personalizarlo así:
cliFile = file("../node_modules/react-native/cli.js")
debuggableVariants
Es la lista de variantes depurables (consulta uso de variantes para más contexto sobre variantes).
Por defecto, el plugin considera como debuggableVariants solo debug, mientras que release no lo es. Si tienes otras variantes (como staging, lite, etc.), deberás ajustar esto en consecuencia.
Las variantes listadas como debuggableVariants no incluirán un bundle pregenerado, por lo que necesitarás Metro para ejecutarlas.
Puedes personalizarlo así:
debuggableVariants = ["liteDebug", "prodDebug"]
nodeExecutableAndArgs
Es la lista de comandos y argumentos de Node que deben invocarse para todos los scripts. Por defecto es [node], pero puede personalizarse para añadir banderas adicionales así:
nodeExecutableAndArgs = ["node"]
bundleCommand
Es el nombre del comando bundle que se invocará al crear el bundle para tu aplicación. Es útil si usas RAM Bundles. Por defecto es bundle, pero puede personalizarse para añadir banderas adicionales así:
bundleCommand = "ram-bundle"
bundleConfig
Esta es la ruta a un archivo de configuración que se pasará a bundle --config <file> si se proporciona. Por defecto está vacío (no se proporcionará archivo de configuración). Más información sobre archivos de configuración para bundling puede encontrarse en la documentación de CLI. Se puede personalizar así:
bundleConfig = file(../rn-cli.config.js)
bundleAssetName
Este es el nombre del archivo bundle que se generará. Por defecto es index.android.bundle. Se puede personalizar así:
bundleAssetName = "MyApplication.android.bundle"
entryFile
El archivo de entrada utilizado para generar el bundle. Por defecto busca index.android.js o index.js. Se puede personalizar así:
entryFile = file("../js/MyApplication.android.js")
extraPackagerArgs
Lista de flags adicionales que se pasarán al comando bundle. La lista de flags disponibles está en la documentación de CLI. Por defecto está vacía. Se puede personalizar así:
extraPackagerArgs = []
hermesCommand
Ruta al comando hermesc (compilador de Hermes). React Native incluye una versión del compilador de Hermes, por lo que generalmente no necesitarás personalizar esto. El plugin usará el compilador correcto para tu sistema por defecto.
hermesFlags
Lista de flags para pasar a hermesc. Por defecto es ["-O", "-output-source-map"]. Puedes personalizarla así:
hermesFlags = ["-O", "-output-source-map"]
Uso de Flavors y Variantes de Build
Al construir aplicaciones Android, puedes usar flavors personalizados para tener diferentes versiones de tu aplicación desde el mismo proyecto.
Consulta la guía oficial de Android para configurar tipos de build personalizados (como staging) o flavors personalizados (como full, lite, etc.).
Por defecto, las nuevas aplicaciones se crean con dos tipos de build (debug y release) y sin flavors personalizados.
La combinación de todos los tipos de build y todos los flavors genera un conjunto de variantes de build. Por ejemplo, con tipos de build debug/staging/release y flavors full/lite tendrás 6 variantes: fullDebug, fullStaging, fullRelease, etc.
Si usas variantes personalizadas más allá de debug y release, debes indicar al React Native Gradle Plugin qué variantes son debuggeables usando la configuración debuggableVariants así:
apply plugin: "com.facebook.react"
react {
+ debuggableVariants = ["fullStaging", "fullDebug"]
}
Esto es necesario porque el plugin omitirá el bundling de JS para todas las debuggableVariants: necesitarás Metro para ejecutarlas. Por ejemplo, si listas fullStaging en debuggableVariants, no podrás publicarla en una tienda porque le faltará el bundle.
¿Qué hace el plugin internamente?
El React Native Gradle Plugin es responsable de configurar el build de tu aplicación para enviar aplicaciones React Native a producción. El plugin también se usa en bibliotecas de terceros para ejecutar el Codegen utilizado en la Nueva Arquitectura.
Este es un resumen de las responsabilidades del plugin:
-
Agrega una tarea
createBundle<Variant>JsAndAssetspara cada variante no depurable, responsable de invocar los comandosbundle,hermescycompose-source-map. -
Configura la versión correcta de las dependencias
com.facebook.react:react-androidycom.facebook.react:hermes-android, leyendo la versión de React Native desde elpackage.jsondereact-native. -
Configura los repositorios Maven adecuados (Maven Central, Google Maven Repo, repositorio local JSC Maven, etc.) necesarios para consumir todas las dependencias Maven requeridas.
-
Configura el NDK para permitirte construir aplicaciones que utilizan la Nueva Arquitectura.
-
Configura los
buildConfigFieldspara que puedas determinar en tiempo de ejecución si Hermes o la Nueva Arquitectura están habilitados. -
Configura el Puerto de Metro DevServer como recurso de Android para que la aplicación sepa en qué puerto debe conectarse.
-
Invoca el React Native Codegen si una biblioteca o aplicación está utilizando el Codegen para la Nueva Arquitectura.