Bonjour
Je lance un défi : comment intégrer des librairies natives .so (issues d'un développement natif avec le NDK et interfacées en java avec la technologie JNI) dans une application windev mobile Android ?
Contexte : par exemple le SDK ArcGis de ESRI (https://developers.arcgis.com/android/) qui permet de l'affichage cartographique sous Android.
Le SDK est composé de librairies .jar (pas de soucis, WM gère leur intégration), et de librairies natives .so (qui sont appelées par les .jar).
J'ai testé plusieurs pistes :
- bestialement: les mettre en parallèle des .jar dans la fenêtre d'import des librairies lors de la génération de l'APK -> ne marche pas
- plus subtil : utiliser la fenêtre d'intégration des fichiers et en demandant l'extraction vers le répertoire des libs avec plusieurs variantes testées pour les folders -> ne marche pas
- encore plus subtil : utiliser l'intégration des fichiers et faire l'extraction à la main avec fExtraitRessource et vérification des folders et des extractions -> ne marche pas non plus ....
Les échecs sur les deux derniers tests sont logiques car en fait on ne peut pas écrire dans le folder /lib de l'application même si on a demandé toutes les autorisations du monde dans le Manifest ..... la création des folders échoue ainsi que l'écriture d'ailleurs ...
Alors, comment faire ?????
Et bien, j'ai trouvé la solution la plus directe, mais la moins satisfaisante !
Quand WM génère l'APK, si vous avez la curiosité de surveiller le répertoire de l'application, vous constaterez que WM crée des répertoires, qui correspondent en fait à la structure de fichiers dont le compilateur/générateur de l'APK a besoin pour le créer. Cette structure de répertoires est ensuite effacée par WM à la fin de la génération.
Dans cette structure de répertoire sur le PC (<repertoireprojet>/android/generation/libs/armeabi) , il se trouve que WM y intègre des .so à lui qui correspondent en fait au framework WM développé (en C certainement).
L'astuce consiste donc à être rapide et à copier dans ce répertoire vos .so à vous, et le tour est joué, car tous les .so qui s'y trouvent sont ensuite intégrés dans l'APK pour être installé "proprement" sur le smartphone.
Bien entendu, j'ai fait la demande illico à PCSOFT pour qu'il nous propose une solution beaucoup plus propre et fiable (je n'ai pas envie de faire un concours de rapidité à chaque génération). La version V20 est en pré version, c'est encore temps de la modifier....!!!!!
Le défi que je vous propose est le suivant : est ce que vous auriez une autre solution que celles que j'ai testées ?
Partager