Ich habe eine Lösung, die auf der Antwort von @ Cherniv basiert (funktioniert für mich unter macOS). Zwei Unterschiede: Ich habe eine Main2Activity.java im Java-Ordner, mit der ich dasselbe mache, und ich rufe ./gradlew clean nicht auf, da es so aussieht, als würde der reaktionsnative Packager dies sowieso automatisch tun.
Wie auch immer, meine Lösung macht das, was Cherniv macht, außer dass ich ein Bash-Shell-Skript dafür erstellt habe, da ich mehrere Apps mit einem Satz Code erstelle und den Paketnamen einfach ändern möchte, wenn ich meine npm-Skripte ausführe.
Hier ist das Bash-Skript, das ich verwendet habe. Sie müssen den Paketnamen ändern, den Sie verwenden möchten, und alles hinzufügen, was Sie möchten ... aber hier sind die Grundlagen. Sie können eine .sh-Datei erstellen, die Berechtigung erteilen und sie dann in demselben Ordner ausführen, in dem Sie react-native ausführen:
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
HAFTUNGSAUSSCHLUSS: Sie müssen zuerst den Kommentar von MainApplication.java am unteren Rand der Java-Datei bearbeiten. Es hat das Wort "Paket" im Kommentar. Aufgrund der Funktionsweise des Skripts wird eine beliebige Zeile mit dem Wort "Paket" verwendet und ersetzt. Aus diesem Grund ist dieses Skript möglicherweise nicht zukunftssicher, da möglicherweise dasselbe Wort an anderer Stelle verwendet wird.
Zweiter Haftungsausschluss: Die ersten drei sed-Befehle bearbeiten die Java-Dateien aus einem Verzeichnis namens javaFiles. Ich habe dieses Verzeichnis selbst erstellt, da ich einen Satz von Java-Dateien haben möchte, die von dort kopiert werden (da ich möglicherweise in Zukunft neue Pakete hinzufügen werde). Sie werden wahrscheinlich das Gleiche tun wollen. Kopieren Sie also alle Dateien aus dem Java-Ordner (durchsuchen Sie die Unterordner, um die tatsächlichen Java-Dateien zu finden) und legen Sie sie in einem neuen Ordner namens javaFiles ab.
Dritter Haftungsausschluss: Sie müssen die Variable packageName so bearbeiten, dass sie mit den Pfaden oben und unten im Skript übereinstimmt (com.MyWebsite.MyAppName to com / MyWebsite / MyAppName).