Ä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?


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

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

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.


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


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.


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/


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)


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


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.


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


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.


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


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

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


0

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


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

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


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
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.