react paquete nombre change application app android react-native react-native-android

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),

  1. Para la aplicación iOS de la aplicación react, use xcode - en general.
  2. 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

  1. crear una nueva jerarquía de paquetes com.mycompany.myapp en android/app/src/main/java

  2. Copie todas las clases de com.myapp a com.mycompany.myapp utilizando la GUI de Android Studio

  3. 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.

  4. Actualice android/app/src/main/AndroidManifest.xml y android/app/build.gradle (reemplace com.myapp por com.mycompany.myapp

  5. 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)

  1. Simplemente cambie el name en el archivo package.json según lo necesite y guárdelo.
  2. Eliminar la carpeta llamada android
  3. 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

npmjs.com/package/react-native-rename


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