Reconditionner fichier APK de contenir des ressources personnalisées - ce que créer l'outil à utiliser?
Mise à jour: C'est un vieux post, et les références ci-dessous pour cassé aapt
versions seront obsolètes.
Basé sur les précédents commentaires, je suis le stockage personnalisé champs de texte dans le répertoire actif de mon application.
Je vais écrire à l'application, en utilisant par défaut les détails de l'utilisateur dans un fichier actif, et que le client souhaite reconstruire l'application pour chaque utilisateur, y compris que les détails de l'utilisateur dans le fichier actif.
(J'en suis conscient, c'est en partie de la méthode de graves lacunes, mais le client est toujours désireux de le faire de cette façon - voir Incorporer les informations de connexion dans le fichier APK, différents pour chaque utilisateur (ou d'autres options?))
Cette question se rapporte à des problèmes que je vais avoir à la reconstruction du fichier APK, une fois que j'ai décompressé et mis à jour la coutume de l'actif de fichier. Je suis tout à fait convaincu que je suis absent quelque chose de petit, cependant, la documentation et les postes que j'ai trouvé sur ces méthodes ne sont pas assez utile pour les nouveaux arrivants.
- aapt - Android sdk outil: Malheureusement, le android docs sur "l'Utilisation des aapt" sur android docs [lien 2 ci-dessous) sont très limitées. La console de commande de l'aide montre un peu plus d'infos. Lorsque vous essayez de l'utiliser pour simplement ajouter un fichier à l'épreuve.apk, il finit par la suppression de l'original, et la création d'un nouveau fichier test.apk.zip ne contenant que le fichier que j'ai essayé d'ajouter. Je n'ai pas été en mesure de trouver la ligne de commande correcte combinaison de prendre un décompressé apk et les reconditionner - ce serait mon premier prix.
- apkbuilder - Android sdk outil: tout d'Abord, cet outil est obsolète, ce qui est un point négatif pour elle. Je ne peux pas le faire fonctionner avec ce que j'ai dans ce dossier décompressé. Je pense que je vais manquer un pré-apkbuilder étape, car apkbuilder demande pour une ressource archive zip, et j'ai un dossier de ressources.
- ant - outil de construction: Autre des postes similaires dis avec ant, plutôt que d'utiliser l'android outils. J'ai de la difficulté à obtenir de fourmis au travail. Un lien particulier à l'Obtention de Fourmi de Travail avec Android [lien 3 ci-dessous] a l'air prometteur, mais semble comme c'est pour un autre kit sdk d'android (mon build.xml qui est généré par android est différent de son). Malheureusement, je sais peu de choses sur la fourmi, et éprouve de la difficulté de devenir expert suffisant pour résoudre mon problème actuel.
Suite à NickT la solution ci-dessous le script ant me donne l'erreur
taskdef classe com.android.ant.SetupTask ne peut pas être trouvé en utilisant le chargeur de classe AntClassLoader[].
J'ai trouvé quelques références en ligne à cette erreur, ont confirmé que les locaux.propriétés a un sdk.dir paramètre qui pointe vers mon dossier d'installation du sdk android (sdk.dir=/Applications/android-sdk-mac_86). - ?????: Il y a peut être une autre option que je n'ai pas répertoriés et /ou découvert, je serais intéressé à entendre parler.
Je me rends compte que de fouiller dans les engrenages qui sont normalement couverts par mon ide peut conduire à diffuculties. Mais je sais que beaucoup de SORTE que les utilisateurs peuvent faire beaucoup de ces choses, et j'espère obtenir de l'intérêt de certains d'entre eux. Merci pour toute aide.
(Eclipse 3.6 sur Mac Snow Leopard 10.6 64 bits)
PS, je ne suis pas en mesure de poster plus de 1 lien hypertexte pourtant, j'ai donc inclus ces adresses pour afficher plus d'infos à ma question.
(1): stackoverflow.com/questions/4783160/embed-login-details-in-apk-file-different-for-each-user-or-other-options
(2): developer.android.com/guide/developing/tools/aapt.html
(3): www.disgruntledrats.com/?p=27
OriginalL'auteur Richard Le Mesurier | 2011-01-25
Vous devez vous connecter pour publier un commentaire.
Pour répondre à ma propre question avec la méthode que nous avons finalement choisi, et "pour l'enregistrement":
Je n'ai pu obtenir Ant fonctionne correctement pour moi (mon manque de compréhension).
J'ai fini par utiliser la aapt outil. Il fonctionne conformément à la documentation du kit de développement Android et est vraiment très simple à utiliser:
Cela va ajouter une readme.txt fichier (nous étions à l'enregistrer dans un sous-dossier du dossier actuel du dossier, appelé actifs. Si vous souhaitez enregistrer le nouveau fichier quelque part d'autre, aapt offre un commutateur de ligne de commande pour spécifier qu')
Cependant, il ya quelques mises en garde:
À résoudre 1:
À résoudre 2:
Je ne peux pas vraiment vous aider. Chaque version du SDK (sur Mac) j'ai essayé de télécharger inclus un aapt outil qui ne reconnaissent pas les sous-dossiers. Un collègue téléchargé une version qui a travaillé, mais on pouvait toujours pas à comprendre quelle version c'est qu'il a téléchargé, donc nous avons gardé cette "magie" de la copie et de la renommée et de l'utiliser jusqu'à ce que nous trouver une nouvelle version qui fonctionne.
Merci beaucoup pour cette réponse. Juste ce que je cherchais. Pas de problèmes avec 1 ou 2 mais depuis que je ne suis pas la signature de mon apk encore mais je voulais changer dynamiquement des données et de ce fait parfaitement.
Merci pour votre post. Il leed moi pour ma solution. Pour automatation voir mon post
Vous pouvez appeler décompresser app.apk -d ./application "suivi de" rm-rf ./app/META-INF'. Puis compresser le fichier et le renommer .apk et cela va vous donner une version non signée du même fichier apk.
OriginalL'auteur Richard Le Mesurier
La solution la plus simple serait de donner le modèle de source de l'application pour que votre client avec un script que la reconstruction de l'application à partir de zéro.
De cette façon vos clients n'ont tout simplement changer les actifs dans le dossier, double-cliquez sur un fichier de commandes et d'obtenir l'apk dans une minute ou deux.
Vous n'avez pas de savoir quelque chose au sujet de ANT pour compiler et un paquet sans l'IDE, il suffit de suivre les étapes ici :
http://developer.android.com/guide/developing/other-ide.html
Le script ANT est généré par le "android créer" "la mise à jour android" des commandes. Il suffit alors d'exécuter "ant libération" et vous partez.
OriginalL'auteur Yahel
Un peu tard, sans doute, mais ce poste apparaît dans beaucoup de recherches, j'ai donc pensé que cela pourrait être d'intérêt.
J'ai juste utilisé un Zip standard de l'outil de "unsign' l'APK en supprimant le répertoire META-INF, mise à jour des fichiers d'actifs, puis a démissionné de l'APK en utilisant jarsigner. (Si je pouvais trouver un moyen de signer des Pots sans l'aide de jarsigner, de sorte que nous n'aurions pas besoin du SDK Java installé partout, ce qui serait vraiment utile - les idées de quelqu'un?)
OriginalL'auteur Grant Shirreffs
De s'étendre sur les Yahel réponse, oui je pense que la Fourmi est le chemin à parcourir. Il peut être un peu intimidant, mais il est urprising comment il fonctionne "out of the box" sans trop vous embêter. La personnalisation il faut un peu de lecture, mais je l'ai réussi, donc je vais vous donner le bénéfice de mon expérience.
Tout d'abord créer un exemple d'application, comme l'a suggéré. Supposons que vous voulez qu'il soit créé dans c:\junk.
Puis, à partir de votre invite de commande dans Android SDK\tools type d'annuaire:
( -t 5 vous donne de l'API de niveau 7, de type " android liste des cibles pour voir d'autres options)
Supposons que vous avez été la construction de vos projets dans un workspace Eclipse (c'est /dev/projets/EclipseHelios/AndroidWorkspace sur ma machine). Copiez l'exemple de l'application build.xml et de construire.propriétés pour le dossier du projet dans Eclipse
et de modifier le nouvellement créé build.xml et supprimer la ligne
et de le remplacer avec juste:
Maintenant modifier le nouvellement créé construire.les propriétés qui seront vides à l'exception des commentaires et ajouter (customisng le cas échéant):
Ensuite, si vous obtenez une invite de ligne de commande dans /dev/projets/EclipseHelios/AndroidWorkspace/YourActualProjectName
et le type 'ant de presse", vous devriez vous retrouver avec un construit et signé apk dans /dev/projets/AntBuilds/YourActualProjectName
Vous devriez être en mesure de personnaliser les actifs emplacement par l'ajout d'un actifs.dir entrée dans la construction.propriétés
Jetez un oeil ici, il semble que les propriétés n'acceptent pas les caractères non ascii : blog.klacansky.com/matter-code/...
Merci, Yahel, j'ai trouvé ce lien, je ne pense pas que je suis en rupture non ascii règles "/Applications/android-sdk-mac_86". Je vais l'ajouter à ces réponses à plus tard aujourd'hui, avec des informations sur la manière dont j'ai aapt de travail.
OriginalL'auteur NickT