Ändern Sie den Paketnamen für Android in React Native

178

Ich habe react-native init MyAppeine neue React Native-App initialisiert. Dies schuf unter anderem ein Android-Projekt mit dem Paket com.myapp.

Wie kann dieser Paketname am besten geändert werden, z. B. in : com.mycompany.myapp?

Ich habe versucht, es zu ändern, AndroidManifest.xmlaber es hat andere Fehler verursacht, also gehe ich davon aus, dass es nicht so ist.

Irgendeine Idee?

mllm
quelle
Klicken Sie mit der linken Maustaste auf den Paketnamen und wählen Sie Refactor -> Rename, um den Paketnamen umzubenennen.
Kunal
Was jetzt am besten für mich funktioniert, ist einfach finden und ersetzen
mllm
3
Sie können auch versuchen, diese saumya.github.io/ray/articles/72
Andy
Versuchen Sie dies auch Android App-Paket umbenennen
c49
für mich suchte & ersetzen funktioniert
shesh nath

Antworten:

411

Ich habe den Unterordner des Projekts von " android / app / src / main / java / MY / APP / OLD_ID / " in " android / app / src / main / java / MY / APP / NEW_ID / " umbenannt.

Dann manuell die alten und neuen Paket-IDs umgeschaltet:

In: android / app / src / main / java / MY / APP / NEW_ID / MainActivity.java :

package MY.APP.NEW_ID;

In android / app / src / main / java / MY / APP / NEW_ID / MainApplication.java :

package MY.APP.NEW_ID;

In android / app / src / main / AndroidManifest.xml :

package="MY.APP.NEW_ID"

Und in android / app / build.gradle :

applicationId "MY.APP.NEW_ID"

( Optional ) In Android / App / BUCK :

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

Gradle 'Reinigung am Ende (im Ordner / android ):

./gradlew clean
Cherniv
quelle
23
Ich muss auch die Datei BUCK bearbeiten, um den alten Paketwert durch den neuen zu ersetzen. Übrigens sollten die beiden Dateien MainAcitivity.java und MainApplication.java in den neuen physischen Pfad verschoben werden.
Goldener Daumen
4
Ich benannte auch das Verzeichnis android/app/src/main/java/com/old_app_name/auf , ...com/new_app_name/und es scheint zu funktionieren.
Nicholas
Ich hatte den Fehler "Sitzung konnte nicht abgeschlossen werden: INSTALL_FAILED_UPDATE_INCOMPATIBLE", bis ich die Reinigung des Android-Gerätesimulators manuell erzwang: adb deinstalliere my.package.name ... Die Anweisungen sind also in Ordnung, aber der Android-Simulator kann alte Informationen in a "festhalten" Ein schlechter Weg, der es so aussehen lässt, als würden Anweisungen nicht funktionieren. (Und einfach die App zu deinstallieren hat das NICHT behoben!)
Bill Patterson
Ich habe darüber gelesen und diese Bibliothek ausprobiert : npmjs.com/package/react-native-rename scheint dafür ziemlich gut zu funktionieren, es benennt nicht nur die App um, sondern kann auch die Bundle-
ID
1
Mach es in Android / Ordner @Anuj
Cherniv
77

Ich verwende das Paket react-native-rename * npm. Installieren Sie es über

npm install react-native-rename -g

Führen Sie dann im Stammverzeichnis Ihres React Native-Projekts Folgendes aus:

