Copia il progetto esistente con un nuovo nome in Android Studio


100

Vorrei copiare il mio progetto Android e creare un nuovo progetto dagli stessi file solo con un nome diverso. Lo scopo è così che posso avere una seconda versione della mia app che è supportata da pubblicità nell'app store.

Ho trovato questa risposta qui:

Android: copia il progetto esistente con un nuovo nome

Ma è per Eclipse. Come posso farlo in Android Studio?

Risposte:


66

I passaggi nel collegamento specificato dovrebbero funzionare anche per Android Studio. Basta fare una copia (utilizzando un file manager) dell'intera cartella del modulo e assegnargli un nuovo nome. Ora aprilo e usa Refactor -> Rename(fai clic con il pulsante destro del mouse sull'elemento che desideri rinominare) per rinominare il tuo modulo e pacchetto.

Vedere questo per i dettagli sul refactoring in IntelliJ / Android Studio.


Windows 10 dice che il percorso del file è troppo lungo. Ho l'aggiornamento dell'anniversario e ho fatto il trucco dell'Editor Criteri di gruppo per ebable percorsi di file lunghi. Sembra che Explorer non sia ancora in grado di gestire lunghi percorsi di file. Vedi: superuser.com/questions/1114181/…
Andrew S

3
Ho provato questo, ma quando eseguo il progetto Android Studio sta scrivendo sulla mia vecchia app sul mio dispositivo. Voglio avere entrambe le app contemporaneamente sul dispositivo (per testare le schede personalizzate di Chrome). Come posso forzare Android Studio ad avere entrambe le app contemporaneamente sul dispositivo?
Locksleyu

Ho selezionato la cartella del pacchetto di base e ho fatto clic su Refactor -> Rinomina, ho ricevuto errori con l'opzione "rinomina pacchetto", quindi ho fatto con successo l'opzione "rinomina cartella".
Ismail Yavuz

Inoltre, devi eseguire il refactoring e rinominare il file iml !!!, se non lo fai, non funzionerà
JoeCoolman

43

Se utilizzi Gradle, non dimenticare di modificare l' attributo applicationId nel file app / build.gradle .


3
Questo è molto importante perché mi dimentico di modificare l'ID applicazione nel file build.gradle e finisco per pubblicare un'app con un nome di pacchetto sbagliato su Play Store
wenjiun

Questo è più un commento che una risposta reale.
The Unknown Dev

Quella era la chiave!
Denis

39

Come ha sottolineato free3dom , ecco cosa si dovrebbe fare:

  1. Crea una copia utilizzando il file manager
  2. Modifica manualmente il build.gradlefile dell'app per cambiare il nome del pacchetto (puoi utilizzare il file manager).
  3. Modifica manualmente AndroidManifest.xmlper cambiare il nome del pacchetto.
  4. Corri gradle sync.
  5. Apri il progetto in Android Studio e esegui il refactoring del nome del pacchetto.
  6. Esegui di nuovo gradle sync.

Sembra funzionare senza problemi.


9
Mi chiedo come stai facendo una sincronizzazione graduale fuori da Android Studio
erdomester

1
seguito questo, ma non ho eseguito il passaggio 4, ho solo aperto Android Studio e importato il progetto copiato. Inoltre ha eliminato il file .iml dal progetto copiato quando ne veniva creato uno nuovo. ha funzionato alla grande! Grazie!
nommer

@nommer di cui .imlparli ?? posso trovarne uno su project/prjectname.imle l'altro su project/app/app.iml, quale devo essere cancellato?
Hirdesh Vishwdewa

@Veeru puoi spiegare il 5 ° passo ??
Hirdesh Vishwdewa

@HirdeshVishwdewa bella domanda! ho fatto qualche tempo fa che non riesco a ricordare, ma sto indovinando che è il progetto / * IML.
nommer

31

Se stai utilizzando la versione più recente di Android Studio, puoi lasciare che ti assista in questo.

Nota: l' ho testato solo in Android Studio 3.0.

