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?
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
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
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.
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
Crear una nueva jerarquía de paquetes com.mycompany.myapp bajo
android/app/src/main/java
-
Copiar todas las clases de
com.myapp
acom.mycompany.myapp
usando Android studio GUI 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.
Actualizar
android/app/src/main/AndroidManifest.xml
yandroid/app/build.gradle
(sustitúyasecom.myapp
porcom.mycompany.myapp
-
Sincronizar el proyecto (gradle build)
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),
- Para la aplicación iOS de la aplicación react, use xcode - en general.
-
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.
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)
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/
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
- , Simplemente, cambiar el
name
en elpackage.json
archivo como usted necesita y guardarlo. - Elimine la carpeta llamada android
- ejecute el comando
react-native upgrade
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.
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