Modifier le nom du package pour Android dans React Native


180

J'avais l'habitude react-native init MyAppd'initialiser 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 en com.mycompany.myapp:?

J'ai essayé de le changer AndroidManifest.xmlmais cela a créé d'autres erreurs, donc je suppose que ce n'est pas le cas.

Une idée?


Cliquez avec le bouton gauche sur le nom du package et choisissez Refactor -> Rename option pour renommer le nom du package.
kunal

Ce qui fonctionne le mieux pour moi maintenant, c'est simplement rechercher et remplacer
mllm

3
Vous pouvez également essayer ce saumya.github.io/ray/articles/72
Andy


for me search & replace a travaillé
shesh nath

Réponses:


413

J'ai renommé le projet » sous - dossier: " android / app / src / main / java / MA / APP / OLD_ID / " à: " android / app / src / main / java / MA / APP / new_id / "

Ensuite, permutez manuellement l'ancien et le nouveau identifiant de package:

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"

Dans android / app / BUCK :

android_build_config(
  package="MY.APP.NEW_ID"
)
android_resource(
  package="MY.APP.NEW_ID"
)

Nettoyage Gradle 'à la fin (dans le dossier / android ):

./gradlew clean

23
J'ai également besoin de modifier le fichier BUCK pour remplacer l'ancienne valeur du package par la nouvelle. BTW, les 2 fichiers MainAcitivity.java et MainApplication.java doivent être déplacés vers le nouveau chemin physique.
Golden Thumb

4
J'ai également renommé le répertoire android/app/src/main/java/com/old_app_name/en ...com/new_app_name/et cela semble fonctionner.
nicholas

J'ai eu l'erreur "Échec de la finalisation de la session: INSTALL_FAILED_UPDATE_INCOMPATIBLE" jusqu'à ce que j'aie manuellement forcé le nettoyage du simulateur d'appareil Android: adb désinstaller mon.package.name ... Donc les directions sont correctes, mais le simulateur Android peut "conserver" les anciennes informations dans un mauvaise façon qui donne l'impression que les directions ne fonctionnent pas. (Et simplement désinstaller l'application n'a PAS résolu ce problème!)
Bill Patterson

J'étais en train de lire à ce sujet et j'ai essayé cette bibliothèque: npmjs.com/package/react-native-rename semble fonctionner assez bien pour cela, il ne renomme pas seulement l'application, mais il peut également changer l'identifiant du bundle
fray88

1
faites-le dans android / dossier @Anuj
Cherniv

76

J'utilise le package react -native-rename * npm. Installez-le via

npm install react-native-rename -g

Ensuite, à partir de la racine de votre projet React Native, exécutez ce qui suit:

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

c'est simple et délicat, j'ai juste besoin de mettre à jour le MainApplication.java manuellement.
Gopal Devra

59
Merci, a cassé le projet
Leap Hawk

@AkashRajput avez-vous résolu votre problème? s'il vous plaît laissez-nous savoir si vous avez trouvé une solution
Saleem Khan

@SaleemKhan Il a fallu recréer le projet. Cette fois, avec init natif de réaction. Copiez simplement les fichiers.
Leap Hawk

