Come cambiare il nome del pacchetto di un'applicazione Android


133

Il mio keystore è danneggiato, pertanto Android Market mi richiede di rinominare l'app e inviarla di nuovo. Tuttavia, ogni volta che vado a modificare i nomi dei pacchetti in Manifest e in tutti i file, mi dà tonnellate di errori.

Qual è il modo corretto di cambiare il nome dell'applicazione?


3
per fortuna hanno aggiunto un "pulsante di nome magico, pacchetto cambiamento" dal 2010 - si veda la risposta di @ Marc Bernstein - stackoverflow.com/a/4025633/383414
Richard Le Mesurier

grazie Richard Le ...
DoruChidean

3
Possibile duplicato del pacchetto Rinomina Android Studio
Bo Persson

difficile essere un duplicato quando questo è stato chiesto 3 anni prima ...
Ryan Ternier,

Risposte:


102

Se stai usando Eclipse, puoi provare queste istruzioni dal sito degli sviluppatori Android. Sono specifici per l'esempio GestureBuilder ma dovrebbero applicarsi a qualsiasi applicazione per quanto ne so:

[H] Ecco come è possibile farlo in Eclipse:

  1. Fare clic con il tasto destro sul nome del pacchetto ( src/com.android.gesture.builder).
  2. Seleziona Refactor> Rinomina e modifica il nome, ad esempio in com.android.gestureNEW.builder.
  3. Apri il file manifest. All'interno del <manifest>tag, cambia il nome del pacchetto in com.android.gestureNEW.builder.
  4. Apri ciascuno dei due file di attività ed esegui Ctrl-Shift-O per aggiungere pacchetti di importazione mancanti, quindi salva ogni file. Esegui l'applicazione GestureBuilder sull'emulatore.

Inoltre, assicurarsi di aver ricordato di rinominare il pacchetto stesso insieme ai riferimenti ad esso nei file. In Eclipse puoi vedere il nome del pacchetto nella finestra di esplorazione file / vista ad albero sul lato sinistro. Nella mia esperienza, Eclipse a volte può essere un po 'complicato e inaffidabile con questo (lasciando ad esempio riferimenti vaganti al vecchio nome del pacchetto).


Questo è probabilmente il modo migliore per farlo, non esiste un pulsante magico, cambia il nome del pacchetto.
blindstuff,

13
Si C'è. Vedi la risposta di @Marc Bernstein.
Mark Phillip,

Non penso che l'interrogatore originale avesse bisogno di cambiare anche i nomi dei pacchetti Java. Marc dovrebbe essere la risposta accettata.
mpellegr,

Il primo passo non è "fare clic con il tasto destro del mouse", dovrebbe essere "Rifattore" nel menu.
Deqing,

E potresti aver bisogno di cambiare app_namein res-> valori => strings.xml
Deqing

302

C'è un modo per cambiare facilmente il nome del pacchetto in Eclipse. Fare clic con il pulsante destro del mouse sul progetto, scorrere fino ad Strumenti Android, quindi fare clic su Rinomina pacchetto applicazioni.


2
Ho appena provato Eldar e ha funzionato, ma sono sicuro che funzionerà anche questo.
Allen Gingrich,

4
Questa è la risposta corretta, ma l'attuale ADT è interrotto e interrompe ogni riferimento alla tua classe R. Quindi devi fare clic su ogni singolo file, fare "ctrl-shift-o" (o cmd-shift-o su Mac) e selezionare il tuo nuovo pacchetto chiamato R (NON selezionare android.R! Le cose si romperanno in modo orribile ), quindi premi Salva. ... e ripeti per OGNI singolo file :(
Adam,

@Adam solo per semplificarci la vita, fai clic sul progetto e usa ctrl + shift + o, aggiornerà il riferimento importato in TUTTA la classe / file: D
Blaze Tama

questo mi ha appena salvato la vita da quando ho perso la mia ridicola vetrina e ho dovuto ripubblicare la mia domanda.
Teoman Shipahi

3
ho trovato i nomi dei pacchetti di file dichiarati nella parte superiore di ogni file per non corrispondere al nuovo pacchetto, né la cartella in cui si trovano. Puoi fare clic con il tasto destro su quella cartella di origine che ha ancora il vecchio nome del pacchetto (almeno il mio lo fa sempre), selezionare 'refactor' quindi 'rename' e rinominarlo nel nuovo pacchetto. eclipse rinominerà quindi la cartella e le dichiarazioni del pacchetto di ciascun file con il nome del nuovo pacchetto, come avrebbe dovuto fare in primo luogo.
Androidcoder

52

