41 votes

Création d'un SDK de produit: Comment ajouter une bibliothèque native (.SO) et un fichier jar avec le SDK que je crée?

Je suis entrain de créer un widget qui nous permettra de fournir à l'entrepreneur les utilisateurs finaux, et il se compose d'un POT et d'une bibliothèque native (*.DONC) construit à l'aide du NDK. Le POT a une interface JNI à la bibliothèque dynamique.

Il est très clair sur la façon d'inclure un externe POT dans un projet, mais pas comment inclure une dépendante de la dynamique de la bibliothèque.

  1. Comment dois-je emballer et construire de la .JAR et .De la SORTE? Quelles sont les meilleures pratiques?

  2. Je peux créer le fichier JAR à l'aide de la JDK pot de commande. Ai-je besoin pour exécuter dx.chauve-souris sur le pot pour convertir de bytecode Dalvik?

  3. J'ai besoin de créer un exemple de projet montrant le widget dans l'action. Comment puis-je inclure cette .JAR et .AINSI, dans un projet exemple qui montre comment utiliser le widget?

23voto

Sunrising Points 656

J'ai passé quelques temps sur ce sujet, et je ne comprends juste pas pourquoi n'est-ce pas écrit sur wikitude de la documentation.... de toute façon suivre ce changement!

  • accédez à windows/préférences/android/build
  • décochez la première et la deuxième option
  • extraire des fichiers à partir de wikitudesdk.jar avec winrar si c'est une archive, recherche libarchitect.donc, et de le copier dans /libs/libs/armeabi/
  • ajouter wikitudesdk.jar votre chemin de génération

enter image description here

10voto

Jason LeBrun Points 6130

Vous devez utiliser la version standard des outils inclus avec le kit de développement pour cela. Si vous incluez le .jar fichiers dont vous avez besoin dans l' /lib répertoire de votre projet, la fourmi processus de construction vous permet de convertir le inclus catégorie fichiers de bytecode Dalvik format et de les inclure dans vos classes.dex fichier de l'application. Ajouter un build.properties le fichier à la racine de votre projet, avec une seule ligne:

external.libs.dir=lib

Selon la version de votre kit de développement et de configuration, vous pouvez avoir besoin de placer le pot dans libs plutôt que d' lib.

Comme pour l' .donc, je présume que c'est compilé à l'aide de l'Android NDK, ou à l'aide d'un script de construction qui utilise le compilateur approprié et drapeaux du compilateur qui sont nécessaires à la réussite de lien à l'objet partagé sur Android. Si c'est le cas, vous pouvez inclure l' .si le fichier en libs/armeabi et ils seront ajoutés dans le pot ainsi. En outre, la dynamique de la bibliothèque chargeur savent à regarder dans cette position dans le .bocal en fait, quand vous essayez de charger la bibliothèque à partir du code Java.

8voto

n8n8baby Points 146

À l'aide de l'outil ADT 12 ans, j'ai accompli cela en procédant comme suit:

1) l'Exportation JAR à partir de votre bibliothèque avec le fichier à l'aide d'Eclipse. Assurez-vous d'exclure AndroidManifest.xml. Cela permettra d'inclure le code source et d'autres données, donc si vous distribuez, vous aurez envie de bande de ces inutiles bits par tout utilitaire ZIP.

2) Créer un répertoire dans le répertoire de votre Application, à la source de l'arbre (j'utilise "lib") et d'une copie de votre bibliothèque de POT pour elle.

3) cliquez-Droit sur le projet dans Eclipse et sélectionnez "Configure Build Path". Ajouter le POT sur POT à l'intérieur de votre App de l'arbre source.

4) Dans votre Eclipse préférences, sélectionnez Android/construction de la section et de décocher l'option "actualiser Automatiquement les Ressources et les Actifs dossier sur build". Vous remarquerez une option ci-dessous qui dit que "la Force d'erreur lorsque externes pots contiennent des bibliothèques natives." Il y a un ADT bug, qui seront censées être résolu dans R17, qui utilise un mauvais réglage. Une fois qu'il est fixe, vous allez utiliser la "Force" d'erreur" un (assurez-vous que l'option décochée).

5) une Fois que vous construisez votre application APK, vous aurez une libs/armeabi/libXXXX.donc fichier. Ce ne sera pas automatiquement décompressé sur installer. Vous aurez besoin d'écrire du code pour extraire à partir de votre fichier APK dans votre répertoire de données, puis utiliser le Système.charge sur le .donc le fichier dans votre répertoire de données.

J'ai bidirectionnel JNI appels à partir de la charger dynamiquement des fichiers, et même d'utiliser la dlopen() sur celui-ci de faire de mon plugin personnalisé enregistrement des trucs.

1voto

aganpro Points 11

Ajoutez les lignes ci-dessous à android.mk .

 include $(BUILD_PACKAGE)

LOCAL_PREBUILT_STATIC_JAVA_LIBRARIES := alias:libs/your.jar

include $(BUILD_MULTI_PREBUILT)
 

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X