5
Cela a cassé mon projet, et a dû créer un nouveau projet :(
MujtabaFR

24

Pour changer le nom du package de com.myappà: com.mycompany.myapp(par exemple),

  1. Pour l'application iOS de l'application react, utilisez xcode - sous général.
  2. Pour l'application Android, ouvrez le build.gradle au niveau du module. Celui du android/appdossier. Tu trouveras
// ...
defaultConfig {
     applicationId com.myapp
     // ...
}
// ...

Changez le com.myapppour celui dont vous avez besoin.

J'espère que cela t'aides.


4
C'est le moyen le plus simple de modifier le nom de votre package. Cependant, sans changer le nom de votre package local, cela changera votre prochain package de build. Merci! Après avoir fait cela, faites ./gradlew cleanet ensuite ./gradlew app:assembleRelease.
Michael Harley

2
"Cependant, le applicationIdet le packagenom local sont indépendants l'un de l'autre", " applicationIdidentifie de manière unique votre application sur l'appareil et dans Google Play Store" - developer.android.com/studio/build/application-id
quatre

ne fonctionne pas pour moiNo matching client found for package name 'xxxxx'
MichaelMao

10

vous pouvez simplement utiliser le package npm react-native-rename.

Installer en utilisant

npm install react-native-rename -g

Ensuite, à partir de la racine de votre projet React Native, exécutez ce qui suit

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

react-native-rename on npm

mais notez que, cette lib supprime votre MainActivity.javaet MainApplication.java. avant de changer le nom de votre package, effectuez une sauvegarde de ces deux fichiers et, après avoir changé le nom du package, remettez-le simplement à leur place. cette solution fonctionne pour moi

plus d'informations: react-native-rename


1
Aucun effet si vous ne modifiez pas le nom de l'application "Veuillez essayer un autre nom."
Fabriqué sur la Lune

1
en fait, j'essaye un nom différent pour mon projet. mais lorsque je change le nom de mon projet, react-native-rename supprime ces deux fichiers de mon projet.
Moein Hosseini

8

Accéder au studio Android

Faites un clic droit sur votre package (très probablement com) -> Refractor -> Renommer -> Entrez le nouveau nom du package dans la boîte de dialogue -> Do Refractor

Il renommera le nom de votre package partout.


Cela n'affectera pas l'ensemble de la structure du projet, je suppose.
Kishan Oza

Comment faire avec le projet React-Native JS?
Arifur Rahman

8

Le script init génère un identifiant unique pour Android basé sur le nom que vous lui avez donné (par exemple com.acmeapppour AcmeApp).

Vous pouvez voir quel nom a été généré en recherchant la clé applicationId android/app/build.gradle.

Si vous devez modifier cet identifiant unique, faites-le maintenant comme décrit ci-dessous:

Dans le /androiddossier, remplacez toutes les occurrences de com.acmeappparcom.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 point de l'identifiant d'application.

Source: https://blog.elao.com/en/dev/from-react-native-init-to-app-stores-real-quick/


7

Si vous utilisez Android Studio-

changer com.myappencom.mycompany.myapp

  1. créer une nouvelle hiérarchie de packages com.mycompany.myapp sous android/app/src/main/java

  2. Copiez toutes les classes de com.myappà à l' com.mycompany.myappaide de l'interface graphique d'Android Studio

  3. Le studio Android se chargera de mettre un nom de package approprié pour toutes les classes copiées. Ceci est utile si vous avez des modules personnalisés et que vous ne souhaitez pas les remplacer manuellement dans tous les fichiers .java.

  4. Mettre à jour android/app/src/main/AndroidManifest.xmlet android/app/build.gradle(remplacer com.myappparcom.mycompany.myapp

  5. Synchroniser le projet (build gradle)


5

J'ai une solution basée sur la réponse de @ Cherniv (fonctionne sur macOS pour moi). Deux différences: j'ai un Main2Activity.java dans le dossier java dans lequel je fais la même chose, et je ne prends pas la peine d'appeler ./gradlew clean car il semble que le packager react-native le fasse 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 ensemble de code et que je veux pouvoir changer facilement le nom du package chaque fois que j'exécute mes scripts npm.

Voici le script bash que j'ai utilisé. Vous devrez modifier le packageName que vous souhaitez utiliser et ajouter tout ce que vous voulez ... mais voici les bases. Vous pouvez créer un fichier .sh, donner l'autorisation, puis l'exécuter à partir du même dossier à partir duquel vous exécutez 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

AVERTISSEMENT: Vous devrez d'abord modifier le commentaire de MainApplication.java vers le bas du fichier java. Il a le mot «package» dans le commentaire. En raison du fonctionnement du script, il prend toute ligne contenant le mot «package» et le remplace. Pour cette raison, ce script peut ne pas être à l'épreuve du temps car le même mot pourrait être utilisé ailleurs.

Deuxième avertissement: les 3 premières commandes sed éditent les fichiers java à partir d'un répertoire appelé javaFiles. J'ai créé ce répertoire moi-même car je veux avoir un ensemble de fichiers java qui sont copiés à partir de là (car je pourrais y ajouter de nouveaux packages à l'avenir). Vous voudrez probablement faire la même chose. Copiez donc 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 devrez modifier la variable packageName pour qu'elle corresponde aux chemins en haut et en bas du script (com.MyWebsite.MyAppName vers com / MyWebsite / MyAppName)


2

Dans VS Code, appuyez sur Ctrl + Shift + Fet entrez votre ancien nom de package dans «Rechercher» et entrez votre nouveau package dans «Remplacer». Appuyez ensuite sur «Remplacer toutes les occurrences».

Certainement pas la manière pragmatique. Mais ça a fait l'affaire pour moi.


2

Utilisation npx react-native-rename <newName>

Avec un identifiant de bundle personnalisé (Android uniquement. Pour iOS, veuillez utiliser Xcode)

$ npx react-native-rename <newName> -b <bundleIdentifier>

Commencez par passer à une nouvelle branche (facultatif mais recommandé)

$ git checkout -b rename-app

Ensuite, renommez votre application $ npx react-native-rename "Travel App"

Avec identifiant de bundle personnalisé

$ npx react-native-rename "Travel App" -b com.junedomingo.travelapp 

Après avoir changé le nom, assurez-vous d'aller dans le dossier Android et exécutez gradlew clean. puis revenez au projet principal et exécutez npx react-native run-android.

De plus, si vous avez un fichier google-services.json dans votre projet précédent, modifiez-le en conséquence avec le nouveau ... alors vous êtes prêt à partir :)

En savoir plus ici https://github.com/junedomingo/react-native-rename#readme


1

Suivez les étapes simples pour renommer votre app nameet Package nameau cas où vous n'auriez pas apporté de modifications personnalisées dans le dossier Android (par exemple, scénario où vous venez d'initialiser le projet)

  1. Modifiez simplement namele package.jsonfichier selon vos besoins et enregistrez-le.
  2. Supprimer le dossier nommé android
  3. exécuter la commande react-native upgrade

Remarque: comme ivoteje50 l'a mentionné dans le commentaire, ne supprimez pas le dossier Android si vous avez déjà suivi les instructions officielles pour générer un keystore, car cela supprimera le keystore et vous ne pourrez plus signer une nouvelle application.


1
Ne supprimez pas le dossier Android si vous avez déjà suivi les instructions officielles pour générer un keystore, car cela supprimera le keystore et vous ne pourrez plus signer une nouvelle application.
Ivotje50

2
Ne fais pas ça! Vous pourriez avoir des tonnes de code personnalisé dans le code Android qui ne sera pas recréé
pie6k

1

Accédez à Android Studio, ouvrez l'application, faites un clic droit sur java et choisissez Nouveau, puis Package.

Donnez le nom que vous voulez (par exemple com.something).

Déplacez les fichiers de l'autre package (que vous souhaitez renommer) vers le nouveau package. Supprimez l'ancien package.

Accédez à votre projet dans votre éditeur et utilisez le raccourci pour rechercher dans tous les fichiers (sur mac, c'est shift cmd F). Tapez le nom de votre ancien package. Modifiez toutes les références au nouveau nom de package.

Accédez à Android Studio, Build, Clean Project, Rebuild Project.

Terminé!

Bon codage :)


1

J'ai utilisé le package react-native-rename .

Dans le terminal, exécutez la commande pour installer:

npm install react-native-rename -g

À la racine de votre projet React Native, exécutez la commande suivante:

react-native-rename "NewNameOfApp" -b com.companyname.newnameofapp

0

Vous pouvez utiliser le package react-native-rename qui prendra en charge toutes les modifications nécessaires du nom du package sous

app / mainapplication.java

AndroidManifest.xml

mais assurez-vous de changer manuellement le nom du package de tous les fichiers dans le dossier java / com. car lorsque j'ai créé une activité d'écran de démarrage, l'ancien nom du package n'est pas mis à jour.

https://www.npmjs.com/package/react-native-rename


0

Le simple fait d'utiliser l'outil de recherche et de remplacement de mon IDE a fait l'affaire.


0

Après avoir exécuté ceci:

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

Assurez-vous de vous rendre également Build.gradlesous android/app/... et de renommer l'ID de l'application comme indiqué ci-dessous:

defaultConfig {
        applicationId:com.appname.xxx
........
}

-3

Accédez au fichier android / app / src / main / AndroidManifest.xml -

Mettre à jour :

attr android: étiquette de l' application Element comme:

Ancienne valeur - android: label = "@ string / app_name"

Nouvelle valeur - android: label = "(string you want to put)"

et

attr android: étiquette de l' activité d' élément comme:

Ancienne valeur - android: label = "@ string / app_name"

Nouvelle valeur - android: label = "(string you want to put)"

A travaillé pour moi, j'espère que cela aidera.


2
Honnêtement, je ne pense pas que cette réponse aurait dû être rejetée autant qu'elle l'a été. Cependant, cette réponse ne répond pas à ce qui a été demandé dans la question - comment changer le nom du package . Pourtant, il répond à la question "comment changer le titre de l'application qui apparaît dans le lanceur". Est-ce une réponse pertinente? Pas vraiment. Contient-il des informations utiles? Oui. Par conséquent, je vous suggère de trouver une question qui pose des questions sur le titre du lanceur et de poster votre solution là-bas plutôt qu'ici.
Dev-iL
En utilisant notre site, vous reconnaissez avoir lu et compris notre politique liée aux cookies et notre politique de confidentialité.
Licensed under cc by-sa 3.0 with attribution required.