La procedura è la seguente:

  1. Nella vista del progetto (questo viene fornito con le acquisizioni e la struttura sul lato sinistro dello schermo), seleziona Progetto invece di Android .
    Il nome del tuo progetto sarà in cima all'albero (insieme alle librerie esterne).
    Seleziona il tuo progetto quindi vai a Refactor -> Copy....
    Android Studio ti chiederà il nuovo nome e dove desideri copiare il progetto. Fornisci lo stesso.

  2. Al termine della copia, apri il nuovo progetto in Android Studio.
    I pacchetti saranno ancora sotto il vecchio nome del progetto.
    Questi sono i pacchetti delle classi Java, l'ID dell'applicazione e tutto il resto che è stato generato utilizzando il vecchio nome del pacchetto.
    Dobbiamo cambiarlo.
    Nella visualizzazione del progetto, seleziona Android .
    Apri la sottodirectory java e seleziona il pacchetto principale.
    Quindi fai clic destro su di esso e vai a Refactorquindi Rename.
    Android Studio ti darà un avviso dicendo che più directory corrispondono al pacchetto che stai per refactoring.
    Fare clic su Rename packagee non Rename directory .
    Dopo questo passaggio, il tuo progetto è ora completamente sotto il nuovo nome.

  3. Apri il file res / values ​​/ strings.xml e cambia il nome del progetto.
  4. Non dimenticare di modificare l'ID dell'applicazione nel "Gradle Build Module: app".
  5. Un ultimo passaggio è pulire e ricostruire il progetto altrimenti quando provi a eseguire il tuo progetto Android Studio ti dirà che non è possibile installare l'APK (se hai eseguito il progetto precedente).
    Così Build -> Clean projectpoi Build -> Rebuild project.
    Ora puoi eseguire il tuo nuovo progetto clonato.

Il passaggio 4 è ciò di cui avevo bisogno per ottenere un progetto copiato e fallito dopo aver copiato la cartella, penso
Jim Factor

2
Importante: se utilizzi Google Play Services. Assicurati inoltre di aggiornare i nomi dei pacchetti nel file google-services.json.
Gihan Gamage

Grazie per questa risposta! Un'aggiunta: ho anche aggiornato rootProject.name in settings.gradle.
alexx

16

Lo scopo è così che posso avere una seconda versione della mia app che è supportata da pubblicità nell'app store.

Attualmente il modo migliore per farlo è senza copiare il progetto.
Puoi farlo usando gusti diversi nel tuo build.gradlefile.

 productFlavors {
        flavor1 {
            applicationId = "com.example.my.pkg.flavor1"
        }
        flavorAdSUpport {
            applicationId = "com.example.my.pkg.flavor2"
        }
  }

In questo modo hai solo una copia dei file e puoi gestire facilmente la differenza.


14

Questa è una combinazione della risposta di nt.bas e del passaggio 9 della risposta di Civic con esempi visivi perché mi ci è voluto un po 'per scoprire cosa si intendeva poiché sono nuovo in Android Studio. È stato testato in Android Studio 3.2.1.

  1. Apri il progetto che desideri clonare in Android Studio. (In questo esempio, il vecchio nome del progetto era test5e il nuovo nome del progetto era test6)

  2. Nel riquadro di panoramica dei file a sinistra, fare clic su: Progetto (dove attualmente potrebbe dire Android).

fig0

  1. Fare clic con il pulsante destro del mouse sul progetto nel riquadro Esplora file e fare clic su refactoring> clona.

Fig. 1

  1. Modificare il "Nuovo nome" con il nome del nuovo progetto e fare clic su OK.

fig2

  1. File> Apri> Nuova finestra> Seleziona il tuo nuovo progetto> Apri in una nuova finestra di progetto. Nella nuova finestra, attendi fino a quando l'ultima riga di Android Studio è terminata / dice: "Gradle Sync Finished".

16

17

14

  1. Nel riquadro di panoramica del file e fai clic con il pulsante destro del mouse (RMB) su: app.java/ <il nome del tuo vecchio progetto (non quello di prova, non quello di androidTest, solo quello vuoto)>

fig8

  1. Immettere il nuovo nome del pacchetto e selezionare entrambi i segni di spunta, quindi fare clic su refactoring.

fig9 fig10

  1. Nella barra in basso a sinistra, fai clic su "Esegui refactoring".

fig12

  1. Apri app / res / values ​​/ strings.xml e cambia il nome del vecchio progetto (es. Test5) con il nuovo nome del progetto in linea:

    <string name="app_name">test5</string>
    

fig3

  1. Apri Gradle scripts / build.gradle (Modulo: app) e cambia la riga nella stessa riga con il nome del tuo nuovo progetto:% fig4

    applicationId "com.example.a.test5"    
    

