Copier un projet existant avec un nouveau nom dans Android Studio

100

Je souhaite copier mon projet Android et créer un nouveau projet à partir des mêmes fichiers avec un nom différent. Le but est que je puisse avoir une deuxième version de mon application qui est prise en charge par la publicité dans l'App Store.

J'ai trouvé cette réponse ici:

Android - copier un projet existant avec un nouveau nom

Mais c'est pour Eclipse. Comment puis-je faire cela dans Android Studio?

Mike
la source

Réponses:

66

Les étapes du lien que vous avez spécifiées doivent également fonctionner pour Android Studio. Faites simplement une copie (à l'aide d'un gestionnaire de fichiers) de tout le dossier du module et donnez-lui un nouveau nom. Maintenant, ouvrez-le et utilisez Refactor -> Rename(clic droit sur l'élément que vous souhaitez renommer) pour renommer votre module et package.

Consultez ceci pour plus de détails sur la refactorisation dans IntelliJ / Android Studio.

free3dom
la source
Windows 10 indique que le chemin du fichier est trop long. J'ai la mise à jour anniversaire et j'ai fait l'astuce de l'éditeur de stratégie de groupe pour mettre en ebable les longs chemins de fichiers. Il semble qu'Explorateur ne puisse toujours pas gérer les chemins de fichiers longs. Voir: superuser.com/questions/1114181/…
Andrew S
3
J'ai essayé cela, mais lorsque je lance le projet, Android Studio écrit sur mon ancienne application sur mon appareil. Je souhaite avoir les deux applications simultanément sur l'appareil (pour tester les onglets personnalisés Chrome). Comment puis-je forcer Android Studio à avoir les deux applications à la fois sur l'appareil?
Locksleyu
J'ai sélectionné le dossier du package de base et cliqué sur Refactor -> Renommer, j'ai eu des erreurs avec l'option "package rename", puis j'ai fait l'option "folder rename" avec succès.
Ismail Yavuz
Il faut également refactoriser et renommer le fichier iml !!!, si vous ne le faites pas, cela ne fonctionnera pas
JoeCoolman
43

Si vous utilisez Gradle, n'oubliez pas de modifier l' attribut applicationId dans le fichier app / build.gradle .

Sergii
la source
3
Ceci est très important car j'oublie de modifier l'applicationId dans le fichier build.gradle et finis par publier une application avec un nom de package erroné sur Play Store
wenjiun
C'est plus un commentaire qu'une vraie réponse.
The Unknown Dev
C'était la clé!
Denis
39

Comme l'a souligné free3dom , voici ce qu'il faut faire:

  1. Créer une copie à l'aide du gestionnaire de fichiers
  2. Modifiez manuellement le build.gradlefichier de l'application pour changer le nom du package (vous pouvez utiliser le gestionnaire de fichiers).
  3. Modifiez manuellement AndroidManifest.xmlpour changer le nom du package.
  4. Courez gradle sync.
  5. Ouvrez le projet dans Android Studio et modifiez le nom du package.
  6. Exécutez à nouveau gradle sync.

Cela semble fonctionner sans aucun problème.

Veeru
la source
9
Je me demande comment vous faites une synchronisation gradle en dehors du studio Android
erdomester
1
a suivi cela, mais n'a pas fait l'étape 4, a simplement ouvert Android Studio et importé le projet copié. Également supprimé le fichier .iml du projet copié au fur et à mesure de la création d'un nouveau. a très bien fonctionné! Merci!
nommer
@nommer dont tu .imlparles ?? je peux en trouver un sur project/prjectname.imlet un autre sur project/app/app.iml, lequel doit être supprimé?
Hirdesh Vishwdewa
@Veeru peux-tu expliquer la 5ème étape ??
Hirdesh Vishwdewa
@HirdeshVishwdewune bonne question! je l' ai fait il y a un moment que je ne me souviens pas, mais je devine que ce projet est / * IML.
Nommer
31

Si vous utilisez la dernière version d'Android Studio, vous pouvez le laisser vous aider.

Remarque: je l'ai testé dans Android Studio 3.0 uniquement.

La procédure est la suivante:

  1. Dans la vue du projet (cela vient avec les captures et la structure sur le côté gauche de l'écran), sélectionnez Projet au lieu d' Android .
    Le nom de votre projet sera le haut de l'arborescence (à côté des bibliothèques externes).
    Sélectionnez votre projet puis accédez à Refactor -> Copy....
    Android Studio vous demandera le nouveau nom et l'emplacement où vous souhaitez copier le projet. Fournissez la même chose.

  2. Une fois la copie terminée, ouvrez votre nouveau projet dans Android Studio.
    Les packages seront toujours sous l'ancien nom du projet.
    Il s'agit des packages de classes Java, de l'ID d'application et de tout ce qui a été généré à l'aide de l'ancien nom de package.
    Nous avons besoin de changer ça.
    Dans la vue du projet, sélectionnez Android .
    Ouvrez le sous-répertoire java et sélectionnez le package principal.
    Ensuite, faites un clic droit dessus et allez Refactorensuite Rename.
    Android Studio vous avertit que plusieurs répertoires correspondent au package que vous êtes sur le point de refactoriser.
    Cliquez sur Rename packageet non Rename directory .
    Après cette étape, votre projet est maintenant entièrement sous le nouveau nom.

  3. Ouvrez le fichier res / values ​​/ strings.xml et modifiez le nom du projet.
  4. N'oubliez pas de changer votre identifiant d'application dans le "Module de construction Gradle: app".
  5. Une dernière étape consiste à nettoyer et à reconstruire le projet, sinon lorsque vous essayez d'exécuter votre projet, Android Studio vous dira qu'il ne peut pas installer l'APK (si vous avez exécuté le projet précédent).
    Alors Build -> Clean projectalors Build -> Rebuild project.
    Vous pouvez maintenant exécuter votre nouveau projet cloné.
nt.bas
la source
L'étape 4 est ce dont j'avais besoin pour obtenir un projet copié en échec de déploiement après avoir simplement copié le dossier, je pense
Jim Factor
2
Important: si vous utilisez les services Google Play. Assurez-vous également de mettre à jour les noms de package dans le fichier google-services.json.
Gihan Gamage
Merci pour cette réponse! Un ajout: j'ai également mis à jour rootProject.name dans settings.gradle.
alexx le
16

Le but est que je puisse avoir une deuxième version de mon application qui est prise en charge par la publicité dans l'App Store.

Actuellement, la meilleure façon de le faire est de ne pas copier le projet.
Vous pouvez le faire en utilisant différentes saveurs dans votre build.gradlefichier.

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

De cette façon, vous ne disposez que d'une copie des fichiers et vous pouvez facilement gérer la différence.

Gabriele Mariotti
la source
14

Il s'agit d'une combinaison de la réponse de nt.bas et de l'étape 9 de la réponse de Civic avec des exemples visuels, car il m'a fallu un certain temps pour savoir ce qui était prévu depuis que je suis nouveau sur Android Studio. Il a été testé dans Android Studio 3.2.1.

  1. Ouvrez le projet que vous souhaitez cloner dans Android Studio. (Dans cet exemple, l'ancien nom de projet était test5et le nouveau nom de projet était test6)

  2. Dans le volet d'aperçu des fichiers de gauche, cliquez sur: Projet (où il pourrait actuellement indiquer Android).

fig0

  1. Cliquez avec le bouton droit de la souris sur le projet dans le volet de l'explorateur de fichiers et cliquez sur refactor> cloner.

Fig. 1

  1. Remplacez le "Nouveau nom" par le nouveau nom de votre projet et cliquez sur OK.

fig2

  1. Fichier> ouvrir> Nouvelle fenêtre> Sélectionnez votre nouveau projet> Ouvrir dans une nouvelle fenêtre de projet. Dans la nouvelle fenêtre, attendez que la ligne inférieure du studio Android soit terminée / dise: "Gradle Sync Finished".

16

17

14

  1. Dans le volet d'aperçu des fichiers et cliquez avec le bouton droit de la souris (RMB) sur: app.java/ <votre ancien nom de projet (pas celui de test, pas celui d'androidTest, juste celui vide)>

fig8

  1. Entrez le nouveau nom de votre package et sélectionnez les deux coches, cliquez sur refactor.

fig9 fig10

  1. Dans la barre en bas à gauche, cliquez sur "Refactor".

fig12

  1. Ouvrez app / res / values ​​/ strings.xml et remplacez le nom de l'ancien projet (par exemple test5) par le nouveau nom du projet en ligne:

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

fig3

  1. Ouvrez Gradle scripts / build.gradle (Module: app) et remplacez la ligne par la même ligne avec le nom de votre nouveau projet:% fig4

    applicationId "com.example.a.test5"    
    

fig4

  1. Une ligne jaune apparaîtra en haut de votre volet de code, demandant la synchronisation des notes. Appuyez sur "synchroniser maintenant".

fig5

  1. dans la barre supérieure, appuyez sur construire> Nettoyer le projet.

fig13

  1. S'il indique "Gradle build terminé" en bas à gauche, vous cliquez sur "Build> Rebuild project".

fig14

fig15

  1. Vous devriez maintenant être en mesure de compiler et d'exécuter à nouveau votre projet (si cela a fonctionné en premier lieu).
à
la source
1
très bonne réponse! on peut également utiliser fichier> nouveau> projet d'importation au lieu d'ouvrir le projet à l'étape 5 ci-dessus. C'est ce qui a fonctionné pour moi.
Sasuke Uchiha
8

Je suis ces étapes et cela fonctionne jusqu'à présent:

  1. Copiez et collez le dossier comme d'habitude.
  2. Ouvrez Android Studio (v3.0.1).
  3. Sélectionnez Ouvrir un projet existant.
  4. Fermez le message qui apparaîtra avec le titre: "Importer des projets Gradle".
  5. Sur le côté gauche de l'onglet Android, accédez à: app -> java -> sélectionnez le premier dossier (votre dossier de projet)
  6. Refactoriser => Renommer ... (Maj + F6)
  7. Renommer le package, sélectionnez les deux options - Mettez le nom du nouveau dossier en minuscules.
  8. Refactoriser
  9. Sélectionnez: Synchroniser le projet avec les fichiers Gradle dans la barre d'outils.
  10. Construire => Nettoyer le projet
  11. Accédez à app -> res -> values ​​-> strings.xml et modifiez le nom de l'application à la deuxième ligne.
Civique
la source
De plus, si vous utilisez des API de service Google, telles que Maps, Firebase et autres ... Assurez-vous de supprimer les fichiers qui ont d'anciennes références de nom de package (comme google_services.json dans app / src). Veuillez consulter ceci pour toute la procédure.
varun
3

L'annexe du gitbook du cours sur les principes de base du développeur Android comprend des étapes pour copier et renommer un projet existant:

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

Bryon Nicoson
la source
A très bien fonctionné pour moi avec Android Studio 3.3, avec un projet complexe comportant de nombreux modules et dépendances. Merci.
nat101
1
Ce lien est sur ses dernières jambes: "Ce site sera supprimé le 31 juillet 2019."
Peter Mortensen
3

Lors de la refactorisation du nom du package dans Android Studio, vous devrez peut-être cliquer sur la petite roue dentée à droite à côté du package / android / project / etc - navigateur et décocher `` packages intermédiaires vides compacts '' afin de voir chaque partie du nom du package comme un propre répertoire. Ensuite, pour les répertoires individuels, refactorisez.

Ceci est important si vous devez modifier toutes les parties du nom du package. Par exemple, de com.example.originalproject à org.mydomain.newproject. Sinon, l'opération de refactorisation / renommer ne vous permettra que de remplacer "originalproject" par "newproject", et elle laissera "com.example" inchangé. Il y a une bonne vidéo qui montre ceci: https://www.youtube.com/watch?v=dMK-RBVLeIY

gnyrfta
la source
2

Lorsque vous copiez votre projet, vous devrez également supprimer les fichiers de construction intermédiaire restants d'origine (someActivity $ 4.class) des répertoires C: ... \ AndroidStudioProjects (nom_projet) \ app \ build \ intermediates \ classes \ release .... Sinon, vous aurez presque certainement des échecs de construction pour le nouveau projet si vous essayez de compiler le projet copié. Le refactoring ne résoudra pas cela.

Mark Rossmiller
la source
2

J'ai essayé de la réponse nt.bas et de la réponse gnyrfta qui fonctionne bien pour moi.

Citant de la réponse nt.bas :

Si vous utilisez la dernière version d'Android Studio, vous pouvez le laisser vous aider.

Remarque: je l'ai testé dans Android Studio 3.0 uniquement.

La procédure est la suivante:

  1. Dans la vue du projet (cela vient avec les captures et la structure sur le côté gauche de l'écran), sélectionnez Projet au lieu d' Android .
    Le nom de votre projet sera le haut de l'arborescence (à côté des bibliothèques externes).
    Sélectionnez votre projet puis accédez à Refactor -> Copy....
    Android Studio vous demandera le nouveau nom et l'emplacement où vous souhaitez copier le projet. Fournissez la même chose.

  2. Une fois la copie terminée, ouvrez votre nouveau projet dans Android Studio.
    Les packages seront toujours sous l'ancien nom du projet.
    Il s'agit des packages de classes Java, de l'ID d'application et de tout ce qui a été généré à l'aide de l'ancien nom de package.
    Nous avons besoin de changer ça.
    Dans la vue du projet, sélectionnez Android .
    Ouvrez le sous-répertoire java et sélectionnez le package principal.
    Ensuite, faites un clic droit dessus et allez Refactorensuite Rename.
    Android Studio vous avertit que plusieurs répertoires correspondent au package que vous êtes sur le point de refactoriser.
    Cliquez sur Rename packageet non Rename directory .
    Après cette étape, votre projet est maintenant entièrement sous le nouveau nom.

  3. Ouvrez le fichier res / values ​​/ strings.xml et modifiez le nom du projet.
  4. Une dernière étape consiste à nettoyer et à reconstruire le projet, sinon lorsque vous essayez d'exécuter votre projet, Android Studio vous dira qu'il ne peut pas installer l'APK (si vous avez exécuté le projet précédent).
    Alors Build -> Clean projectalors Build -> Rebuild project.

Jusqu'à présent, vous ne renommez que le nom complet de votre projet . Pour renommer le nom de l'emballage, vous devez suivre la réponse gnyrfta qui a été décrite comme:

Lors de la refactorisation du nom du package dans Android Studio, vous devrez peut-être cliquer sur la petite roue dentée à droite à côté du package / android / project / etc - navigateur et décocher `` packages intermédiaires vides compacts '' afin de voir chaque partie du nom du package comme un propre répertoire. Ensuite, pour les répertoires individuels, refactorisez.


PS: Si vous avez un

Échec de la finalisation de la session: INSTALL_FAILED_INVALID_APK: le fractionnement lib_slice_0_apk a été défini plusieurs fois

Supprimez simplement le dossier de construction de appmodule et reconstruisez le projet!

Cela résoudra le problème!

Mukyuu
la source
2

J'utilise Android 3.3 et c'est ainsi que cela a fonctionné pour moi:

1 - Choisissez la vue du projet

2 - Faites un clic droit sur le nom du projet, qui est à la racine du projet et choisissez l'option refactor -> copy, il vous sera demandé avec une fenêtre de choisir le nouveau nom.

3 - Après l'étape 2, Android vous fera un nouveau projet, vous devez ouvrir ce nouveau projet avec le nouveau nom

4 - Changez le nom de l'application dans le "string.xml", c'est dans "app / res / values ​​/ string.xml"

Maintenant vous l'avez, le même projet avec un nouveau nom. Maintenant, vous voudrez peut-être changer le nom du package, il est décrit dans les étapes suivantes

(facultatif) Pour changer le nom du package main

5 - allez dans "app / java", il y aura trois dossiers avec le même nom, un principal, un (androidTest)et un (test), format -> renamefaites un clic droit sur le principal et choisissez , il vous indiquera avec un avertissement que plusieurs répertoires correspondent à ce paquet , puis cliquez sur "Renommer le package". Choisissez un nouveau nom et cliquez sur refactor. Maintenant, en dessous de la vue du code, voici un aperçu du refactor, cliquez sur "Do refactor"

6 - Allez dans l'option "build", cliquez sur "Clean project", puis "Rebuild project".

7 - Fermez maintenant le projet et rouvrez-le.

vinicius de novaes
la source
1
Enfin, une solution qui ne prend pas 20 minutes! A travaillé au premier essai sans erreurs étranges. Pour l'étape 5, je viens de refactoriser-> renommer mon package.
Snowman
2

Accédez au dossier source où se trouve votre projet.

  1. Copiez le projet et collez et modifiez le nom.
  2. Ouvrez Android Studio et actualisez.
  3. Allez à ->Settings.gradle.
  4. Comprendre ':your new project name '
Bassem Qoulta
la source
2

Exigence et test sur Android Studio 3.5

Assurez-vous que votre ancien projet fonctionne correctement avec votre bibliothèque de studio Android existante.

  1. Copier le répertoire du projet et renommer le dossier pour le nouveau nom du projet, par exemple Bramara
  2. Ouvrez votre nouveau projet existant à l'aide d'Android Studio 3.5. Une fois le projet ouvert, accédez à 1: Projet -> Projet. Vous pouvez voir que votre projet n'a que deux répertoires pointant vers le nouveau dossier de projet et l'ancien dossier de projet. Fermez votre projet.
  3. Editez appl.iml sur le répertoire nouveau projet -> app -> appl.iml en utilisant l'éditeur de texte. Remplacez tout l'ancien nom de projet par un nouveau nom de projet.
  4. Rouvrez votre nouveau projet existant. Accédez à 1: Projet -> Projet. Vous pouvez voir que votre projet n'a qu'un seul répertoire.
  5. Accédez à 1: Projet -> Packages. faites un clic droit sur votre composant -> Refactoriser -> Renommer.
  6. Un message d'avertissement apparaîtra. Assurez-vous que toutes les modifications s'appliqueront au nouveau dossier de projet! Ensuite, choisissez Renommer les packages, par exemple com.dedetok.bramara.
  7. Accédez à 1: Projet -> Android. Ouvrez l'application -> manifestes -> AndroidManifest.xml. Correction de l'activité de l'application sur le nouveau nom de pakage. Changez le nom de votre application en un nouveau.
  8. Ouvrez Gradle Scripts -> build.gradle (Module: app), changez votre applicationId en un nouveau projet, par exemple com.dedetok.bramara et synchronisez le projet.
  9. Nettoyez et reconstruisez votre nouveau projet.
  10. Votre nouveau projet est prêt à être édité / changé.

Remarque: si adb run montrant une activité introuvable, modifiez votre configuration d'exécution / débogage. Le module doit pointer vers l'application du module, par exemple l'application.

Dedetok
la source
À l'étape 7, je n'ai pas pu trouver app-> manifestes. Ainsi j'ai ouvert Project-> Project et à partir du dossier src j'ai ouvert le manifeste. Le studio a demandé à synchroniser pour éditer le fichier et a ensuite été OK
makkasi
1

Le moyen le plus simple (et certainement le plus rapide) de faire nécessite WINRAR, 7zip ou un logiciel d'archivage similaire:

  1. Trouvez le dossier du projet dans l'explorateur Windows - double-cliquez pour ouvrir ce dossier.

  2. Créez un nouveau dossier et nommez-le «Sauvegarde».

  3. Tout en restant dans le dossier du projet, sélectionnez tous les fichiers / dossiers, à l'exception du dossier «sauvegarde».

  4. Faites un clic droit et sélectionnez "ajouter à l'archive" ou "créer une archive" (la commande sera différente selon votre logiciel d'archivage)

  5. Nommez l'archive et cliquez sur OK.

  6. Déplacez cette archive dans le dossier "Sauvegarde".

Vous avez terminé - pour ouvrir l'archive de sauvegarde, ouvrez le dossier «Sauvegarde» et faites un clic droit sur le fichier de sauvegarde. Sélectionnez "Extraire" ou créez un nouveau dossier dans lequel les fichiers seront extraits et appuyez sur "OK", puis ouvrez le projet comme vous le feriez normalement depuis Android Studio, etc.

Tulio Perez
la source
0

J'ai eu des problèmes avec ceci:

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

sur la version Android Studio: 3.3.2

jusqu'à ce que je tue le fichier .idea / workspace.xml.

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

Avant de faire cela, Android Studio pointerait toujours vers le dossier source d'origine et tous les renommages étaient appliqués aux fichiers source d'origine (dans Testcopysource dans mon exemple ci-dessus).

Daveb
la source
0

En février 2020, pour Android Studio 3.5.3, la réponse la plus simple que j'ai trouvée est cette vidéo.

Remarque 1: À 01.24, l'onglet "Rechercher" apparaît ci-dessous. Cliquez sur «Refactoriser» et continuez comme dans la vidéo.

Remarque 2: Si vous avez des fichiers Java / Kotlin "Marqués comme texte brut", vous devez modifier manuellement le nom du package en haut, c'est-à-direpackage com.example.thisplaceneedstobemanuallyupdated

Remarque 3: faites attention aux majuscules et aux minuscules lors du changement de nom, comme dans la vidéo.

Remarque 4: Si vous souhaitez mettre à jour le nom du projet sur la barre de titre de la fenêtre du projet, modifiez le fichier rootProject.name = 'YourProjectName'" settings.gradle " dans le répertoire " Gradle Scripts ".

Xfce4
la source