Mon magasin de clés est corrompu. C'est pourquoi Android Market me demande de renommer l'application et de la renvoyer. Cependant, chaque fois que je vais modifier les noms de paquet 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?
Si vous utilisez Eclipse, vous pouvez essayer ces instructions à partir du site de développement d'Android. Ils sont spécifiquement destinés à l'exemple GestureBuilder mais devraient s'appliquer à toutes les applications pour autant que je sache:
Voici comment vous pourriez faire cela dans Eclipse:
- Cliquez avec le bouton droit sur le nom du package (
src/com.Android.gesture.builder
).- Sélectionnez Refactor> Rename et modifiez le nom, par exemple en
com.Android.gestureNEW.builder
.- Ouvrez le fichier manifeste. À l'intérieur de
<manifest>
, remplacez le nom du package parcom.Android.gestureNEW.builder
.- 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 vous rappeler de renommer le paquet lui-même ainsi que ses références dans les fichiers. Dans Eclipse, vous pouvez voir le nom du paquet dans la fenêtre Explorateur de fichiers/Voir l'arborescence à gauche. D'après mon expérience, Eclipse peut parfois être un peu compliqué et peu fiable (laisser des références errantes à l'ancien nom du package, par exemple).
Il existe un moyen de changer facilement le nom du paquet dans Eclipse. Faites un clic droit sur votre projet, faites défiler l'écran jusqu'aux outils Android, puis cliquez sur Renommer le package d'application.
Voici comment vous pouvez faire cela dans Eclipse:
src/com.Android.gesture.builder
).Refactor > Rename
et changez le nom, par exemple en com.Android.gestureNEW.builder
.<manifest>
, modifiez le nom du package en com.Android.gestureNEW.builder
.Activity
et faites Ctrl+Shift+O pour ajouter des packages d'importation manquants, sauvegardez chaque fichier.GestureBuilder
sur l'émulateur.Mise à jour très facile, faites un clic droit sur votre projet ...
Dans Android Studio, que vous devriez utiliser en toute honnêteté, modifiez le nom du package par right-clicking
dans le nom du package dans project structure -> Refactor -> Rename...
.
Il vous propose ensuite de renommer le répertoire ou le package. Sélectionnez le package. Le répertoire devrait suivre. Tapez votre nouveau nom de package et cliquez sur Refactor. Cela modifiera 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, changez le nom du paquet en conséquence dans votre AndroidManifest.xml vers le haut. Sinon, vous obtiendrez des erreurs partout pour vous plaindre de tout.
Une autre solution très utile
Commencez par créer un nouveau package avec le nom souhaité by right clicking on the
Java folder -> new -> package.`
Ensuite, sélectionnez et faites glisser toutes vos classes dans le nouveau package. AndroidStudio va re-factoriser le nom du paquet partout.
Après cela: dans votre application build.gradle
ajouter/modifier applicationId avec le nouveau. c'est-à-dire (com.a.bc
dans mon cas):
defaultConfig {
applicationId "com.a.bc"
minSdkVersion 13
targetSdkVersion 19
}
Article original et autres commentaires ici
Sans Eclipse:
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.).
Mettre à jour la déclaration d'importation de package dans tous les fichiers source
Renommez tous les dossiers pour qu'ils correspondent au nom du package. Emplacements des dossiers:
une. bin/classes
b. gen
c. src
Mettez à jour le nom du projet dans build.xml (ou le nom de votre apk ne changera pas)
Supprimez tous les fichiers .class dans bin/classes/com/exemple/monapp/(si vous ignorez cette étape, les fichiers ne sont pas réécrits pendant la construction et dex génère un lot de problèmes de traitement des erreurs "le nom de la classe ne correspond pas au chemin".
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 à cela, mais jusqu'à ce que je supprime BuildConfig.Java, elle recréait continuellement gen/com/oldapp_example/oldapp et mettre BuildConfig.class ici. Je ne sais pas pourquoi R.Java du même endroit n’a pas ce problème. Je suppose que BuildConfig.Java est généré automatiquement en pré-compilation mais R.Java n'est pas)
Les 6 étapes ci-dessus correspondent à ce que j’ai fait pour modifier le nom de mon package et obtenir un * build réussi. Il peut exister un meilleur moyen de gérer les étapes 5 et 6 via les commandes dex pour mettre à jour les chemins, ou peut-être en modifiant 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, je suis donc allé à la méthode de suppression des fichiers .class qui, je le sais, 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.
* Il ne reste aucune erreur ni aucun avertissement dans ma construction, à l'exception de dex et d'apkbuilder: "Fichier cible supprimé détecté", sans précision sur le contenu de ce fichier. Je ne suis pas sûr que cela apparaisse dans chaque version, s'il existait avant que je ne m'occupe de mon nom de paquet ou s'il résulte de mes suppressions et qu'il me manque une étape.
Suivez ces étapes:-
TERMIN&EACUTE;
Le moyen le plus rapide de le faire dans Android Studio 1.3 :
manifest
Module Settings[F4]-> Flavors
, dans Application Id
écrivez le même nom.[right-click-> new-> package]
[Right-click-> Refactor-> Move-> {Select package}-> Refactor]
.P.S. Si vous ne suivez pas cet ordre, vous pouvez modifier tous les fichiers Java un par un avec de nouvelles importations et de nombreuses erreurs de compilation. L'ordre est donc très important.
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. On dirait qu'aucun nettoyage ou réinitialisation d'Eclipse n'est nécessaire.
J'ai trouvé 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.
src
et cochez rename subpackages
Bernstein a la méthode, utilisez l'outil Eclipse, "Rename Application Package", vous devrez peut-être effectuer un nettoyage même après coup. De plus, Eclipse perd parfois la trace de certains éléments lorsque vous apportez des modifications à un projet. Vous devrez peut-être utiliser l'outil "Nettoyer le projet" (sous le menu "Projet".) Si cela ne fonctionne pas, vous devrez peut-être fermer et redémarrer Eclipse. Solutions Voo-doo, mais Eclipse peut être ainsi.
Il existe également une autre solution pour les utilisateurs sans Eclipse: il suffit de modifier l'attribut du package dans la balise <manifest> dans AndroidManifest.xml, en remplaçant l'ancien nom du 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>
Clic droit sur Projet> Outils Android> Renommer le package d'application
Allez sur src et faites un clic droit sur votre paquet principal> Refactor> Renommer
Allez dans le fichier manifeste et changez le nom de votre paquet.
Donc, utiliser IntelliJ avec le plugin Android (Studio) était: je suis allé à AndroidManifest.xml
en haut et j'ai changé le nom du paquet en cliquant avec le bouton droit de la souris -> Refactor -> renommer . Notre nom de paquet avait alors quatre parties a.b.c.d
, le nouveau 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
), j'ai cliqué avec le bouton droit sur la classe R
et sur Refactor-> Déplacer [d] dans un paquet plus élevé. Idem avec BuildConfig
dans app\build\generated\source\buildConfig\development\debug\a\b\c\d
.
En utilisant Refactor-> Move, IntelliJ met à jour toutes les références à BuildConfig
et R
.
Enfin, j'ai mis à jour tous les applicationId [s] que j'ai trouvés dans gradle.build que j'ai trouvé. Je frappe sur Clean Project, Make et Rebuild Project. Supprimez l'application de mon téléphone et cliquez sur "Play". Tout a fonctionné, le refactoring a donc été facile et rapide.
Je viens de perdre quelques heures à essayer toutes les solutions. J'étais sûr, le problème est dans mon code - apk de départ, mais quelques erreurs lorsque je travaille avec différentes classes et activités.
Seul moyen de travailler avec mon projet:
Pour moi ça marche, seule solution.
Alternative:
Dans Android Studio 1.2.2 Indiquez si vous souhaitez modifier com.example.myapp
en org.mydomain.mynewapp
Vous pouvez suivre les étapes décrites 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 à Refactor -> Rename
et 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 préoccuper .
Mettez également à jour le fichier build.gradle
qui 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 à sync
de le faire. Alors tout ira bien. Je suis en mesure de télécharger mon APK sur Google Store après cela. Assurez-vous que vous avez signé votre application pour la télécharger dans le magasin.