Ecco come è possibile farlo in Eclipse:

  1. Fare clic con il tasto destro sul nome del pacchetto ( src/com.android.gesture.builder).
  2. Selezionare Refactor > Renamee modificare il nome, ad esempio in com.android.gestureNEW.builder.
  3. Apri il file manifest. All'interno del <manifest>tag, cambia il nome del pacchetto in com.android.gestureNEW.builder.
  4. Apri ciascuno dei due Activityfile e fai Ctrl+ Shift+ Oper aggiungere i pacchetti di importazione mancanti, quindi salva ogni file.
  5. Esegui l' GestureBuilderapplicazione sull'emulatore.

Link per pubblicare

Aggiorna in modo semplicissimo il tasto destro del mouse sul tuo progetto ... inserisci qui la descrizione dell'immagine


2
Un modo fantastico per farlo!
Amico,

2
La soluzione più semplice Questo avrebbe dovuto essere accettato;)
Nomade il

12

In Android Studio , che, onestamente, dovresti usare, cambia il nome del pacchetto diright-clicking del pacchetto sul nome del pacchetto inproject structure -> Refactor -> Rename...

Dà quindi la possibilità di rinominare la directory o il pacchetto. Seleziona il pacchetto. La directory dovrebbe seguire l'esempio. Digita il nome del nuovo pacchetto e fai clic su Refactor. Cambierà tutte le importazioni e rimuoverà le importazioni ridondanti. Puoi anche farlo riparare per te nei commenti e nelle stringhe, ecc.

infine , modifica il nome del pacchetto di conseguenza in AndroidManifest.xml verso l'alto. Altrimenti otterrai errori ovunque lamentandoti di R.whatever.

Un'altra soluzione molto utile

Per prima cosa crea un nuovo pacchetto con il nome desiderato by right clicking on thecartella java -> nuovo -> pacchetto

Quindi, selezionare e trascinare tutte le classi nel nuovo pacchetto. AndroidStudio ricodificherà il nome del pacchetto ovunque.

Dopodiché: nell'applicazione build.gradleaggiungi / modifica della tua appId con quella nuova. cioè ( com.a.bcnel mio caso):

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

Post originale e altri commenti qui


Stranamente, quando lo faccio, non dà la scelta directory / pacchetto ... solo il "nome del modulo" ...
Fattie

1
Fa lo stesso per me adesso se faccio clic con il tasto destro sulla directory principale. Almeno per me, non è il mio vero nome del pacchetto. Se il nome del pacchetto è com.a.bc, dovrebbe esserci una directory sotto la directory principale chiamata bc. Ecco dove otterrai le diverse opzioni. In questo momento, sto ottenendo directory o modulo. Prova il modulo. Puoi sempre annullarlo (Ctrl + z dovrebbe farlo) se si rompe qualcosa.
allungato

Grazie .. merda, intendi la directory ".idea" o la directory "app"? Ho appena pubblicato un Q esplicativo .. stackoverflow.com/questions/23786361/… Ahh .. Ora vedo "Seleziona directory / modulo refactoring" quando faccio clic sulla mia cartella "app" .... hoy caramba!
Fattie,

@JoeBlow fai clic packagecon il pulsante destro del mouse sotto la cartellajava
Abu Shumon,

"Android Studio, che, onestamente, dovresti usare" Tenendo presente che la domanda è stata posta nel 2010, mentre AS non è stato nemmeno annunciato fino al 2013, e tanto meno rilasciato come build stabile (2014). Concesso, oggi gli utenti dovrebbero usare AS. :-)
LarsH

8

