Cambiar el nombre del paquete para Android en React Native


Usé react-native init MyApp para inicializar una nueva aplicación React Native. Esto creó entre otros un proyecto 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 asumo que no es el camino.

Alguna idea?

Author: Cherniv, 2016-05-23

9 answers

He cambiado el nombre de la subcarpeta del proyecto de: " android/app / src / main / java / MY / APP / OLD_ID/" para: " android/app / src / main / java / MY / APP / NEW_ID/"

Luego cambió manualmente los id de paquete antiguo y nuevo:

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

Gradle ' limpieza al final (en la carpeta /android):

./gradlew clean
 188
Author: Cherniv,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-03-14 14:12:01

Uso el paquete npm react-native-rename.

Instalar usando

npm install react-native-rename -g

Luego desde la raíz de tu proyecto React Native ejecuta lo siguiente

react-native-rename "MyApp" -b com.mycompany.myapp

React-native-renombrar en npm

 51
Author: Javid Al Karuzi,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-09-17 10:28:54

Ir a Android studio

Haga clic con el botón derecho en su paquete (probablemente com) - > Refractor - > Renombrar - > Introduzca el nuevo nombre del paquete en el diálogo -> Hacer Refractor

Cambiará el nombre de su paquete en todas partes.

 3
Author: Aishwarya,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-03-27 12:52:10

Si está utilizando Android Studio-

Cambiando com.myapp a com.mycompany.myapp

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

  2. Copiar todas las clases de com.myapp a com.mycompany.myapp usando Android studio GUI

  3. Android Studio se encargará de poner el nombre de paquete adecuado para todas las clases copiadas. Esto es útil si tiene algunos módulos personalizados y no desea reemplazar manualmente en todos los .archivos java.

  4. Actualizar android/app/src/main/AndroidManifest.xml y android/app/build.gradle (sustitúyase com.myapp por com.mycompany.myapp

  5. Sincronizar el proyecto (gradle build)

 2
Author: Varun Kumar,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-01-15 06:28:47

Para cambiar el nombre del paquete de com.myapp to: 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 Android, abra la compilación.gradle a nivel de módulo. El de la carpeta android/app. Usted encontrará

    ... defaultConfig { applicationId com.myapp ... } ...

Cambie la "com.myapp " a lo que necesites.

Espero que esto ayude.

 2
Author: Olusola Omosola,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-07-02 10:17:26

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 a la que hago lo mismo, y no me molesto en llamar ./ gradlew clean ya que parece que el empaquetador 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 él ya que estoy construyendo varias aplicaciones utilizando un conjunto de código y quiero poder cambiar fácilmente el paquete nombre cada vez que corro mis scripts npm.

Aquí está el script bash que usé. Tendrá que modificar el nombre del paquete que desea usar y agregar cualquier otra cosa que desee... pero aquí están los fundamentos. Puede crear un archivo .sh, darle 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: Necesitarás editar la aplicación principal.comentario de java cerca de la parte inferior del archivo java primero. Tiene la palabra 'paquete' en el comentario. Debido a cómo el guión funciona, toma cualquier línea con la palabra 'paquete' y la reemplaza. Debido a esto, este script puede no ser preparado para el futuro, ya que podría haber esa misma palabra utilizada 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 agregar nuevos paquetes a él en el futuro). Probablemente querrás hacer lo mismo. Así que copiar todos los archivos de la carpeta java (ir a través de sus subcarpetas para encontrar los archivos java reales) y ponerlos en una nueva carpeta llamada javaFiles.

Tercer Descargo de responsabilidad: Tendrá que 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.Mi página web.MyAppName to com/MyWebsite / MyAppName)

 1
Author: Kjell,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2017-06-03 18:59:24

El script init genera un identificador único para Android basado en el nombre que le diste (por ejemplo, com.acmeapp para AcmeApp).

Puede ver qué nombre se generó buscando la clave applicationId 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 ocurrencias de com.acmeapp por com.acme.app

Luego cambie la estructura de directorios 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

Usted 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/

 1
Author: Atul Yadav,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-08-18 17:18:42

Siga los sencillos pasos para cambiar el nombre de tu app name y Package name

  1. , Simplemente, cambiar el name en el package.json archivo como usted necesita y guardarlo.
  2. Elimine la carpeta llamada android
  3. ejecute el comando react-native upgrade
 1
Author: Jose Kj,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2018-09-07 11:53:18

Ir al archivo android / app/src / main / AndroidManifest.xml -

Actualización:

Attr android: etiqueta del elemento aplicación como:

Valor antiguo - android: label = "@string/app_name "

Nuevo valor - android:label= " (cadena que desea poner)"

Y

Attr android: etiqueta del elemento actividad como:

Valor Antiguo - android: label = "@string/app_name "

Nuevo valor - android:label= " (cadena que desea poner)"

Funcionó para mí, espero que ayude.

 -9
Author: Anshul Singh,
Warning: date(): Invalid date.timezone value 'Europe/Kyiv', we selected the timezone 'UTC' for now. in /var/www/agent_stack/data/www/ajaxhispano.com/template/agent.layouts/content.php on line 61
2016-05-23 13:05:19