Renommer le Nom du Paquet à l'intérieur d'un APK
J'ai créé un application AIR qui est actuellement sur le marché. Pour mettre à jour l'application, évidemment, je dois garder le même nom de paquet. Ma première version ont été emballés à l'aide de Eclipse avec le plugin ADT.
Maintenant d'utiliser AIR 3.0 Extensions Natives (ANE) qui n'étaient pas disponibles lorsque j'ai d'abord développé l'application, je suis actuellement devez créer mon APK en utilisant de l'AIR de l'outil en ligne de commande. Malheureusement, ces outils de ligne de commande vous forcer à avoir un nom de package qui commence par le mot "air". Par exemple, j'ai besoin du nom du package "com.exemple". AIR crée le nom du package "de l'air.com.exemple".
Alors maintenant, je ne peux pas mettre à jour mon application sur le marché depuis le nom de paquet a changé. Adobe a cette horrible article pour vous aider à renommer et de supprimer le "air" dans le package. Je ne suis pas un grand programmeur donc, cela a vraiment perplexe moi.
http://kb2.adobe.com/cps/875/cpsid_87562.html
Apparemment, cette info est obsolète ou incorrect dans quelques domaines.
J'ai complètement tombé à l'étape 12, qui utilise apkbuilder:
apkbuilder final.apk -u -z resources.arsc -f classes.dex
J'obtiens ce message d'erreur:
CET OUTIL EST OBSOLÈTE. Voir --help pour plus d'informations.
java.io.FileNotFoundException: ressources.csra n'existe pas
J'ai utilisé l'étape 10 pour créer la nouvelle ressources.csra fichier. Il est clair que cela existe et dans l'emplacement correct. J'ai essayé d'utiliser apkbuilder avec d'autres ressources.csra fichiers pris dans d'autres projets. Je reçois toujours le même message d'erreur.
Est-il une chance dans l'enfer de ce travail? Si quelqu'un est intéressé à cela, j'ai un fichier zip avec un échantillon de l'AIR, apk windows fichiers bat pour l'ensemble de la ligne de commande de travail, et tous les outils nécessaires afin qu'ils n'ont pas besoin d'être téléchargé. Pour commencer, vous avez juste besoin de changer mon chemin.chauve-souris pour s'adapter à votre système. Et vous avez besoin de notepad++ (ou un équivalent) lot automatiser renommer le nom du package dans plusieurs fichiers.
bradwallacedesign.com/dktimer/renameApkProject.zip
Merci beaucoup!
- À ajouter dans brad51 de la réponse, pour ceux qui n'ont pas de magasin de clés, mais seulement un .p12 fichier de travail (en Flash), voici un article utile sur la conversion: aleksmaus.blogspot.com/2012/01/... Aussi, je n'ai pas eu d'erreurs sur les fichiers n'étant pas déplacé au-dessus.
- En outre, ce lien a été très utile dans la création du fichier de clés: mobilefish.com/tutorials/java/java_quickguide_keytool.html
Vous devez vous connecter pour publier un commentaire.
cela a été fait sur un pc. je n'ai aucune idée de comment le faire sur un mac.
je ne recommandons pas d'utiliser cette option pour supprimer le "air." d'un air un nom de package. Si vous le faites, l'utilisateur ne sera pas invité à télécharger l'air sur leur appareil. l'utilisateur recevra un message d'erreur à la place avec aucune idée du problème. bien sûr, vous pouvez utiliser de l'air du moteur d'exécution captif pour résoudre ce problème.
http://bradwallacedesign.com/share/renameAPK.zip
téléchargez et décompressez mon fichier (renameAPK.zip) pour c:\renameAPK.
les fichiers nécessaires:
j'ai fait beaucoup de fichiers bat depuis que je ne suis pas sûr de la façon de les combiner en un seul fichier. vous aurez besoin de modifier chacun de changer vos noms de chemin d'accès et les noms de fichiers pour travailler avec votre ordinateur et votre fichier apk.
j'ai compté tous les chauves-souris dans l'ordre que je les utilise. une fois une ligne de commande est ouvert, je vous tapez le numéro de fichier bat, je veux appuyer sur la touche tab pour termine automatiquement le nom de fichier bat, puis appuyez sur entrée pour exécuter ce fichier bat.
instructions:
double-cliquez sur `openCmd.chauve-souris pour ouvrir une ligne de commande pointant vers le répertoire avec tous vos fichiers.
0. exécuter 0path.chauve-souris à définir votre chemin. (je ne me souviens pas maintenant, si le sdk d'adobe air est nécessaire pour cela, mais je l'ai dans mon chemin. évidemment, le JDK est requis et le kit sdk d'android pour le jarsigner et zip aligner, je pense.)
1. exécuter 1decompileAPK.chauve-souris avoir apkTool décompiler votre application dans un dossier appelé UNZIPPEDapk
2. suivez les instructions dans 2editManifest & Paquet - Instructions (pas une chauve-souris).txt pour modifier le manifeste et le nom du package à l'aide de Notepad++ à l'intérieur de UNZIPPEDapk:
modifier AndroidManifest.xml:
un. changement de nom du package à partir de l'air.oldPackageName à newPackageName
b. modifier les autres entrées:
c. renommer le dossier système de l'intérieur "smali" dossier afin qu'il fonctionne avec votre nouveau nom de package
par exemple:
si l'ancien nom du package a été: air/oldName puis modifiez les dossiers pour correspondre au nouveau nom du package: air/newName
utilisation notepad++ (ou n'importe quel éditeur qui peut rechercher et remplacer du texte sur de nombreux fichiers)
d. ctrl+maj+f --- "Rechercher dans les fichiers"
(je pense qu'il y a eu plus de 200 animaux)
3. exécuter 3buildDistFolder.chauve-souris avoir apkTool la construction de la nouvelle apk dans le UNZIPPEDapk\Dist dossier
4. suivez les instructions dans 4getMissingFiles - instructions.txt de réintégrer les 2 fichiers manquants dans la construction de la nouvelle:
un. Deux fichiers n'ont pas été construits au cours de 3buildDistFolder:
3buildDistFolder.bat construit la nouvelle apk dans l' \UNZIPPEDapk\dist dossier, mais il n'a pas pu copier 2 fichiers:
\AIR\extensions\com.adobe.mobile\META-INF\ANE\Android-BRAS.classpath')
(en ignorant les fichiers cachés 'C:\Users\computer\apkTool\UNZIPPEDapk\assets\META-INF
\AIR\extensions\com.adobe.mobile\META-INF\ANE\Android-BRAS.projet")
prenez ces 2 fichiers à partir de votre original apk et les déposer dans votre nouveau fichier apk dans le dossier approprié
b. copie yourApp.apk de DKTimer/Dist/à la racine du répertoire dans lequel les fichiers bat sont.
5. exécuter 5signAPK.chauve-souris à signer l'apk.
developer.android.com/guide/publishing/app-signing.html
6. exécuter 6verifySigned.chauve-souris pour vérifier la signature a fonctionné correctement
7. exécuter 7zipAlign.chauve-souris pour aligner le fichier apk.
developer.android.com/guide/developing/tools/zipalign.html
Vous avez terminé à ce stade. Continuer si vous voulez le tester sur un appareil.
8. exécuter 8installAPK.chauve-souris pour installer l'apk sur un port usb de l'appareil.
9. exécuter 9remoteDebugger.chauve-souris si vous souhaitez utiliser le débogage à distance.
j'espère que cela aide quelqu'un. permettez-moi de savoir si j'ai oublié d'inclure quelque chose.
aussi, si vous connaissez une meilleure façon de le faire, s'il vous plaît commentaire (telles que comment les combiner en 1 longue pause fichier bat...)
Il y a une simple variable d'environnement, vous pouvez désactiver le
air.
préfixe facilement. Le code suivant existe dans Adobe AIR emballeur:Il suffit de définir la
AIR_NOANDROIDFLAIR
variable d'environnement pourtrue
, reconditionner votre application, et il n'aura pas lesair.
préfixe. Google comment définir des variables d'environnement dans windows ou mac pour votre version de l'OS.Par exemple, j'utilise le compilateur en ligne de commande sous Mac/Linux, donc je lance:
Avertissement: je ne connais pas les implications. Par quelqu'un la remarque ci-dessus, ce ne peut être qu'une bonne idée avec le moteur d'exécution captif (mais c'est le défaut d'aller de l'avant à partir de l'AIR 3.8).
Mise à jour: Renaun Erickson dit il ne devrait pas causer des problèmes.
Cross-posté ici (question légèrement différente, même réponse).
Avoir essayé plusieurs apkRename outils, j'ai trouvé qu'ils ont tous échoué pour certaines applications, comme com.android.navigateur sur appareil HTC.
La raison en est dans apktool qui n'est pas correctement décompresser fichier apk parfois.
Donc, j'ai créer mon propre outil: https://github.com/sjitech/ApkRename
Pas besoin apktool, pas besoin aapt, juste java et un pot de services publics.
Cet utilitaire permet de modifier directement AndroidManifest.xml sans recompiler ensemble de la ressource par apktool,
donc, c'est propre.
Appareils testés: 11 types (à la fois android 4+, mais 2.2+ devrait pas être OK)
Testé OS: Mac OS X 10.9 et CentOS 6. (Cygwin avec bash 4+ devrait être OK, mais pas encore testé)
Fait, j'ai essayé de brad approche et je ne pouvais pas imaginer avoir à passer par le processus à CHAQUE FOIS que j'ai compilé une version. je n'ai donc d'autre chose...j'ai modifié ADT n'a donc pas d'insérer "de l'air." au début et le remplace par un plus utile de l'extension comme "com."
Voici un résumé de l'approche:
utilisation:
jar xf adt.jar
pour extraire le adt.jar fichier dans un répertoire sur votre ordinateur de bureau. vous trouverez dans {adobe SDK}/lib/
recherchez le fichier APKOutputStream.class
com/adobe/air/apk/APKOutputStream.class
L'ouvrir dans un éditeur hexadécimal (par exemple, HxD est ce que j'ai utilisé). Recherche pour "air". (sans les guillemets, mais avec le point).
Ne pas supprimer l'entrée. j'ai essayé, vous ne pouvez pas, il corrompt la classe et il ne s'exécute pas. Ce que vous pouvez faire, cependant, est de remplacer "air". avec la "com.", parce qu'il a le même nombre de caractères et ne plaisante pas avec la longueur du fichier. La com préfixe est beaucoup plus utile pour la plupart d'entre nous.
enregistrer la modification APKOutputStream.class fichier et de les reconditionner avec JAR. quelque chose comme ceci:
pot cfm ..\patchedadt.jar ..\MANIFESTE.MF *
vous aurez envie de copier ce qui MANIFESTE.MF fichier à partir du sous-répertoire du package appelé META-INF
Renommer votre patchedadt.jar pour adt.jar et de le mettre dans le répertoire lib. Fonctionne avec le Flash Builder et tout ce que l'habit.
Inutile de dire que, quand vous êtes là, vous aurez envie de produire votre colis sans un "com." préfixe de sorte que vous ne finissent pas avec com.com.votre.package.nom.
peut-être il y avait un moyen plus facile, mais je ne savais pas mieux, et personne d'autre a une réponse, sauf à décompiler le apk, de le modifier et recompiler et qui n'ont même pas de travail. alors j'ai pensé que je vais partager ce que j'ai fait au cas où quelqu'un d'autre tombe sur ça plus tard 🙂
jim
air.
préfixe.