change - Cambiar el nombre del paquete para Android en React Native
react-native-rename (12)
El script de inicio genera un identificador único para Android basado en el nombre que le dio (por ejemplo,
com.acmeapp
para
AcmeApp
).
Puede ver qué nombre se generó buscando la clave de
android/app/build.gradle
aplicación en
android/app/build.gradle
.
Si necesita cambiar ese identificador único, hágalo ahora como se describe a continuación:
En la carpeta
/android
, reemplace todas las apariciones de
com.acmeapp
por
com.acme.app
Luego cambie la estructura del directorio con los siguientes comandos:
mkdir android/app/src/main/java/com/acme
mv android/app/src/main/java/com/acmeapp android/app/src/main/java/com/acme/app
Necesita un nivel de carpeta para cada punto en el identificador de la aplicación.
Fuente: https://blog.elao.com/en/dev/from-react-native-init-to-app-stores-real-quick/
Utilicé
react-native init MyApp
para inicializar una nueva aplicación React Native.
Esto creó, entre otros, un proyecto de Android con el paquete
com.myapp
.
¿Cuál es la mejor manera de cambiar este nombre de paquete, por ejemplo a:
com.mycompany.myapp
?
Intenté cambiarlo en
AndroidManifest.xml
pero creó otros errores, así que supongo que no es así.
¿Alguna idea?
En VS Code, presione
Ctrl + Shift + F
e ingrese su antiguo nombre de paquete en ''Buscar'' e ingrese su nuevo paquete en ''Reemplazar''.
Luego presione ''Reemplazar todas las ocurrencias''.
Definitivamente no es la forma pragmática. Pero, ha hecho el truco para mí.
He cambiado el nombre de la subcarpeta del proyecto de: " android / app / src / main / java / MY / APP / OLD_ID / " a: " android / app / src / main / java / MY / APP / NEW_ID / "
Luego, cambió manualmente los identificadores de paquete antiguos y nuevos:
En: android / app / src / main / java / MY / APP / NEW_ID / MainActivity.java :
package MY.APP.NEW_ID;
En android / app / src / main / java / MY / APP / NEW_ID / MainApplication.java :
package MY.APP.NEW_ID;
En android / app / src / main / AndroidManifest.xml :
package="MY.APP.NEW_ID"
Y en android / app / build.gradle :
applicationId "MY.APP.NEW_ID"
( Opcional ) En android / app / BUCK :
android_build_config(
package="MY.APP.NEW_ID"
)
android_resource(
package="MY.APP.NEW_ID"
)
Limpieza de Gradle al final (en la carpeta / android ):
./gradlew clean
Ir a estudio de Android
Haga clic derecho en su paquete (probablemente com) -> Refractor -> Cambiar nombre -> Ingrese el nuevo nombre del paquete en el cuadro de diálogo -> Hacer refractor
Cambiará el nombre de su paquete en todas partes.
Para cambiar el nombre del paquete de com.myapp a: com.mycompany.myapp (por ejemplo),
- Para la aplicación iOS de la aplicación react, use xcode - en general.
-
Para la aplicación de Android, abra build.gradle a nivel de módulo. El que está en la carpeta android / app. Usted encontrará
... defaultConfig { applicationId com.myapp ... } ...
Cambie "com.myapp" a lo que necesite.
Espero que esto ayude.
Si estás usando Android Studio-
cambiando
com.myapp
a
com.mycompany.myapp
-
crear una nueva jerarquía de paquetes com.mycompany.myapp en
android/app/src/main/java
-
Copie todas las clases de
com.myapp
acom.mycompany.myapp
utilizando la GUI de Android Studio -
Android Studio se encargará de poner el nombre del paquete adecuado para todas las clases copiadas. Esto es útil si tiene algunos módulos personalizados y no desea reemplazarlos manualmente en todos los archivos .java.
-
Actualice
android/app/src/main/AndroidManifest.xml
yandroid/app/build.gradle
(reemplacecom.myapp
porcom.mycompany.myapp
-
Sincronizar el proyecto (construcción de gradle)
Siga los sencillos pasos para cambiar el nombre de la
app name
y el
app name
Package name
en caso de que no haya realizado ningún cambio personalizado en la carpeta de Android (es decir, escenario en el que acaba de inicializar el proyecto)
-
Simplemente cambie el
name
en el archivopackage.json
según lo necesite y guárdelo. - Eliminar la carpeta llamada android
-
ejecuta el comando
react-native upgrade
Nota: Como ivoteje50 mencionó en el comentario, no elimine la carpeta de Android si ya ha seguido las instrucciones oficiales para generar un almacén de claves, ya que eliminará el almacén de claves y no podrá volver a firmar una nueva aplicación.
Tengo una solución basada en la respuesta de @ Cherniv (funciona en macOS para mí). Dos diferencias: tengo un Main2Activity.java en la carpeta java con el que hago lo mismo, y no me molesto en llamar a ./gradlew clean ya que parece que el paquete react-native lo hace automáticamente de todos modos.
De todos modos, mi solución hace lo que hace Cherniv, excepto que hice un script de shell bash para ello, ya que estoy compilando múltiples aplicaciones usando un conjunto de código y quiero poder cambiar fácilmente el nombre del paquete cada vez que ejecuto mis scripts npm.
Aquí está el script bash que utilicé. Tendrá que modificar el packageName que desea usar y agregar cualquier otra cosa que desee ... pero aquí están los conceptos básicos. Puede crear un archivo .sh, otorgar permiso y luego ejecutarlo desde la misma carpeta desde la que ejecuta react-native:
rm -rf ./android/app/src/main/java
mkdir -p ./android/app/src/main/java/com/MyWebsite/MyAppName
packageName="com.MyWebsite.MyAppName"
sed -i '''' -e "s/.*package.*/package "$packageName";/" ./android/app/src/main/javaFiles/Main2Activity.java
sed -i '''' -e "s/.*package.*/package "$packageName";/" ./android/app/src/main/javaFiles/MainActivity.java
sed -i '''' -e "s/.*package.*/package "$packageName";/" ./android/app/src/main/javaFiles/MainApplication.java
sed -i '''' -e "s/.*package=/".*/ package=/""$packageName"/"/" ./android/app/src/main/AndroidManifest.xml
sed -i '''' -e "s/.*package = ''.*/ package = ''"$packageName"'',/" ./android/app/BUCK
sed -i '''' -e "s/.*applicationId.*/ applicationId /""$packageName"/"/" ./android/app/build.gradle
cp -R ./android/app/src/main/javaFiles/ ./android/app/src/main/java/com/MyWebsite/MyAppName
DESCARGO DE RESPONSABILIDAD: Primero deberá editar el comentario de MainApplication.java cerca del final del archivo java. Tiene la palabra ''paquete'' en el comentario. Debido a cómo funciona el script, toma cualquier línea con la palabra ''paquete'' y lo reemplaza. Debido a esto, es posible que este script no esté preparado para el futuro, ya que podría usarse esa misma palabra en otro lugar.
Segundo descargo de responsabilidad: los primeros 3 comandos sed editan los archivos java desde un directorio llamado javaFiles. Creé este directorio yo mismo ya que quiero tener un conjunto de archivos java que se copien desde allí (ya que podría agregarle nuevos paquetes en el futuro). Probablemente querrás hacer lo mismo. Copie todos los archivos de la carpeta java (vaya a través de sus subcarpetas para encontrar los archivos java reales) y colóquelos en una nueva carpeta llamada javaFiles.
Tercer descargo de responsabilidad: deberá editar la variable packageName para que esté en línea con las rutas en la parte superior del script y en la parte inferior (com.MyWebsite.MyAppName para com / MyWebsite / MyAppName)
Vaya a Android Studio, abra la aplicación, haga clic derecho en Java y elija Nuevo y luego Paquete.
Dé el nombre que desea (por ejemplo, com. Algo).
Mueva los archivos del otro paquete (desea cambiar el nombre) al nuevo Paquete. Eliminar el paquete anterior.
Vaya a su proyecto en su editor y use el acceso directo para buscar en todos los archivos (en mac es shift cmd F). Escriba el nombre de su paquete anterior. Cambie todas las referencias al nuevo nombre del paquete.
Vaya a Android Studio, Build, Clean Project, Rebuild Project.
¡Hecho!
Feliz codificación :)
Vaya al archivo android / app / src / main / AndroidManifest.xml -
Actualización:
attr android: etiqueta de la aplicación Element como:
Valor anterior - android: label = "@ string / app_name"
Nuevo valor - android: label = "(cadena que desea poner)"
y
attr android: etiqueta de actividad de Element como:
Valor anterior - android: label = "@ string / app_name"
Nuevo valor - android: label = "(cadena que desea poner)"
Funcionó para mí, espero que ayude.
Yo uso el paquete npm react-native-rename .
Instalar usando
npm install react-native-rename -g
Luego, desde la raíz de su proyecto React Native, ejecute lo siguiente
react-native-rename "MyApp" -b com.mycompany.myapp
simplemente puede usar el paquete npm react-native-rename.
Instalar usando
npm install react-native-rename -g
Luego, desde la raíz de su proyecto React Native, ejecute lo siguiente
react-native-rename "MyApp" -b com.mycompany.myapp
react-native-rename on npm
pero
MainActivity.java
cuenta que, esta lib elimina su
MainActivity.java
y
MainApplication.java
.
antes de cambiar el nombre de su paquete, haga una copia de seguridad de estos dos archivos y, después de cambiar el nombre del paquete, vuelva a colocarlo en su lugar.
esta solución me funciona
más información: npmjs.com/package/react-native-rename