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)