Puis-je utiliser les bibliothèques natives (installées dans une stack Android) dans mon application NDK?

de cet article

http://marakana.com/forums/android/examples/49.html

j’ai vu que l’application construite avec l’aide de NDK fait les choses suivantes

1> il comstack tout le code c (dans le dossier jni) et crée une bibliothèque qui rest dans le dossier libs

2> dans le paquet .apk, cette bibliothèque rest dans le dossier lib

et à l’intérieur du fichier java je peux charger cette bibliothèque avec le code suivant

  static { System.loadLibrary("ndk_demo"); } 

Question 1: est-il maintenant possible qu’au lieu de conserver cette bibliothèque dans .apk, je puisse l’installer dans un système Android et charger mon application à partir du système?

Question2: de la même manière, puis-je utiliser d’autres bibliothèques déjà installées dans Android, comme open GL , sqLite ?

La réponse aux deux questions est oui, vous le pouvez.

Q1: Si vous voulez le tester, vous pouvez le suivre.

1) Comstackz le code source en utilisant NDK.

2) Copiez (adb push) la bibliothèque dans / system / lib de votre appareil Android. Lancer l’application.

Lorsque vous chargez une bibliothèque, elle vérifie le dossier lib du fichier apk ou le dossier / system / lib du système. Mais pour copier dans / system / lib, vous devez remonter le système de fichiers. Pour cela, vous devez avoir des permissions root.

Q2:

La réponse à Q1 répond également. Si la bibliothèque est présente dans / system / lib, vous pouvez également appeler les bibliothèques existantes. Mais il y a un petit problème. Vous ne pouvez pas appeler directement les fonctions de la bibliothèque en raison de la convention de dénomination à suivre pour l’interface jni. Donc, finalement ” vous devez créer votre propre bibliothèque en utilisant la bibliothèque existante “.

Les étapes seraient comme ceci:

Tirez sur la bibliothèque (adb pull)

Écrivez votre code natif qui appellera les routines de la bibliothèque existante (Ex. OpenGL)

Comstackz votre code en le liant à la bibliothèque préconfigurée (voir Fichier de documentation NDK. La procédure à suivre est très claire. Vous devez le mentionner dans le fichier Android.mk lors de la compilation).

Vous obtiendrez finalement une bibliothèque partagée contenant en interne la bibliothèque existante.

J’ai fait la même chose pour l’une des bibliothèques existantes, libsqlite. Si vous êtes coincé quelque part, faites le moi savoir. Merci