L'ajout d'un préconstruit binaires source Android
J'ai un binaire natif que je veux inclure dans Android du code source, de sorte que lorsque je compile mon fichier binaire sera inclus dans /system/bin .
J'ai copié mon binaire dans le répertoire /prédéfinis/android-bras/mon-binaire , et j'ai créé un nouveau Android.mk avec les éléments suivants:
LOCAL_PATH := $(call my-dir)
include $(CLEAR_VARS)
LOCAL_SRC_FILES := my-binary
LOCAL_MODULE := my-binary
LOCAL_MODULE_CLASS := EXECUTABLES
LOCAL_MODULE_TAGS := optional
include $(BUILD_PREBUILT)
Mais quand je lance faire, la seule référence que je reçois dans le journal est le suivant:
target Prebuilt: my-binary (out/target/product/generic/obj/EXECUTABLES/my-binary_intermediates/my-binary)
Et le binaire n'est pas installé dans le système.img. Il y a à peu près la même question dans L'installation d'un préconstruit binaire sur Android: "non trouvé" , mais le demandeur connaissait déjà la procédure de base et il n'est pas expliqué du tout. Si je lance faire mon binaires, j'obtiens la même ligne que j'ai posté.
J'ai aussi essayé d'exécuter faire/cible/produit/générique/système.img mes binaires mais ça ne fonctionne pas non plus. Mon binaire s'affiche dans la hors sous-dossier, mais elle ne sera pas incluse dans le système.imng
Suis-je raté quelque chose? Est-il possible de sorte que, avec juste la course make-j# mon binaires seront inclus dans /system/bin ?
OriginalL'auteur ziritrion | 2012-06-13
Vous devez vous connecter pour publier un commentaire.
Viens de tester sur mon émulateur, et ça fonctionne. J'ai utilisé comme exemple gdbserver dans ce dossier. J'ai un strace crosscompiled pour android et l'utiliser pour être intégrées dans l'image. Ainsi, les instructions seront pour cet exécutable.
Ajouter Android.mk fichier avec le contenu suivant:
Construire avec l'instruction:
mmm prebuilt snod -j4
(si vous avez des images déjà construit) ou vous pouvez utilisermake -j4
.Quelque chose de vraiment bizarre, c'est en cours... cours d'Exécution sur le code source directement à partir de pensions de titres (sans mon binaire) compile bien. Mais quand j'ajoute mon binaire, j'obtiens des erreurs étranges. Le pire, c'est que même si je fais un make clean et de prendre mon dossier (ce qui devrait laisser le code source tout comme elle l'était au début puisque je ne suis pas toucher quoi que ce soit d'autre), lorsque j'essaie de compiler, je vais encore obtenir des erreurs de compilation. Je suis en libérant de l'espace nad faire en sorte qu'il n'est pas rien non liées au code lui-même (je suis sur Ubuntu 10.04 sur VMware)
faire propre il suffit de supprimer le dossier "out". Il ne permet pas de modifier le code pour defaoult. Pouvez-vous mettre à jour votre réponse avec les erreurs que vous obtenez lors de la compilation?
Tant pis... j'ai re-téléchargé à partir de la source repo et construite sans ccache et à l'aide de la plaine , sans toute -j4, et il vient de construire. De toute façon, ça ne marche toujours pas; mon binaire n'apparaît pas dans /system/bin lors de l'utilisation de DDMS sur l'émulateur.
C'est étrange. Je vois ce fichier dans mon émulateur, j'ai juste vérifié.
OriginalL'auteur Yury
si votre binaire se retrouve dans l'annuaire, mais pas dans l'image, c'est parce que vous n'avez pas de règle pour inclure le binaire dans l'image.
dans
device/<vendorname>/<devicename>/device.mk
(ou, dans certains makefile inclus pardevice.mk
) vous devez avoir l'une des deux entrées:ou:
... Je dirais que la
PRODUCT_PACKAGES
approche;PRODUCT_COPY_FILES
est mieux adapté pour les scripts et fichiers de configuration.REMARQUE:
PRODUCT_PACKAGES
utilise le nom du module, oùPRODUCT_COPY_FILES
utilise le nom réel/l'emplacement de l'exécutable.OriginalL'auteur eurythmia
Vous pouvez également les éléments suivants qui fonctionne pour moi
.....
LOCAL_MDULE_PATH := $(TARGET_OUT_OPTIONAL_EXECUTABLES)
...
comprennent un montant de(BUILD_EXECUTABLE)
OriginalL'auteur Bill Chan