So ändern Sie den Paketnamen einer Android-Anwendung

133

Mein Keystore ist beschädigt, daher muss ich die App im Android Market umbenennen und erneut einreichen. Wenn ich jedoch die Paketnamen in Manifest und in den Dateien bearbeite, werden mir unzählige Fehler angezeigt.

Wie kann der Anwendungsname richtig geändert werden?

Allen Gingrich
quelle
3
Zum Glück haben sie seit 2010 eine "magische Schaltfläche zum Ändern des Paketnamens" hinzugefügt - siehe @Marc Bernsteins Antwort - stackoverflow.com/a/4025633/383414
Richard Le Mesurier
danke Richard Le ...
DoruChidean
3
Mögliches Duplikat des Android Studio Rename Package
Bo Persson
Es ist schwer, ein Duplikat zu sein, als dies 3 Jahre zuvor gefragt wurde ...
Ryan Ternier

Antworten:

102

Wenn Sie Eclipse verwenden, können Sie diese Anweisungen auf der Entwickler-Website von Android ausprobieren . Sie sind speziell für das GestureBuilder-Beispiel vorgesehen, sollten jedoch, soweit ich das beurteilen kann, für jede Anwendung gelten:

[H] Hier erfahren Sie, wie Sie dies in Eclipse tun können:

  1. Klicken Sie mit der rechten Maustaste auf den Paketnamen ( src/com.android.gesture.builder).
  2. Wählen Sie Refactor> Rename und ändern Sie den Namen beispielsweise in com.android.gestureNEW.builder.
  3. Öffnen Sie die Manifestdatei. <manifest>Ändern Sie innerhalb des Tags den Paketnamen in com.android.gestureNEW.builder.
  4. Öffnen Sie jede der beiden Aktivitätsdateien und führen Sie Strg-Umschalt-O aus, um fehlende Importpakete hinzuzufügen. Speichern Sie dann jede Datei. Führen Sie die GestureBuilder-Anwendung auf dem Emulator aus.

Stellen Sie außerdem sicher, dass Sie daran gedacht haben, das Paket selbst zusammen mit den Verweisen darauf in den Dateien umzubenennen. In Eclipse sehen Sie den Namen des Pakets in der Datei- / Baumansicht des Datei-Explorers auf der linken Seite. Nach meiner Erfahrung kann Eclipse damit manchmal etwas finnicky und unzuverlässig sein (z. B. streunende Verweise auf den alten Paketnamen).

Eldarerathis
quelle
Dies ist wahrscheinlich der beste Weg, es gibt keine magische Schaltfläche zum Ändern des Paketnamens.
Blindstuff
13
Ja da ist. Siehe die Antwort von @Marc Bernstein.
Mark Phillip
Ich glaube nicht, dass der ursprüngliche Fragesteller auch die Namen der Java-Pakete ändern musste. Marc sollte die akzeptierte Antwort sein.
mpellegr
Der erste Schritt ist nicht "Rechtsklick auf", sondern "Refactor" im Menü.
Deqing
Und möglicherweise müssen Sie app_namein res-> values ​​=> strings.xml
Deqing
302

Es gibt eine Möglichkeit, den Paketnamen in Eclipse einfach zu ändern. Klicken Sie mit der rechten Maustaste auf Ihr Projekt, scrollen Sie nach unten zu Android Tools und klicken Sie dann auf Anwendungspaket umbenennen.