react-native-rename "MyApp" -b com.mycompany.myapp
Javid Al Karuzi
quelle
Das ist einfach und knifflig. Ich muss nur die Datei MainApplication.java manuell aktualisieren.
Gopal Devra
59
Danke, brach das Projekt
Leap Hawk
@AkashRajput hast du dein Problem behoben? Bitte lassen Sie uns wissen, wenn Sie eine Lösung gefunden haben
Saleem Khan
@SaleemKhan Musste das Projekt erneut erstellen. Diesmal mit React-Native Init. Kopieren Sie einfach die Dateien.
Leap Hawk
5
Es brach mein Projekt und musste ein neues Projekt erstellen :(
MujtabaFR
24

So ändern Sie den Paketnamen von com.myapp: com.mycompany.myapp(zum Beispiel)

  1. Verwenden Sie für die iOS-App der React-App xcode - unter Allgemein.
  2. Öffnen Sie für die Android-App die Datei build.gradle auf Modulebene. Der im android/appOrdner. Du wirst finden
// ...
defaultConfig {
     applicationId com.myapp
     // ...
}
// ...

Ändern Sie das com.myappzu was auch immer Sie brauchen.

Hoffe das hilft.

Olusola Omosola
quelle
4
Dies ist der einfachste Weg, um Ihren Paketnamen zu ändern. Wenn Sie Ihren lokalen Paketnamen nicht ändern, ändert sich Ihr nächstes Build-Paket. Vielen Dank! Danach tun ./gradlew cleanund dann ./gradlew app:assembleRelease.
Michael Harley
2
"Der applicationIdund der lokale packageName sind jedoch unabhängig voneinander", " applicationIdidentifiziert Ihre App auf dem Gerät und im Google Play Store eindeutig" - developer.android.com/studio/build/application-id
fünfundachtzig
nicht für mich arbeitenNo matching client found for package name 'xxxxx'
MichaelMao
10

Sie können einfach das npm-Paket "react-native-rename" verwenden.

Installieren Sie mit

npm install react-native-rename -g

Führen Sie dann im Stammverzeichnis Ihres React Native-Projekts Folgendes aus

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

react-native-rename on npm

aber beachte, dass diese lib dein MainActivity.javaund entfernt MainApplication.java. Geben Sie vor dem Ändern Ihres Paketnamens eine Sicherungskopie dieser beiden Dateien und legen Sie sie nach dem Ändern des Paketnamens wieder an ihrem Platz ab. Diese Lösung funktioniert für mich

Weitere Infos: React-Native-Rename

Moein Hosseini
quelle
1
Keine Auswirkung, wenn Sie den App-Namen nicht ändern. "Bitte versuchen Sie es mit einem anderen Namen."
Hergestellt in Moon am
1
Eigentlich versuche ich einen anderen Namen für mein Projekt. Wenn ich jedoch meinen Projektnamen ändere, werden durch React-Native-Rename diese beiden Dateien aus meinem Projekt entfernt.
Moein Hosseini
8

Gehe zu Android Studio

Klicken Sie mit der rechten Maustaste auf Ihr Paket (höchstwahrscheinlich com) -> Refraktor -> Umbenennen -> Geben Sie im Dialogfeld einen neuen Paketnamen ein -> Refraktor ausführen

Ihr Paketname wird überall umbenannt.

Aishwarya
quelle
Es wird sich nicht auf die gesamte Projektstruktur auswirken, denke ich.
Kishan Oza
Wie geht das mit dem React-Native JS-Projekt?
Arifur Rahman
8

Das Init-Skript generiert eine eindeutige Kennung für Android basierend auf dem Namen, den Sie ihm gegeben haben (z . B. com.acmeappfür AcmeApp).

Sie können sehen, welcher Name generiert wurde, indem Sie nach dem Anwendungs-ID-Schlüssel suchen android/app/build.gradle.

Wenn Sie diese eindeutige Kennung ändern müssen, gehen Sie jetzt wie folgt vor:

/androidErsetzen Sie im Ordner alle Vorkommen von com.acmeappdurchcom.acme.app

Ändern Sie dann die Verzeichnisstruktur mit den folgenden Befehlen:

mkdir android/app/src/main/java/com/acme

mv android/app/src/main/java/com/acmeapp android/app/src/main/java/com/acme/app

Sie benötigen eine Ordnerebene für jeden Punkt in der App-ID.

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

Atul Yadav
quelle
7

Wenn Sie Android Studio-

wechseln com.myappzucom.mycompany.myapp

  1. Erstellen Sie eine neue Pakethierarchie unter com.mycompany.myapp unter android/app/src/main/java

  2. Kopieren Sie alle Klassen aus , com.myappum com.mycompany.myappmit Android Studio GUI

  3. Android Studio sorgt dafür, dass für alle kopierten Klassen ein geeigneter Paketname angegeben wird. Dies ist nützlich, wenn Sie über einige benutzerdefinierte Module verfügen und nicht alle Java-Dateien manuell ersetzen möchten.

  4. Aktualisieren android/app/src/main/AndroidManifest.xmlund android/app/build.gradle(ersetzen com.myappdurchcom.mycompany.myapp

  5. Synchronisiere das Projekt (Gradle Build)

Varun Kumar
quelle
5

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).

Kjell
quelle
2

Drücken Sie Ctrl + Shift + Fin VS Code und geben Sie Ihren alten Paketnamen in "Suchen" und Ihr neues Paket in "Ersetzen" ein. Drücken Sie dann 'Alle Vorkommen ersetzen'.

Auf keinen Fall pragmatisch. Aber es ist der Trick für mich getan.

Kiran JD
quelle
2

Verwenden npx react-native-rename <newName>

Mit benutzerdefiniertem Bundle Identifier (nur Android. Für iOS verwenden Sie bitte Xcode)

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

Wechseln Sie zunächst zu einem neuen Zweig (optional, aber empfohlen).

$ git checkout -b rename-app

Benennen Sie dann Ihre App um. $ Npx react-native-rename "Travel App"

Mit benutzerdefiniertem Bundle Identifier

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

Nachdem Sie den Namen geändert haben, stellen Sie bitte sicher, dass Sie zum Android-Ordner gehen und ausführen gradlew clean. Gehen Sie dann zurück zum Hauptprojekt und führen Sie es aus npx react-native run-android.

Auch wenn Sie in Ihrem vorherigen Projekt die Datei google-services.json haben, ändern Sie sie entsprechend mit der neuen ... dann können Sie loslegen :)

