Outil dx Android
Personne ne sait de toute la documentation pour dx?
En particulier, je suis intéressé à savoir ce que l' --core-bibliothèque de l'option. Quelqu'un peut-il nous donner un indice sur qui?
Merci!
source d'informationauteur Liz
Vous devez vous connecter pour publier un commentaire.
C'est un but spécial drapeau qui n'est utilisé que lors de la construction de quelques-uns des cadre des pots (core.jar, framework.jar, etc.). Normalement, dx va refuser de traiter un java.* ou javax.* des classes. Si cette option est utilisée pour core.jar, où toutes les classes sont en fait définis.
Ici est pertinente texte de présentation de la dx source (dalvik/dx/src/com/android/dx/command/dexer/Main.java), qui s'affiche si vous essayez d'inclure une java.* ou javax.* classe dans une application.
Qu'est-ce que dx outil?
La dx outil convertit les fichiers de classe Java dans un .dex (Dalvik Executable) fichier
Où est-il?
L'dx.jar était d'origine situé sous android-sdk/plates-formes/android-X/tools/lib/ avant (surtout dans android-3 et android-4), et a déménagé à android-sdk/platform-tools/lib/ plus tard.
Comment s'inscrit-il dans Android?
La les fichiers source Java sont convertis à les fichiers de classe Java par le compilateur Java.
La dx outil convertit les fichiers de classe Java dans un .dex (Dalvik Executable) fichier. Tous les fichiers de l'application sont placés dans cette .dex fichier. Au cours de ce processus de conversion de la redondance de l'information dans les fichiers de classe sont optimisés .dex fichier.
Par exemple, si la même Chaîne est trouvée dans différents fichiers de classe, l' .dex fichier ne contient qu'une seule référence de cette Chaîne.
Ces .dex fichiers sont donc beaucoup plus petits en taille que les fichiers de classe.
L' .dex fichier et les ressources d'un projet Android, par exemple, les images et les fichiers XML, sont emballés dans une .apk (Android Package) fichier.
Pour mieux comprendre regardez le android processus de construction
FYI:
Le programme aapt (Android Asset Outil de Conditionnement) effectue apk de la création.
Le résultant .apk fichier contient toutes les données nécessaires pour exécuter l'application Android et peut être déployé sur un appareil Android via adb(android appareil bridge) de l'outil.
Référence
--core-bibliothèque de l'option sur la Dx va contourner la stupidité de vérifier qui vous évite de y compris Java bibliothèques de base dans vous Android app.
Dx sera barf si vous essayez d'inclure une bibliothèque qui contient les packages java.* ou javax.* nom de l'espace. l'idée est que les classes dans l'espace de nom sont susceptibles de dépendre d'autres JDK "de base" des classes, ce qui va casser votre application, car ils (peuvent) pas être présent sur Android.
maintenant, bien sûr, juste parce qu'un package java commence avec java.* ou javax.* ne veut pas nécessairement dire que ça dépend du JDK bon. il peut fonctionner parfaitement bien dans android. la recommandation, si vous savez ce que vous faites, si vous savez que votre java/x.* les classes ne dépendent pas de JDK classes de base, est d'utiliser un outil comme JarJar à emballer le POT sous un nom différent de l'espace.
cela étant dit, pour obtenir autour de la stupidité de vérifier, ajoutez l'option --core-option bibliothèque de dx. modifier la dernière ligne de
$ANDROID_HOME/platform-tools/dx
de,,
dans mon cas, j'ai été y compris une bibliothèque qui dépendait de Jackson, qui dépend de JAXB. pour moi, la substitution de la stupidité était acceptable parce que la bibliothèque de l'utilisation de Jackson était seulement pour JSON et non pas pour la sérialisation XML (j'ai seulement inclure la bibliothèque d'API JAXB, pas l'impl). bien sûr, je souhaite qu'il y avait une manière plus propre de faire, mais de ré-écrire le premier niveau de la bibliothèque afin d'éviter à l'aide de Jackson n'était pas une option.