Marc Bernstein
quelle
2
Ich habe gerade Eldar's ausprobiert und es hat funktioniert - aber ich bin mir sicher, dass dies auch funktionieren wird.
Allen Gingrich
4
Dies ist die richtige Antwort, aber die aktuelle ADT ist fehlerhaft und bricht jeden Verweis auf Ihre R-Klasse. Sie müssen also auf jede einzelne Datei klicken, "Strg-Umschalt-O" (oder Cmd-Umschalt-O auf Mac) ausführen und Ihr neues Paket mit dem Namen R auswählen (NICHT android.R auswählen! Die Dinge werden schrecklich kaputt gehen ) und dann auf Speichern klicken. ... und für JEDE einzelne Datei wiederholen :(
Adam
@ Adam, nur um unser Leben einfacher zu machen, klicken Sie auf das Projekt und verwenden Sie Strg + Umschalt + O. Es wird die importierte Referenz in ALLEN Klassen / Dateien aktualisieren: D
Blaze Tama
Dies hat mir nur das Leben gerettet, da ich meinen lächerlichen Storekey verloren habe und meine Bewerbung erneut veröffentlichen musste.
Teoman Shipahi
3
Ich habe festgestellt, dass die oben in jeder Datei deklarierten Dateipaketnamen nicht mit dem neuen Paket oder dem Ordner übereinstimmen, in dem sie sich befinden. Sie können mit der rechten Maustaste auf den Quellordner klicken, der noch den alten Paketnamen enthält (zumindest meiner immer). Wählen Sie 'Refactor', dann 'Rename' und benennen Sie es in das neue Paket um. eclipse benennt dann den Ordner und die Paketdeklarationen jeder Datei in den neuen Paketnamen um, wie es eigentlich hätte sein sollen.
Androidcoder
52

So können Sie dies in Eclipse tun:

  1. Klicken Sie mit der rechten Maustaste auf den Paketnamen (src/com.android.gesture.builder).
  2. Wählen Sie Refactor > Renameden Namen aus und ändern Sie ihn beispielsweise in com.android.gestureNEW.builder.
  3. Öffnen Sie die Manifestdatei. <manifest>Ändern Sie innerhalb des Tags den Paketnamen in com.android.gestureNEW.builder.
  4. Öffnen Sie jede der beiden ActivityDateien und führen Sie Ctrl+ Shift+ aus O, um fehlende Importpakete hinzuzufügen. Speichern Sie dann jede Datei.
  5. Führen Sie die GestureBuilderAnwendung auf dem Emulator aus.

Link zum Beitrag

Aktualisieren Sie super einfach mit der rechten Maustaste auf Ihr Projekt ... Geben Sie hier die Bildbeschreibung ein

AZ_
quelle
2
Ziemlich tolle Möglichkeit, dies zu tun!
Typ
2
Die einfachere Lösung. Dies hätte akzeptiert werden sollen;)
Nomade
12

Ändern Sie in Android Studio , das Sie ganz ehrlich verwenden sollten, den Paketnamen umright-clicking den Paketnamen in derproject structure -> Refactor -> Rename...

Es gibt dann die Möglichkeit, das Verzeichnis oder das Paket umzubenennen. Wählen Sie das Paket aus. Das Verzeichnis sollte folgen. Geben Sie Ihren neuen Paketnamen ein und klicken Sie auf Refactor. Es werden alle Importe geändert und redundante Importe für Sie entfernt. Sie können es sogar in Kommentaren, Zeichenfolgen usw. für Sie reparieren lassen.

zuletzt ändern Sie den Paketnamen in Ihrer AndroidManifest.xml entsprechend nach oben. Andernfalls erhalten Sie überall Fehler, wenn Sie sich über R.whatever beschweren.

Eine weitere sehr nützliche Lösung