Senza Eclipse:

  1. Cambia il nome del pacchetto e i nomi delle attività in AndroidManifext.xml e in qualsiasi altro luogo che appare nei file .xml (nomi di visualizzazione personalizzati, ecc.)

  2. Aggiorna la dichiarazione di importazione del pacchetto in tutti i file di origine

  3. Rinomina tutte le cartelle in modo che corrispondano al nome del pacchetto. Posizioni delle cartelle:
    a. bin / classi
    b. gen
    c. src

  4. Aggiorna il nome del progetto in build.xml (o il nome del tuo apk non cambierà)

  5. Elimina tutti i file .class in bin / classes / com / example / myapp / (se salti questo passaggio i file non vengono riscritti durante la compilazione e dex danno un sacco di problemi nell'elaborazione degli errori "il nome della classe non corrisponde al percorso"

  6. Elimina gen / com / example / myapp / BuildConfig.java (non so perché l'eliminazione di BuildConfig.class nel passaggio 3a non abbia causato a dex l'aggiornamento del suo percorso a questo, ma fino a quando ho eliminato BuildConfig.java ha continuato a ricreare gen / com / oldapp_example / oldapp e inserendo BuildConfig.class lì. Non so perché R.java dalla stessa posizione non abbia questo problema. Sospetto che BuildConfig.java sia generato automaticamente in pre-compilazione ma R.java non è)

I 6 passaggi precedenti sono quelli che ho fatto per cambiare il nome del mio pacchetto e ottenere una build * corretta. Potrebbe esserci un modo migliore per gestire i passaggi 5 e 6 tramite i comandi dex per aggiornare i percorsi, o forse modificando classes.dex.d nella directory principale del progetto. Non ho familiarità con Dex o se è ok per eliminare / modificare classes.dex.d, quindi ho seguito il metodo di eliminazione dei file .class che so saranno rigenerati nella build. Ho quindi controllato classes.dex.d per vedere cosa era ancora necessario aggiornare.

* Nessun errore o avviso lasciato nella mia build EXCEPT dex e apkbuilder indicano entrambi "Trovato file di destinazione eliminato" senza dettagli su quale file sia. Non sono sicuro se questo si presenta in ogni build, se era lì prima che avessi sbagliato il nome del mio pacchetto, o se fosse il risultato delle mie eliminazioni e mi manca un passaggio.


Ho risolto il nome come hai fatto tu, ma con una semplificazione: elimina le cartelle bin e gen. Inoltre non ho potuto importare il progetto rinominato in Eclipse fino a quando non ho modificato il file nascosto .project, che aveva il vecchio nome del progetto in <name>
Jose_GD

6

Segui questi passi:-

  • Fare clic con il tasto destro sul progetto.
  • Vai a strumenti Android.
  • Fai clic su Rinomina pacchetto applicazione.
  • Modifica il nome del pacchetto dell'applicazione.

FATTO


1
Funziona, ma dovresti anche riformattare il nome del pacchetto della cartella src di base.
ashishduh,

6

Il modo più veloce per farlo in Android Studio 1.3 :

  1. Modificare il nome del pacchetto in manifest
  2. Vai a Module Settings[F4]-> Flavors, per Application Idscrivere lo stesso nome.
  3. Crea un nuovo pacchetto con quel nome: [right-click-> new-> package]
  4. Seleziona tutti i file java del tuo progetto e procedi [Right-click-> Refactor-> Move-> {Select package}-> Refactor]

PS Se non segui questo ordine, puoi finire per cambiare tutti i file java uno alla volta con nuove importazioni e un sacco di errori di compilazione, quindi l'ordine è molto importante.


1
Con questo metodo, la R rimane invariata dal refactoring. quindi import com.app.myapp.R NON cambia nel nuovo nome del pacchetto e devi prenderne uno per uno ...
OWADVL

@OWADVL, R cambia automaticamente quando sposti i file nel nuovo pacchetto, Android Studio esegue automaticamente la ricostruzione quando sposti i file .java, lo faccio ogni giorno e finché mantengo questo ordine, non cambio mai nulla nei file .java manualmente
Movsar Bekaev,

Ma in Eclipse, potremmo cambiare l'ID del pacchetto dell'app, senza cambiare il pacchetto di tutto il codice. La procedura guidata rinominerebbe i riferimenti BuildConfig & R per te. Sono perplesso che la stessa cosa non esiste in AS.
Tom,

5

Cambiare il nome del pacchetto è una seccatura. Sembra che metodi diversi funzionino per persone diverse. La mia soluzione è rapida e senza errori. Sembra che non sia necessaria alcuna pulizia o ripristino dell'eclissi.

  1. Fare clic con il tasto destro sul nome del pacchetto, quindi Refractor> Rinomina.
  2. Fare clic con il tasto destro sul nome del progetto Strumenti Android> Rinomina pacchetto applicazione.
  3. Impostare manualmente nel Manifest i nomi dei pacchetti che non sono stati modificati dai passaggi precedenti.

3

Bernstein ha il metodo, usa lo strumento Eclipse, "Rinomina pacchetto applicazione", potresti dover fare un po 'di pulizia anche dopo il fatto. Inoltre, a volte Eclipse perde traccia delle cose quando si apportano modifiche a un progetto. Potrebbe essere necessario utilizzare lo strumento "Pulisci progetto" (nel menu "Progetto"). Se il problema persiste, potrebbe essere necessario chiudere e riavviare Eclipse. Soluzioni Voo-doo, ma Eclipse può essere così.


3

Ho trovato che la soluzione più semplice era usare Regexxer per sostituire "com.package.name" con "com.newpackage.name", quindi rinominare le directory correttamente. Super facile, super veloce.


3
  1. Pugno cambia il nome del pacchetto nel file manifest
  2. Rifattore> Rinomina il nome del pacchetto nella srccartella e seleziona un segno di spuntarename subpackages
  3. Questo è tutto ciò che hai fatto.

Ho provato a utilizzare gli strumenti Android di Marc Bernstein-> Rinomina pacchetto applicazioni, ma mi ha dato un errore. Questo è stato più semplice, anche se ho dovuto sistemare alcune cose dopo il cambio
david-hoze,

2

Esiste anche un'altra soluzione per gli utenti senza Eclipse: basta cambiare l'attributo del pacchetto nel tag <manifest> in AndroidManifest.xml, sostituendo il vecchio nome del pacchetto usato con uno nuovo. Nota: è necessario modificare manualmente tutte le istruzioni di importazione correlate e le relative cartelle nel progetto anche di.

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

1

Alternativa:

  1. Apri AndroidManifest.xml
  2. Modifica pacchetto = "NUOVO NOME" all'interno del tag manifest.

1
  1. Fare clic con il tasto destro su Progetto> Strumenti Android> Rinomina pacchetto applicazione

  2. Vai su src e fai clic con il tasto destro del mouse sul pacchetto principale> Refactor> Rinomina

  3. Vai al file manifest e modifica il nome del pacchetto.


1

Ho perso poche ore a provare tutte le soluzioni. Ero sicuro, il problema è nel mio codice - l'apk si avvia ma alcuni errori quando si lavora con classi e attività diverse.

Solo modo di lavorare con il mio progetto:

  1. rinominalo - file / rinomina e seleziona tutte le caselle di controllo
  2. verifica la presenza di luoghi non rinominati, avevo in uno dei layout il vecchio nome ancora negli strumenti: context = "..
  3. creare un nuovo spazio di lavoro
  4. importa il progetto in un nuovo spazio di lavoro

Per me funziona, unica soluzione.


1

Quindi, usare IntelliJ con il plug-in Android (Studio) è stato: Sono andato AndroidManifest.xmlin cima e ho cambiato il nome del pacchetto facendo clic con il tasto destro del mouse -> Refactor -> rinomina. Il nostro nome del pacchetto allora aveva quattro parti a.b.c.d, solo quella nuova a.b.c. Quindi ho rinominato i primi tre. Poi sono andato alla directory delle fonti generate ( app\build\generated\source\r\development\debug\a\b\c\d), alla Rclasse cliccata con il tasto destro e Refactor-> Sposta [d] su un pacchetto più in alto. Lo stesso con BuildConfiginapp\build\generated\source\buildConfig\development\debug\a\b\c\d .

Usando Refactor-> Move, IntelliJ aggiorna tutti i riferimenti a BuildConfige R.

Alla fine ho aggiornato tutte le ApplicationId che ho trovato in gradle.build che ho trovato. Ho colpito Clean Project, Make e Rebuild Project. Eliminata l'app dal mio telefono e premi "Riproduci". Tutto ha funzionato, quindi il refactoring è stato facile e abbastanza veloce.


1

In Android Studio 1.2.2 Dire se si desidera passare com.example.myappa org.mydomain.mynewapp È possibile seguire i passaggi in ciascuna directory come mostrato nella schermata seguente. Ti darà l'opzione di anteprima in modo da poter visualizzare l'anteprima prima di apportare qualsiasi modifica.

Vai a Refactor -> Renamee dai il tuo nuovo nome. Devi farlo per ciascuna delle cartelle, ad esempio per com, esempio e myapp. Aggiornerà automaticamente le importazioni in modo da non doverti preoccupare. inserisci qui la descrizione dell'immagine

Aggiorna anche il file build.gradleche non viene aggiornato automaticamente.

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

Dopodiché lo chiederà sync. Quindi andrà tutto bene. Sono in grado di caricare il mio APK su Google Store dopo questo. Assicurati di aver firmato l'app per caricarla nello store.


0
  1. Nel tuo studio Android, nel pannello del progetto, è presente l'icona a forma di ingranaggio "Fai clic su di esso".
  2. Deseleziona i pacchetti centrali vuoti compatti
  3. Ora la directory del pacchetto è stata suddivisa, cioè singole directory.
  4. Seleziona la directory che vuoi rinominare.
  5. Fare clic con il tasto destro su quella particolare directory.
  6. Seleziona refactor e quindi rinomina l'opzione.
  7. La finestra di dialogo è stata aperta, rinominarla.
  8. Dopo aver inserito un nuovo nome, fai clic su Refactor.
  9. Quindi fare clic su Esegui refattore in basso.
  10. Quindi Android Studio aggiornerà tutte le modifiche.
  11. Ora apri il file build.gradle e aggiorna ApplicationId e sincronizzalo.
  12. Ora vai al file manifest e rinomina il pacchetto.
  13. Ricostruisci il tuo progetto.
  14. Hai fatto :)
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.