Comment changer le nom de package d'une application Android

133

Mon keystore est corrompu, par conséquent, l'Android Market m'oblige à renommer l'application et à la soumettre à nouveau. Cependant, chaque fois que je vais modifier les noms des packages dans Manifest et dans tous les fichiers, cela me donne des tonnes d'erreurs.

Quelle est la bonne façon de changer le nom de l'application?

Allen Gingrich
la source
3
Heureusement, ils ont ajouté un "bouton magique, changer le nom du package" depuis 2010 - voir la réponse de @Marc Bernstein - stackoverflow.com/a/4025633/383414
Richard Le Mesurier
merci Richard Le ...
DoruChidean
3
Copie possible du package de renommage Android Studio
Bo Persson
difficile d'être un doublon lorsque cela a été demandé 3 ans auparavant ...
Ryan Ternier

Réponses:

102

Si vous utilisez Eclipse, vous pouvez essayer ces instructions sur le site des développeurs d'Android. Ils sont spécifiquement pour l'exemple GestureBuilder mais devraient s'appliquer à n'importe quelle application pour autant que je sache:

[Voici comment vous pouvez faire cela dans Eclipse:

  1. Cliquez avec le bouton droit sur le nom du package ( src/com.android.gesture.builder).
  2. Sélectionnez Refactoriser> Renommer et changez le nom, par exemple en com.android.gestureNEW.builder.
  3. Ouvrez le fichier manifeste. À l'intérieur de la <manifest>balise, remplacez le nom du package par com.android.gestureNEW.builder.
  4. Ouvrez chacun des deux fichiers d'activité et faites Ctrl-Maj-O pour ajouter les packages d'importation manquants, puis enregistrez chaque fichier. Exécutez l'application GestureBuilder sur l'émulateur.

Assurez-vous également de ne pas oublier de renommer le package lui-même avec les références à celui-ci dans les fichiers. Dans Eclipse, vous pouvez voir le nom du package dans la fenêtre / arborescence de l'explorateur de fichiers sur le côté gauche. D'après mon expérience, Eclipse peut parfois être un peu finnicky et peu fiable avec cela (laissant derrière lui des références errantes à l'ancien nom du package, par exemple).

eldarerathis
la source
C'est probablement la meilleure façon de le faire, il n'y a pas de bouton magique pour changer le nom du paquet.
blindstuff
13
Oui il y a. Voir la réponse de @Marc Bernstein.
Mark Phillip
Je ne pense pas que le questionneur d'origine ait également dû changer les noms des packages Java. Marc devrait être la réponse acceptée.
mpellegr
La première étape n'est pas un "clic droit sur", devrait être de choisir "Refactoriser" dans le menu.
Deqing le
Et vous devrez peut-être changer app_namedans res-> values ​​=> strings.xml
Deqing
302

Il existe un moyen de changer facilement le nom du package dans Eclipse. Faites un clic droit sur votre projet, faites défiler jusqu'à Outils Android, puis cliquez sur Renommer le package d'application.

Marc Bernstein
la source
2
Je viens d'essayer Eldar et cela a fonctionné - mais je suis sûr que cela fonctionnera aussi.
Allen Gingrich
4
C'est la bonne réponse, mais l'ADT actuel est cassé et il BREAKS toute référence à votre classe R. Vous devez donc cliquer sur chaque fichier individuel, faire "ctrl-shift-o" (ou cmd-shift-o sur Mac), et sélectionner votre nouveau package nommé R (NE sélectionnez PAS android.R! Les choses vont casser horriblement ), puis appuyez sur Enregistrer. ... et répétez pour CHAQUE dossier individuel :(
Adam
@Adam juste pour nous rendre la vie plus facile, cliquez sur le projet et utilisez ctrl + shift + o, il mettra à jour la référence importée dans TOUTES les classes / fichiers: D
Blaze Tama
cela m'a sauvé la vie puisque j'ai perdu ma clé de magasin ridicule et que j'ai dû republier mon application.
Teoman shipahi
3
J'ai trouvé que les noms de package de fichiers déclarés en haut de chaque fichier ne correspondent pas au nouveau package, ni au dossier dans lequel ils se trouvent. vous pouvez faire un clic droit sur ce dossier source qui a toujours l'ancien nom de package (du moins le mien le fait toujours), sélectionnez 'refactor' puis 'rename' et renommez-le dans le nouveau package. eclipse renomme alors le dossier et les déclarations de package de chaque fichier avec le nouveau nom de package, comme il aurait dû le faire en premier lieu.
Androidcoder
52

Voici comment vous pouvez faire cela dans Eclipse:

  1. Cliquez avec le bouton droit sur le nom du package ( src/com.android.gesture.builder).
  2. Sélectionnez Refactor > Renameet modifiez le nom, par exemple en com.android.gestureNEW.builder.
  3. Ouvrez le fichier manifeste. À l'intérieur de la <manifest>balise, remplacez le nom du package par com.android.gestureNEW.builder.
  4. Ouvrez chacun des deux Activityfichiers et faites Ctrl+ Shift+ Opour ajouter les packages d'importation manquants, puis enregistrez chaque fichier.
  5. Exécutez l' GestureBuilderapplication sur l'émulateur.

Lien vers l'article

Mettez à jour de manière super simple un clic droit sur votre projet ... entrez la description de l'image ici

AZ_
la source
2
Une façon assez géniale de faire cela!
Mec
2
La solution la plus simple. Cela aurait dû être accepté;)
Nomade
12

Dans Android Studio , qui, très honnêtement, vous devriez utiliser, modifiez le nom right-clickingdu package en utilisant le nom du package dans leproject structure -> Refactor -> Rename...

Il donne ensuite la possibilité de renommer le répertoire ou le package. Sélectionnez le package. Le répertoire devrait suivre. Saisissez votre nouveau nom de package et cliquez sur Refactoriser. Cela changera toutes les importations et supprimera les importations redondantes pour vous. Vous pouvez même le faire réparer pour vous dans les commentaires et les chaînes, etc.

Enfin , modifiez le nom du package en conséquence dans votre AndroidManifest.xml vers le haut. Sinon, vous obtiendrez des erreurs partout en vous plaignant de R. peu importe.

Une autre solution très utile

Créez d'abord un nouveau package avec le nom souhaitéby right clicking on the dossier java -> nouveau -> package.`

Ensuite, sélectionnez et faites glisser toutes vos classes vers le nouveau package. AndroidStudio re-factorisera le nom du package partout.

Après cela: dans build.gradleajouter / modifier l'applicationId de votre application avec le nouveau. ie ( com.a.bcdans mon cas):

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

Article original et plus de commentaires ici

tendu
la source
Bizarrement, quand je fais ça, ça ne donne pas le répertoire / package de choix ... seulement le "nom du module" ...
Fattie
1
Cela me fait la même chose pour le moment si je clique avec le bouton droit sur le répertoire racine. Au moins pour moi, ce n'est pas le nom de mon package. Si le nom de votre package est com.a.bc, il doit y avoir un répertoire sous le répertoire racine appelé bc. C'est là que vous aurez les différentes options. En ce moment, je reçois un répertoire ou un module. Essayez le module. Vous pouvez toujours l'annuler (Ctrl + z devrait le faire) s'il casse quelque chose.
craned
Merci .. merde, tu veux dire le répertoire ".idea" ou le répertoire "app"? Je viens de publier un Q explicatif .. stackoverflow.com/questions/23786361/ ... Ahh .. Je vois maintenant "Sélectionner le répertoire / module de refactoring" quand je clique sur mon dossier "app" .... hoy caramba!
Fattie
@JoeBlow faites un clic droit sur packagesous le dossierjava
Abu Shumon
"Android Studio, qui, très honnêtement, vous devriez utiliser" En gardant à l'esprit que la question a été posée en 2010, alors qu'AS n'a même pas été annoncé avant 2013, et encore moins publié en version stable (2014). Certes, les utilisateurs de nos jours devraient utiliser AS. :-)
LarsH
8

Sans Eclipse:

  1. Modifiez le nom du package et les noms d'activité dans AndroidManifext.xml et partout ailleurs dans les fichiers .xml (noms de vue personnalisés, etc.)

  2. Mettre à jour la déclaration d'importation de package sur tous les fichiers source

  3. Renommez tous les dossiers pour qu'ils correspondent au nom du package. Emplacements des dossiers:
    a. bin / classes
    b. gen
    c. src

  4. Mettez à jour le nom du projet dans build.xml (ou le nom de votre apk ne changera pas)

  5. Supprimez tous les fichiers .class dans bin / classes / com / example / myapp / (si vous ignorez cette étape, les fichiers ne sont pas réécrits pendant la construction et dex donne un tas de problèmes lors du traitement des erreurs "nom de classe ne correspond pas au chemin"

  6. Supprimez gen / com / example / myapp / BuildConfig.java (je ne sais pas pourquoi la suppression de BuildConfig.class à l'étape 3a n'a pas obligé dex à mettre à jour son chemin d'accès, mais jusqu'à ce que je supprime BuildConfig.java, il a continué à recréer gen / com / oldapp_example / oldapp et y mettre BuildConfig.class. Je ne sais pas pourquoi R.java du même emplacement n'a pas ce problème. Je soupçonne que BuildConfig.java est généré automatiquement en pré-compilation mais R.java n'est pas)

Les 6 étapes ci-dessus sont ce que j'ai fait pour changer le nom de mon package et obtenir une compilation réussie *. Il peut y avoir une meilleure façon de gérer les étapes 5 et 6 via les commandes dex pour mettre à jour les chemins, ou peut-être en éditant classes.dex.d dans le répertoire racine du projet. Je ne suis pas familier avec dex ou s'il est correct de supprimer / modifier classes.dex.d alors j'ai choisi la méthode de suppression des fichiers .class dont je sais qu'ils seront régénérés dans la construction. J'ai ensuite vérifié classes.dex.d pour voir ce qui devait encore être mis à jour.

* Aucune erreur ou avertissement laissé dans ma construction SAUF dex et apkbuilder indiquent tous les deux "Fichier cible supprimé trouvé" sans détails sur ce que ce fichier est. Je ne sais pas si cela apparaît dans chaque build, s'il était là avant que j'aie manipulé le nom de mon package, ou si c'est le résultat de mes suppressions et que je manque une étape.

clusterflux
la source
J'ai résolu le changement de nom comme vous l'avez fait, mais avec une simplification: supprimez les dossiers bin et gen. De plus, je ne pouvais pas importer le projet renommé dans Eclipse avant de modifier le fichier caché .project, il avait l'ancien nom de projet sous <nom>
Jose_GD
6

Suivez ces étapes:-

  • Faites un clic droit sur le projet.
  • Accédez aux outils Android.
  • Cliquez sur Renommer le package d'application.
  • Modifiez le nom du package d'application.

TERMINÉ

Deepak Sharma
la source
1
Cela fonctionne, mais vous devez également refactoriser le nom du package du dossier src de base.
ashishduh
6

Le moyen le plus rapide de le faire dans Android Studio 1.3 :

  1. Modifiez le nom du package dans le manifest
  2. Allez Module Settings[F4]-> Flavors, Application Idécrivez le même nom.
  3. Créez un nouveau package avec ce nom: [right-click-> new-> package]
  4. Sélectionnez tous les fichiers java de votre projet puis continuez [Right-click-> Refactor-> Move-> {Select package}-> Refactor]

PS Si vous ne suivez pas cet ordre, vous pouvez finir par changer tous les fichiers java un par un avec de nouvelles importations et un tas d'erreurs de compilation, donc l'ordre est très important.

Movsar Bekaev
la source
1
Avec cette méthode, le R reste inchangé par le refactoring. alors importez com.app.myapp.R NE change PAS pour le nouveau nom de package, et vous devez prendre un par un ...
OWADVL
@OWADVL, R change automatiquement lorsque vous déplacez des fichiers vers le nouveau package, Android Studio effectue automatiquement la reconstruction lorsque vous déplacez des fichiers .java, je fais cette chose tous les jours et tant que je garde cet ordre, je ne change rien dans les fichiers .java manuellement
Movsar Bekaev
Mais dans Eclipse, nous pourrions changer l'ID du package d'application, sans changer le package de tout le code. L'assistant renomme les références BuildConfig & R pour vous. Je suis étonné que la même chose n'existe pas dans AS.
Tom
5

Changer le nom du paquet est une douleur dans le cul. Il semble que différentes méthodes fonctionnent pour différentes personnes. Ma solution est rapide et sans erreur. Il semble qu'aucun nettoyage ou réinitialisation de l'éclipse ne soit nécessaire.

  1. Cliquez avec le bouton droit sur le nom du package puis Réfracteur> Renommer.
  2. Cliquez avec le bouton droit sur le nom du projet Outils Android> Renommer le package d'application.
  3. Définissez manuellement les noms de package dans le manifeste qui n'ont pas été modifiés par les étapes précédentes.
erdomester
la source
3

Bernstein a la méthode, utilisez l'outil Eclipse, "Rename Application Package", vous devrez peut-être faire un certain nettoyage même après coup. En outre, Eclipse perd parfois la trace des choses lorsque vous apportez des modifications à un projet. Vous devrez peut-être utiliser l'outil "Nettoyer le projet" (dans le menu "Projet".) Si cela ne fonctionne pas, vous devrez peut-être fermer et redémarrer Eclipse. Solutions Voo-doo, mais Eclipse peut en être ainsi.

m0j0
la source
3

J'ai trouvé que la solution la plus simple était d'utiliser Regexxer pour remplacer "com.package.name" par "com.newpackage.name", puis renommer les répertoires correctement. Super facile, super rapide.

robisaks
la source
3
  1. Fist changez le nom du package dans le fichier manifeste
  2. Re-factoriser> Renommez le nom du package dans le srcdossier et cochezrename subpackages
  3. C'est tout ce que vous avez fait.
Sathirar
la source
J'ai essayé d'utiliser les outils Android de Marc Bernstein -> Renommer le package d'application, mais cela m'a donné une erreur. C'était plus simple, même si j'ai dû réparer certaines choses après le changement
david-hoze
2

Il existe également une autre solution pour les utilisateurs sans Eclipse, il suffit de changer l'attribut package dans la balise <manifest> dans AndroidManifest.xml, en remplaçant l'ancien nom de package utilisé par un nouveau. Remarque: Vous devez également ajuster manuellement toutes les instructions d'importation associées et les dossiers associés dans votre projet.

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="new.package.name"
    .....
</manifest>
Comme toi
la source
1

Alternative:

  1. Ouvrez AndroidManifest.xml
  2. Changer package = "NEW NAME" dans la balise manifeste.
MapleLover
la source
1
  1. Cliquez avec le bouton droit sur Projet> Outils Android> Renommer le package d'application

  2. Allez dans src et faites un clic droit sur votre package principal> Refactor> Renommer

  3. Accédez au fichier manifeste et modifiez le nom de votre package.

ritesh4326
la source
1

J'ai juste perdu quelques heures à essayer toutes les solutions. J'étais sûr, le problème est dans mon code - apk démarrant mais quelques erreurs lorsque vous travaillez avec différentes classes et activités.

Seul moyen de travailler avec mon projet:

  1. renommez-le - fichier / renommer et cochez toutes les cases
  2. vérifier les lieux non renommés, j'avais dans l'un des anciens nom de mise en page toujours dans les outils: context = "..
  3. créer un nouvel espace de travail
  4. importer un projet dans un nouvel espace de travail

Pour moi, cela fonctionne, seule solution.

Dudeist
la source
1

Donc, utiliser IntelliJ avec le plugin Android (Studio) était: Je suis allé en AndroidManifest.xmlhaut et j'ai changé le nom du paquet en cliquant avec le bouton droit -> Refactor -> renommer. Le nom de notre package de l'époque comportait quatre parties a.b.c.d, la nouvelle uniquement a.b.c. J'ai donc renommé les trois premiers. Ensuite, je suis allé dans le répertoire des sources générées ( app\build\generated\source\r\development\debug\a\b\c\d), cliquez avec le bouton droit sur la Rclasse et Refactor-> Déplacer [d] vers un package supérieur. Idem avec BuildConfigin app\build\generated\source\buildConfig\development\debug\a\b\c\d.

En utilisant Refactor-> Move, IntelliJ met à jour toutes les références à BuildConfiget R.

Enfin, j'ai mis à jour tous les applicationsId [s] que j'ai trouvés dans gradle.build que j'ai trouvés. J'ai frappé Clean Project, Make and Rebuild Project. J'ai supprimé l'application de mon téléphone et appuyez sur "Play". Tout a fonctionné, donc la refactorisation était facile et assez rapide.

Raul Pinto
la source
1

Dans Android Studio 1.2.2 Dites si vous souhaitez passer com.example.myappàorg.mydomain.mynewapp Vous pouvez suivre les étapes dans chacun des répertoires comme indiqué dans la capture d'écran ci-dessous. Il vous donnera l'option de prévisualisation afin que vous puissiez prévisualiser avant d'apporter des modifications.

Allez sur Refactor -> Renameet donnez votre nouveau nom. Vous devez le faire pour chacun des dossiers, par exemple pour com, exemple et myapp. Il mettra automatiquement à jour les importations afin que vous n'ayez pas à vous en soucier. entrez la description de l'image ici

Mettez également à jour le fichier build.gradlequi n'est pas mis à jour automatiquement.

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

Après cela, il demandera de le syncfaire. Alors tout ira bien. Je pourrai télécharger mon APK sur le Google Store après cela. Assurez-vous d'avoir signé votre application pour la télécharger dans la boutique.

PC Krishnadas
la source
0
  1. Dans votre studio Android, dans le panneau du projet, il y a l'icône d'engrenage "Cliquez dessus".
  2. Décochez les packages intermédiaires vides compacts
  3. Maintenant, le répertoire du paquet a été divisé, c'est-à-dire des répertoires individuels.
  4. Sélectionnez le répertoire que vous souhaitez renommer.
  5. Faites un clic droit sur ce répertoire particulier.
  6. Sélectionnez Refactor, puis renommez l'option.
  7. La boîte de dialogue a été ouverte, renommez-la.
  8. Après avoir mis un nouveau nom, cliquez sur Refactor.
  9. Cliquez ensuite sur Do Refactor en bas.
  10. Ensuite, Android Studio mettra à jour toutes les modifications.
  11. Maintenant, ouvrez le fichier build.gradle et mettez à jour l'applicationId et synchronisez-le.
  12. Accédez maintenant au fichier manifeste et renommez le package.
  13. Reconstruisez votre projet.
  14. Vous avez terminé :)
Hanisha
la source