fig4

  1. Una linea gialla apparirà nella parte superiore del riquadro del codice, richiedendo la sincronizzazione gradle. Premi "sincronizza ora".

fig5

  1. nella barra in alto, premi build> Clean project.

fig13

  1. Se in basso a sinistra viene visualizzato "Gradle build terminata", fai clic su "Build> Rebuild project".

fig14

fig15

  1. Ora dovresti essere in grado di compilare ed eseguire di nuovo il tuo progetto (se ha funzionato in primo luogo).

1
Bella risposta! si può anche usare file> nuovo> importa progetto invece di aprire progetto al punto 5 sopra. Quello che ha funzionato per me.
Sasuke Uchiha

8

Sto seguendo questi passaggi e finora ha funzionato:

  1. Copia e incolla la cartella come una volta.
  2. Apri Android Studio (v3.0.1).
  3. Seleziona Apri un progetto esistente.
  4. Chiudi il messaggio che apparirà con il titolo: "Importa progetti Gradle".
  5. Sul lato sinistro della scheda Android vai a: app -> java -> seleziona la prima cartella (la cartella del tuo progetto)
  6. Refactoring => Rinomina ... (Maiusc + F6)
  7. Rinomina pacchetto, seleziona entrambe le opzioni: inserisci il nome della nuova cartella in minuscolo.
  8. Effettua il refactoring
  9. Seleziona: Sincronizza il progetto con i file Gradle nella barra degli strumenti.
  10. Build => Clean Project
  11. Vai su app -> res -> values ​​-> strings.xml e cambia il nome dell'app nella seconda riga.

Inoltre, se utilizzi le API dei servizi Google, come Maps, Firebase e simili ... Assicurati di rimuovere i file che hanno riferimenti al nome del vecchio pacchetto (come google_services.json in app / src). Si prega di fare riferimento a questo per l'intera procedura.
varun

3

L'appendice del gitbook del corso sui concetti fondamentali per sviluppatori Android include i passaggi per copiare e rinominare un progetto esistente:

https://google-developer-training.gitbooks.io/android-developer-fundamentals-course-practicals/content/en/appendix_utilities.html#copy_project


Ha funzionato alla grande per me con Android Studio 3.3, con un progetto complesso che ha molti moduli e dipendenze. Grazie.
nat101

1
Quel collegamento è alle sue ultime gambe: "Questo sito verrà rimosso il 31 luglio 2019".
Peter Mortensen

3

Quando si esegue il refactoring del nome del pacchetto in Android Studio, potrebbe essere necessario fare clic sulla piccola ruota dentata in alto a destra del pacchetto / android / progetto / ecc - navigatore e deselezionare 'pacchetti centrali vuoti compatti' per vedere ogni parte del nome del pacchetto come una propria directory. Quindi per le singole directory eseguire il refactoring.

Questo è importante se è necessario modificare tutte le parti del nome del pacchetto. Ad esempio, da com.example.originalproject a org.mydomain.newproject. Altrimenti, l'operazione di refactoring / ridenominazione consentirà solo di modificare "originalproject" in "newproject" e lascerà "com.example" invariato. C'è un buon video che mostra questo: https://www.youtube.com/watch?v=dMK-RBVLeIY


2

Quando copi il tuo progetto, dovrai anche eliminare i file di build intermedio rimanente originale (someActivity $ 4.class) dalle directory C: ... \ AndroidStudioProjects (nome_progetto) \ app \ build \ intermediates \ classes \ release .... In caso contrario, quasi sicuramente si verificheranno errori di compilazione per il nuovo progetto se si tenta di compilare il progetto copiato. Il refactoring non risolverà questo problema.


2

Ho provato da nt.bas answer e gnyrfta answer che funziona bene per me.

Citando dalla risposta nt. Bas :

Se stai utilizzando la versione più recente di Android Studio, puoi lasciare che ti assista in questo.

Nota: l' ho testato solo in Android Studio 3.0.