Weitere Informationen finden Sie hier https://github.com/junedomingo/react-native-rename#readme

Farhad Kabir
quelle
1

Befolgen Sie die einfachen Schritte, um Ihren Ordner umzubenennen app nameund Package namefalls Sie keine benutzerdefinierten Änderungen im Android-Ordner vorgenommen haben (dh Szenario, in dem Sie gerade das Projekt initialisiert haben).

  1. Ändern Sie einfach namedie package.jsonDatei nach Bedarf und speichern Sie sie.
  2. Entfernen Sie den Ordner mit dem Namen Android
  3. Führen Sie den Befehl aus react-native upgrade

Hinweis: Da ivoteje50 in Kommentar erwähnt nicht die Android - Ordner entfernen , wenn Sie bereits die offiziellen Anweisungen befolgt haben einen Schlüsselspeicher zu erzeugen, da sie den Schlüsselspeicher entfernen und Sie können nicht eine neue App erneut anmelden.

Jose Kj
quelle
1
Entfernen Sie den Android-Ordner nicht, wenn Sie bereits die offiziellen Anweisungen zum Generieren eines Keystores befolgt haben, da dadurch der Keystore entfernt wird und Sie keine neue App erneut signieren können.
Ivotje50
2
Tu es nicht! Sie könnten Tonnen von benutzerdefinierten Code in Android-Code haben, die nicht neu erstellt werden
pie6k
1

Gehen Sie zu Android Studio, öffnen Sie die App, klicken Sie mit der rechten Maustaste auf Java und wählen Sie Neu und dann Paket.

Geben Sie den gewünschten Namen an (z. B. com.something).

Verschieben Sie die Dateien aus dem anderen Paket (das Sie umbenennen möchten) in das neue Paket. Löschen Sie das alte Paket.

Gehen Sie in Ihrem Editor zu Ihrem Projekt und verwenden Sie die Verknüpfung zum Suchen in allen Dateien (auf dem Mac ist Shift Cmd F). Geben Sie den Namen Ihres alten Pakets ein. Ändern Sie alle Verweise auf den neuen Paketnamen.

Gehen Sie zu Android Studio, Erstellen, Projekt bereinigen, Projekt neu erstellen.

Getan!

Viel Spaß beim Codieren :)

Fotis Tsakiris
quelle
1

Ich habe das React-Native-Rename- Paket verwendet.

Führen Sie im Terminal den folgenden Befehl aus:

npm install react-native-rename -g

Führen Sie im Stammverzeichnis Ihres React Native-Projekts den folgenden Befehl aus:

react-native-rename "NewNameOfApp" -b com.companyname.newnameofapp
Waqar UlHaq
quelle
0

Sie können ein React-Native-Rename-Paket verwenden, das alle erforderlichen Änderungen des Paketnamens unter übernimmt

app / mainapplication.java

AndroidManifest.xml

Stellen Sie jedoch sicher, dass Sie den Paketnamen aller Dateien im Ordner java / com manuell ändern. denn als ich eine Begrüßungsbildschirmaktivität erstellt habe, wird der alte Paketname nicht aktualisiert.

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

Geetha Tulasi Balam
quelle
0

Einfach das Such- und Ersetzungswerkzeug meiner IDE zu verwenden, hat den Trick getan.

Tenesse
quelle
0

Nach dem Ausführen dieses:

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

Stellen Sie sicher, dass Sie auch Build.gradleunter gehen android/app/... und die Anwendungs-ID wie unten gezeigt umbenennen:

defaultConfig {
        applicationId:com.appname.xxx
........
}
Newtoxton
quelle
-3

Gehen Sie zur Datei android / app / src / main / AndroidManifest.xml -

Update:

attr android: label of Element Anwendung als:

Alter Wert - android: label = "@ string / app_name"

Neuer Wert - android: label = "(Zeichenfolge, die Sie einfügen möchten)"

und

attr android: label of Element Aktivität als:

Alter Wert - android: label = "@ string / app_name"

Neuer Wert - android: label = "(Zeichenfolge, die Sie einfügen möchten)"

Hat für mich gearbeitet, hoffentlich hilft es.

Anshul Singh
quelle
2
Ich denke ehrlich gesagt nicht, dass diese Antwort so sehr herabgestuft werden sollte wie bisher. Diese Antwort bezieht sich jedoch nicht auf das, was in der Frage gestellt wurde - wie der Paketname geändert werden kann . Es beantwortet jedoch die Frage "Wie kann der Titel der App geändert werden, die im Launcher angezeigt wird?". Ist es eine relevante Antwort? Nicht wirklich. Enthält es nützliche Informationen? Ja. Daher schlage ich vor, dass Sie eine Frage finden, die nach dem Launcher-Titel fragt, und Ihre Lösung dort anstatt hier veröffentlichen.
Dev-iL