J’ai utilisé react-native init MyApp
pour react-native init MyApp
une nouvelle application React Native. Cela a créé entre autres un projet Android avec le package com.myapp
.
Quelle est la meilleure façon de changer ce nom de package, par exemple: com.mycompany.myapp
?
J’ai essayé de le changer dans AndroidManifest.xml
mais cela a créé d’autres erreurs, donc je suppose que ce n’est pas le cas.
Une idée?
J’ai changé le nom du sous-dossier du projet de: ” Android / app / src / main / java / MY / APP / OLD_ID / ” à: ” Android / app / src / main / java / MY / APP / NEW_ID / ”
Ensuite, les anciens et nouveaux paquets ont été changés manuellement:
Dans: Android / app / src / main / java / MY / APP / NEW_ID / MainActivity.java :
package MY.APP.NEW_ID;
Dans Android / app / src / main / java / MY / APP / NEW_ID / MainApplication.java :
package MY.APP.NEW_ID;
Dans android / app / src / main / AndroidManifest.xml :
package="MY.APP.NEW_ID"
Et dans Android / app / build.gradle :
applicationId "MY.APP.NEW_ID"
( Facultatif ) Dans android / app / BUCK :
android_build_config( package="MY.APP.NEW_ID" ) android_resource( package="MY.APP.NEW_ID" )
Gradle ‘nettoyage à la fin (dossier in / android ):
./gradlew clean
J’utilise le paquet npm réact -native-rename .
Installer en utilisant
npm install react-native-rename -g
Ensuite, à partir de la racine de votre projet React Native, exécutez les opérations suivantes:
react-native-rename "MyApp" -b com.mycompany.myapp
réagir-natif-renommer sur npm
Si vous utilisez Android Studio-
changer com.myapp
en com.mycompany.myapp
créer une nouvelle hiérarchie de package com.mycompany.myapp sous android/app/src/main/java
Copiez toutes les classes de com.myapp
vers com.mycompany.myapp
aide de l’interface graphique du studio Android
Le studio Android se chargera de mettre un nom de paquet adapté à toutes les classes copiées. Ceci est utile si vous avez des modules personnalisés et que vous ne souhaitez pas remplacer manuellement tous les fichiers .java.
Mettez à jour android/app/src/main/AndroidManifest.xml
et android/app/build.gradle
(remplacez com.myapp
par com.mycompany.myapp
Synchroniser le projet (construire graduellement)
Atteindre le studio Android
Faites un clic droit sur votre paquet (le plus probablement com) -> Refractor -> Rename -> Entrez le nouveau nom du paquet dans la boîte de dialog -> Do Refractor
Il renommera votre nom de paquet partout.
Pour changer le nom du package de com.myapp à: com.mycompany.myapp (par exemple),
Pour l’application Android, ouvrez le build.gradle au niveau du module. Celui dans le dossier android / app. Tu trouveras
... defaultConfig { applicationId com.myapp ... } ...
Changez le “com.myapp” à ce que vous avez besoin.
J’espère que cela t’aides.
J’ai une solution basée sur la réponse de @Cherniv (fonctionne sur macOS pour moi). Deux différences: j’ai un fichier Main2Activity.java dans le dossier java auquel je fais la même chose, et je ne m’embête pas à appeler ./gradlew clean car il semble que le gestionnaire de paquets natif réagisse de toute façon automatiquement.
Quoi qu’il en soit, ma solution fait ce que fait Cherniv, sauf que j’ai créé un script shell bash car je construis plusieurs applications en utilisant un seul jeu de code et je veux pouvoir changer facilement le nom du paquet quand je lance mes scripts npm.
Voici le script bash que j’ai utilisé. Vous devrez modifier le nom de paquet que vous voulez utiliser, et append tout ce que vous voulez, mais voici les bases. Vous pouvez créer un fichier .sh, en donner l’autorisation, puis l’exécuter à partir du même dossier que celui que vous avez créé.
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
AVERTISSEMENT: Vous devrez d’abord modifier le commentaire de MainApplication.java au bas du fichier java. Il a le mot “package” dans le commentaire. En raison de la façon dont le script fonctionne, il prend n’importe quelle ligne contenant le mot “package” et le remplace. Pour cette raison, ce script peut ne pas être à l’avenir, car il pourrait y avoir ce même mot ailleurs.
Deuxième clause de non-responsabilité: les trois premières commandes sed modifient les fichiers Java à partir d’un répertoire appelé javaFiles. J’ai créé ce répertoire moi-même, car je souhaite disposer d’un ensemble de fichiers Java copiés à partir de ce répertoire (car je pourrais y append de nouveaux packages à l’avenir). Vous voudrez probablement faire la même chose. Donc, copiez tous les fichiers du dossier java (parcourez ses sous-dossiers pour trouver les fichiers java réels) et placez-les dans un nouveau dossier appelé javaFiles.
Troisième avertissement: vous devez modifier la variable packageName pour qu’elle corresponde aux chemins en haut du script et en bas (com.MyWebsite.MyAppName to com / MyWebsite / MyAppName)
Le script init génère un identifiant unique pour Android en fonction du nom que vous lui avez donné (par exemple, com.acmeapp
pour AcmeApp
).
Vous pouvez voir quel nom a été généré en recherchant la clé applicationId dans android/app/build.gradle
.
Si vous devez changer cet identifiant unique, faites-le maintenant comme décrit ci-dessous:
Dans le dossier /android
, remplacez toutes les occurrences de com.acmeapp
par com.acme.app
Modifiez ensuite la structure du répertoire avec les commandes suivantes:
mkdir android/app/src/main/java/com/acme
mv android/app/src/main/java/com/acmeapp android/app/src/main/java/com/acme/app
Vous avez besoin d’un niveau de dossier pour chaque sharepoint l’identificateur d’application.
Source: https://blog.elao.com/fr/dev/from-react-native-init-to-app-stores-real-quick/
Allez dans le fichier android / app / src / main / AndroidManifest.xml –
Mettre à jour :
attr android: étiquette de l’ application Element en tant que:
Ancienne valeur – android: label = “@ ssortingng / nom_app”
Nouvelle valeur – android: label = “(chaîne que vous voulez mettre)”
et
attr android: étiquette de l’ activité de l’élément comme:
Ancienne valeur – android: label = “@ ssortingng / nom_app”
Nouvelle valeur – android: label = “(chaîne que vous voulez mettre)”
Travaillé pour moi, j’espère que cela aidera.