La procedura è la seguente:

  1. Nella vista del progetto (questo viene fornito con le acquisizioni e la struttura sul lato sinistro dello schermo), seleziona Progetto invece di Android .
    Il nome del tuo progetto sarà in cima all'albero (insieme alle librerie esterne).
    Seleziona il tuo progetto quindi vai a Refactor -> Copy....
    Android Studio ti chiederà il nuovo nome e dove desideri copiare il progetto. Fornisci lo stesso.

  2. Al termine della copia, apri il nuovo progetto in Android Studio.
    I pacchetti saranno ancora sotto il vecchio nome del progetto.
    Questi sono i pacchetti delle classi Java, l'ID dell'applicazione e tutto il resto che è stato generato utilizzando il vecchio nome del pacchetto.
    Dobbiamo cambiarlo.
    Nella visualizzazione del progetto, seleziona Android .
    Apri la sottodirectory java e seleziona il pacchetto principale.
    Quindi fai clic destro su di esso e vai a Refactorquindi Rename.
    Android Studio ti darà un avviso dicendo che più directory corrispondono al pacchetto che stai per refactoring.
    Fare clic su Rename packagee non Rename directory .
    Dopo questo passaggio, il tuo progetto è ora completamente sotto il nuovo nome.

  3. Apri il file res / values ​​/ strings.xml e cambia il nome del progetto.
  4. Un ultimo passaggio è pulire e ricostruire il progetto altrimenti quando provi a eseguire il tuo progetto Android Studio ti dirà che non è possibile installare l'APK (se hai eseguito il progetto precedente).
    Così Build -> Clean projectpoi Build -> Rebuild project.

Fino a questo punto rinominerai solo il nome dell'intero progetto . Per rinominare il nome del pacchetto è necessario seguire la risposta di gnyrfta che è stata descritta come:

Quando si esegue il refactoring del nome del pacchetto in Android Studio, potrebbe essere necessario fare clic sulla piccola ruota dentata in alto a destra del pacchetto / android / progetto / ecc - navigatore e deselezionare 'pacchetti centrali vuoti compatti' per vedere ogni parte del nome del pacchetto come una propria directory. Quindi per le singole directory eseguire il refactoring.


PS: se hai un file

Impossibile finalizzare la sessione: INSTALL_FAILED_INVALID_APK: la divisione lib_slice_0_apk è stata definita più volte

Basta eliminare la cartella build di appmodule e ricostruire il progetto!

Questo risolverà il problema!


2

Sto usando Android 3.3 ed è così che ha funzionato per me:

1 - Scegli la vista del progetto

2 - Fai clic con il pulsante destro del mouse sul nome del progetto, che si trova nella radice del progetto e scegli l'opzione refactor -> copy, ti verrà chiesto con una finestra per scegliere il nuovo nome.

3 - Dopo il passaggio 2, Android ti farà un nuovo progetto, devi aprire quel nuovo progetto con il nuovo nome

4 - Cambia il nome dell'app in "string.xml", è in "app / res / values ​​/ string.xml"

Ora ce l'hai, lo stesso progetto con un nuovo nome. Ora potresti voler cambiare il nome del pacchetto, è descritto nei passaggi seguenti

(opzionale) Per modificare il nome del pacchetto main

5 - vai su "app / java", ci saranno tre cartelle con lo stesso nome, una principale, una (androidTest)e una (test), fai clic con il tasto destro su quella principale e scegli format -> rename, ti verrà chiesto con un avviso che più directory corrispondono a quel pacchetto , quindi fai clic su "Rinomina pacchetto". Scegli un nuovo nome e fai clic su refactor. Ora, sotto la visualizzazione del codice, ecco un'anteprima del refactor, fai clic su "Esegui refactoring"

6 - Vai all'opzione "build", fai clic su "Clean project", quindi "Rebuild project".

7 - Ora chiudi il progetto e riaprilo di nuovo.


1
Finalmente una soluzione che non richiede 20 minuti! Ha funzionato al primo tentativo senza strani errori. Per il passaggio 5, ho appena eseguito il refactoring-> rinominato il mio pacchetto.
Snowman

2

Vai alla cartella di origine in cui si trova il tuo progetto.

  1. Copia il progetto e incolla e cambia il nome.
  2. Apri Android Studio e aggiorna.
  3. Vai a ->Settings.gradle.
  4. Includere ':your new project name '

2

Requisiti e test su Android Studio 3.5