Erstellen Sie zunächst ein neues Paket mit dem gewünschten Namenby right clicking on the Java-Ordner -> Neu -> Paket.`

Wählen Sie dann alle Ihre Klassen aus und ziehen Sie sie in das neue Paket. AndroidStudio wird den Paketnamen überall neu faktorisieren.

Danach: in der App- build.gradleID Ihrer App hinzufügen / bearbeiten mit der neuen. dh ( com.a.bcin meinem Fall):

defaultConfig {
    applicationId "com.a.bc"
    minSdkVersion 13
    targetSdkVersion 19
}

Originaler Beitrag und weitere Kommentare hier

reckte sich
quelle
Seltsamerweise, wenn ich das mache, gibt es nicht das
Fattie
1
Das Gleiche tut es mir jetzt, wenn ich mit der rechten Maustaste auf das Stammverzeichnis klicke. Zumindest für mich ist das nicht mein tatsächlicher Paketname. Wenn Ihr Paketname com.a.bc lautet, sollte sich unter dem Stammverzeichnis ein Verzeichnis namens bc befinden. Hier erhalten Sie die verschiedenen Optionen. Im Moment bekomme ich ein Verzeichnis oder Modul. Versuchen Sie das Modul. Sie können es jederzeit rückgängig machen (Strg + Z sollte dies tun), wenn etwas kaputt geht.
Craned
Danke .. Scheiße, meinst du das ".idea" -Verzeichnis oder das "App" -Verzeichnis? Ich habe gerade eine erklärende Frage gepostet. Stackoverflow.com/questions/23786361/… Ahh .. Ich sehe jetzt "Refactoring-Verzeichnis / Modul auswählen ", wenn ich auf meinen "App" -Ordner klicke ... hoy caramba!
Fattie
@ JoeBlow Rechtsklick packageunter dem Ordnerjava
Abu Shumon
"Android Studio, das Sie ganz ehrlich verwenden sollten" Denken Sie daran, dass die Frage 2010 gestellt wurde, während AS erst 2013 angekündigt wurde, geschweige denn als stabiler Build (2014) veröffentlicht wurde. Zugegeben, Benutzer sollten heutzutage AS verwenden. :-)
LarsH
8

Ohne Sonnenfinsternis:

  1. Ändern Sie den Paketnamen und die Aktivitätsnamen in AndroidManifext.xml und an einer anderen Stelle, die in XML-Dateien angezeigt wird (benutzerdefinierte Ansichtsnamen usw.).

  2. Aktualisieren Sie die Paketimportanweisung für alle Quelldateien

  3. Benennen Sie alle Ordner so um, dass sie dem Paketnamen entsprechen. Ordnerpositionen:
    a. bin / classes
    b. gen
    c. src

  4. Aktualisiere den Projektnamen in build.xml (oder der Name deiner Apk ändert sich nicht)

  5. Löschen Sie alle .class-Dateien in bin / classes / com / example / myapp / (wenn Sie diesen Schritt überspringen, werden die Dateien während des Builds nicht neu geschrieben, und dex verursacht eine Reihe von Problemen bei der Verarbeitung von Fehlern "Klassenname stimmt nicht mit Pfad überein"

  6. Löschen von gen / com / example / myapp / BuildConfig.java (Ich weiß nicht, warum das Löschen von BuildConfig.class in Schritt 3a nicht dazu führte, dass dex seinen Pfad dazu aktualisierte, aber bis ich BuildConfig.java löschte, wurde gen / neu erstellt com / oldapp_example / oldapp und BuildConfig.class dort einfügen. Ich weiß nicht, warum R.java vom selben Speicherort dieses Problem nicht hat. Ich vermute, dass BuildConfig.java in der Vorkompilierung automatisch generiert wird, aber R.java ist nicht)

Die obigen 6 Schritte habe ich getan, um meinen Paketnamen zu ändern und einen erfolgreichen * Build zu erhalten. Es gibt möglicherweise eine bessere Möglichkeit, die Schritte 5 und 6 über Dex-Befehle zum Aktualisieren von Pfaden oder durch Bearbeiten von classes.dex.d im Stammverzeichnis des Projekts zu handhaben. Ich bin nicht mit dex vertraut oder ob es in Ordnung ist, classes.dex.d zu löschen / bearbeiten, also habe ich die Methode zum Löschen von .class-Dateien gewählt, von denen ich weiß, dass sie im Build neu generiert werden. Ich habe dann classes.dex.d überprüft, um festzustellen, was noch aktualisiert werden muss.

* In meinem Build sind keine Fehler oder Warnungen mehr vorhanden. EXCEPT dex und apkbuilder geben beide "Gelöschte Zieldatei gefunden" an, ohne Angaben zu dieser Datei zu machen. Ich bin mir nicht sicher, ob dies in jedem Build angezeigt wird, ob es dort war, bevor ich meinen Paketnamen durcheinander gebracht habe, oder ob es ein Ergebnis meiner Löschungen ist und mir ein Schritt fehlt.

Clusterflux
quelle
Ich habe die Umbenennung wie Sie gelöst, aber mit einer Vereinfachung: Löschen Sie die Ordner bin und gen. Außerdem konnte ich das umbenannte Projekt nicht in Eclipse importieren, bis ich die versteckte Datei .project geändert hatte. Sie hatte den alten Projektnamen unter <Name>
Jose_GD
6

Folge diesen Schritten:-

  • Klicken Sie mit der rechten Maustaste auf das Projekt.
  • Gehen Sie zu Android-Tools.
  • Klicken Sie auf Anwendungspaket umbenennen.
  • Ändern Sie den Namen des Anwendungspakets.

GETAN

Deepak Sharma
quelle
1
Dies funktioniert, aber Sie sollten auch den Paketnamen des Basis-src-Ordners umgestalten.
Ashishduh
6

Der schnellste Weg, dies in Android Studio 1.3 zu tun :

  1. Ändern Sie den Paketnamen in der manifest
  2. Geh zu Module Settings[F4]-> Flavors, inApplication Id schreiben Sie den gleichen Namen.
  3. Erstellen Sie ein neues Paket mit diesem Namen: [right-click-> new-> package]
  4. Wählen Sie alle Java-Dateien Ihres Projekts aus und fahren Sie fort [Right-click-> Refactor-> Move-> {Select package}-> Refactor]

PS Wenn Sie dieser Reihenfolge nicht folgen, können Sie am Ende alle Java-Dateien nacheinander mit neuen Importen und einer Reihe von Fehlern bei der Kompilierung ändern. Daher ist die Reihenfolge sehr wichtig.

Movsar Bekaev
quelle
1
Bei dieser Methode bleibt das R durch das Refactoring unverändert. Importieren Sie also com.app.myapp.R ändert sich NICHT in den neuen Paketnamen, und Sie müssen einen nach dem anderen nehmen ...
OWADVL
@OWADVL, R ändert sich automatisch, wenn Sie Dateien in das neue Paket verschieben. Android Studio führt beim Verschieben von Java-Dateien automatisch eine Neuerstellung durch. Ich mache das jeden Tag und solange ich diese Reihenfolge behalte, ändere ich nie etwas in Java-Dateien manuell
Movsar Bekaev
In Eclipse können wir jedoch die App-Paket-ID ändern, ohne das Paket des gesamten Codes zu ändern. Der Assistent benennt BuildConfig & R-Referenzen für Sie um. Ich bin verwirrt, dass es in AS nicht dasselbe gibt.
Tom
5

Das Ändern des Paketnamens ist ein Schmerz im Arsch. Es sieht so aus, als würden verschiedene Methoden für verschiedene Menschen funktionieren. Meine Lösung ist schnell und fehlerfrei. Es sieht so aus, als ob keine Reinigung oder ein Zurücksetzen der Sonnenfinsternis erforderlich ist.

  1. Klicken Sie mit der rechten Maustaste auf den Paketnamen und dann auf Refraktor> Umbenennen.
  2. Klicken Sie mit der rechten Maustaste auf den Projektnamen Android tools> Anwendungspaket umbenennen.
  3. Legen Sie die Paketnamen im Manifest manuell fest, die durch die vorherigen Schritte nicht geändert wurden.
erdomester
quelle
3

Bernstein hat die Methode, verwenden Sie das Eclipse-Tool "Anwendungspaket umbenennen", müssen Sie möglicherweise auch nachträglich einige Aufräumarbeiten durchführen. Außerdem verliert Eclipse manchmal den Überblick, wenn Sie Änderungen an einem Projekt vornehmen. Möglicherweise müssen Sie das Tool "Projekt bereinigen" (im Menü "Projekt") verwenden. Wenn dies nicht funktioniert, müssen Sie Eclipse möglicherweise schließen und neu starten. Voo-doo-Lösungen, aber Eclipse kann so sein.

m0j0
quelle
3

Ich fand die einfachste Lösung, Regexxer zu verwenden, um "com.package.name" durch "com.newpackage.name" zu ersetzen und die Verzeichnisse dann ordnungsgemäß umzubenennen. Super einfach, super schnell.

Robisaks
quelle
3
  1. Ändern Sie zunächst den Paketnamen in der Manifestdatei
  2. Re-Faktor> Benennen Sie den Namen des Pakets im srcOrdner um und setzen Sie ein Häkchen fürrename subpackages
  3. Das ist alles was du getan hast.
Sathirar
quelle
Ich habe versucht, Marc Bernsteins Android Tools-> Anwendungspaket umbenennen zu verwenden, aber es gab mir einen Fehler. Dies war einfacher, obwohl ich einige Dinge nach der Änderung reparieren musste
David-Hoze
2

Es gibt auch eine andere Lösung für Benutzer ohne Eclipse. Ändern Sie einfach das Paketattribut im <manifest> -Tag in AndroidManifest.xml, indem Sie den alten Paketnamen durch einen neuen ersetzen. Hinweis: Sie müssen dann alle zugehörigen Importanweisungen und zugehörigen Ordner in Ihrem Projekt manuell anpassen.

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="new.package.name"
    .....
</manifest>
Wie du
quelle
1

Alternative:

  1. Öffnen Sie AndroidManifest.xml
  2. Ändern Sie package = "NEW NAME" innerhalb des Manifest-Tags.
MapleLover
quelle
1
  1. Klicken Sie mit der rechten Maustaste auf Projekt> Android Tools> Anwendungspaket umbenennen

  2. Gehen Sie zu src und klicken Sie mit der rechten Maustaste auf Ihr Hauptpaket> Refactor> Umbenennen

  3. Gehen Sie zur Manifestdatei und ändern Sie Ihren Paketnamen.

ritesh4326
quelle
1

Ich habe nur ein paar Stunden verloren, als ich alle Lösungen ausprobiert habe. Ich war mir sicher, das Problem liegt in meinem Code - apk startet aber einige Fehler bei der Arbeit mit verschiedenen Klassen und Aktivitäten.

Nur so kann ich mit meinem Projekt arbeiten:

  1. umbenennen - Datei / umbenennen und alle Kontrollkästchen aktivieren
  2. Suche nach nicht umbenannten Stellen, ich hatte in einem der alten Layouts noch in Tools: context = "..
  3. neuen Arbeitsbereich erstellen
  4. Projekt in neuen Arbeitsbereich importieren

Für mich funktioniert es nur Lösung.

Dudeist
quelle
1

Die Verwendung von IntelliJ mit dem Android (Studio) -Plugin war also: Ich ging nach AndroidManifest.xmloben und änderte den Paketnamen, indem ich mit der rechten Maustaste auf -> Refactor -> Umbenennen klickte. Unser damaliger Paketname bestand aus vier Teilen a.b.c.d, dem neuen nur a.b.c. Also habe ich die ersten drei umbenannt. Dann ging ich in das Verzeichnis der generierten Quellen ( app\build\generated\source\r\development\debug\a\b\c\d), klickte mit der rechten Maustaste Rund Refactor-> Move [d] in ein höheres Paket. Gleiches gilt für BuildConfiginapp\build\generated\source\buildConfig\development\debug\a\b\c\d .

Mit Refactor-> Move aktualisiert IntelliJ alle Verweise auf BuildConfigund R.

Schließlich habe ich alle applicationId [s] aktualisiert, die ich in gradle.build gefunden habe. Ich drücke auf Projekt reinigen, Projekt erstellen und neu erstellen. Löschte die App von meinem Handy und drückte auf "Play". Es hat alles geklappt, so dass das Refactoring einfach und recht schnell war.

Raul Pinto
quelle
1

In Android Studio 1.2.2 sagen , wenn Sie ändern möchten , com.example.myappumorg.mydomain.mynewapp Sie die Schritte in jedem der Verzeichnisse im folgenden Screenshot als angezeigt folgen kann. Sie erhalten die Vorschauoption, damit Sie eine Vorschau anzeigen können, bevor Sie Änderungen vornehmen.

Gehen Sie zu Refactor -> Renameund geben Sie Ihren neuen Namen. Sie müssen dies für jeden Ordner tun, z. B. für com, example und myapp. Die Importe werden automatisch aktualisiert, sodass Sie sich keine Sorgen machen müssen. Geben Sie hier die Bildbeschreibung ein

Aktualisieren Sie auch die Datei, build.gradledie nicht automatisch aktualisiert wird.

defaultConfig {
        applicationId "org.mydomain.mynewapp" //update the new package name here
        minSdkVersion 15
        targetSdkVersion 22
        versionCode 1
        versionName "1.0"
    }

Danach wird es darum bitten, es zu synctun. Dann wird alles gut. Danach kann ich meine APK in den Google Store hochladen. Stellen Sie sicher, dass Sie Ihre App signiert haben, um sie in den Store hochzuladen.

Krishnadas PC
quelle
0
  1. In Ihrem Android-Studio befindet sich im Projektfenster das Zahnradsymbol "Klicken Sie darauf".
  2. Deaktivieren Sie die Option Kompakte leere Mittelpakete
  3. Jetzt wurde das Paketverzeichnis aufgeteilt, dh einzelne Verzeichnisse.
  4. Wählen Sie das Verzeichnis aus, das Sie umbenennen möchten.
  5. Klicken Sie mit der rechten Maustaste auf dieses bestimmte Verzeichnis.
  6. Wählen Sie Refactor und benennen Sie die Option um.
  7. Das Dialogfeld wurde geöffnet, benennen Sie es um.
  8. Nachdem Sie einen neuen Namen eingegeben haben, klicken Sie auf Refactor.
  9. Klicken Sie dann unten auf Do Refactor.
  10. Dann aktualisiert Android Studio alle Änderungen.
  11. Öffnen Sie nun die Datei build.gradle und aktualisieren Sie die applicationId und synchronisieren Sie sie.
  12. Gehen Sie nun zur Manifestdatei und benennen Sie das Paket um.
  13. Erstellen Sie Ihr Projekt neu.
  14. Du bist fertig :)
Hanisha
quelle