Assicurati che il tuo vecchio progetto funzioni correttamente con la tua libreria Android Studio esistente.

  1. Copia la directory del progetto e rinomina la cartella per il nuovo nome del progetto, ad esempio Bramara
  2. Apri il tuo nuovo progetto esistente utilizzando Android Studio 3.5. Dopo aver aperto il progetto completo, vai a 1: Project -> Project. Potresti vedere che il tuo progetto ha solo due directory che puntano alla nuova cartella del progetto e alla vecchia cartella del progetto. Chiudi il tuo progetto.
  3. Modifica appl.iml nella directory nuovo progetto -> app -> appl.iml utilizzando l'editor di testo. Sostituisci tutto il vecchio nome del progetto nel nuovo nome del progetto.
  4. Riapri il tuo nuovo progetto esistente. Vai a 1: Project -> Project. Potresti vedere che il tuo progetto ha solo una directory.
  5. Vai a 1: Progetto -> Pacchetti. fare clic con il tasto destro del mouse sul componente -> Refactoring -> Rinomina.
  6. Apparirà un messaggio di avviso. Assicurati che tutte le modifiche vengano applicate alla nuova cartella del progetto! Dopodiché scegli Rinomina pacchetti, ad esempio com.dedetok.bramara.
  7. Vai a 1: Project -> Android. Apri app -> manifesti -> AndroidManifest.xml. Correggi l'attività dell'applicazione con il nuovo nome del pacchetto. Cambia il nome dell'applicazione con uno nuovo.
  8. Apri Gradle Scripts -> build.gradle (Module: app), cambia il tuo applicationId in un nuovo progetto, ad es. Com.dedetok.bramara e sincronizza il progetto.
  9. Pulisci e ricostruisci il tuo nuovo progetto.
  10. Il tuo nuovo progetto è pronto per essere modificato / modificato.

Nota: se adb viene eseguito mostrando attività non trovata, modifica la configurazione di esecuzione / debug. Il modulo dovrebbe puntare all'applicazione del modulo, ad esempio app.


Al passaggio 7 non sono riuscito a trovare app-> manifesti. Così ho aperto Project-> Project e dalla cartella src ho aperto il manifest. Lo studio ha chiesto di eseguire la sincronizzazione per modificare il file e poi è stato OK
makkasi

1

Il modo PIÙ FACILE (e sicuramente il più veloce) per farlo richiede WINRAR, 7zip o un software di archiviazione simile:

  1. Trova la cartella del progetto in Windows Explorer: fai doppio clic per aprire questa cartella.

  2. Crea una nuova cartella e chiamala "Backup".

  3. Mentre sei ancora nella cartella del progetto, seleziona tutti i file / cartelle, tranne la cartella "backup".

  4. Fai clic con il tasto destro e seleziona "aggiungi all'archivio" o "crea archivio" (il comando sarà diverso a seconda del software di archiviazione)

  5. Assegna un nome all'archivio e fai clic su OK.

  6. Sposta questo archivio nella cartella "Backup".

Hai finito: per aprire l'archivio di backup, apri la cartella "Backup" e fai clic con il pulsante destro del mouse sul file di backup. Seleziona "Estrai" o crea una nuova cartella in cui verranno estratti i file e premi "ok", quindi apri il progetto come faresti normalmente da Android Studio, ecc.


0

Ho avuto problemi con questo seguente:

https://google-developer-training.github.io/android-developer-fundamentals-course-concepts-v2/appendix/appendix-utilities/appendix-utilities.html

nella versione Android Studio: 3.3.2

finché non ho ucciso il file .idea / workspace.xml.

$ cp -rv Testcopysource/ TestCopyDest
$ rm TestCopyDest/.idea/workspace.xml
$ stdio.sh & # Run Android Studio on Linux

Prima di farlo, Android Studio puntava ancora alla cartella di origine originale e tutte le ridenominazioni venivano applicate ai file di origine originali (all'interno di Testcopysource nel mio esempio sopra).


0

A partire da febbraio 2020, per Android Studio 3.5.3, la risposta più semplice che ho trovato è questo video.

Nota 1: in 01.24 la scheda "Trova" viene visualizzata di seguito. Fai clic su "Esegui refactoring" e continua come nel video.

Nota 2: se si dispone di file Java / Kotlin "contrassegnati come testo normale", è necessario modificare manualmente il nome del pacchetto in alto, ad es.package com.example.thisplaceneedstobemanuallyupdated

Nota 3: fai attenzione alle maiuscole durante la ridenominazione, proprio come nel video.

Nota 4: se si desidera aggiornare il nome del progetto sulla barra del titolo della finestra del progetto, modificare il file rootProject.name = 'YourProjectName'" settings.gradle " nella directory " Gradle Scripts ".

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.