IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Windev Mobile Discussion :

défi : comment intégrer des librairies natives .so dans une application WM Android ?


Sujet :

Windev Mobile

  1. #1
    Membre éprouvé
    Homme Profil pro
    Responsable des études
    Inscrit en
    Février 2010
    Messages
    553
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Responsable des études
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Février 2010
    Messages : 553
    Points : 1 089
    Points
    1 089
    Par défaut défi : comment intégrer des librairies natives .so dans une application WM Android ?
    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 ?

  2. #2
    Membre confirmé

    Homme Profil pro
    Inscrit en
    Juillet 2011
    Messages
    382
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2011
    Messages : 382
    Points : 639
    Points
    639
    Billets dans le blog
    1
    Par défaut
    Bonjour,
    Il existe une méthode de contournement pour copier tes librairies en prenant tout ton temps.

    Explication :
    Lors de la génération d’une application Android
    On va Créer une Erreur que l’on va corriger par la suite pour nous donner accès au Source généré par WinDev Mobile
    Pour Cela On ajoute un fichier peu importe sa taille et son type

    Dans Destination APK (intégration de fichiers) il est possible de personnalisé la destination comme par exemple
    drawable-hdpi si on souhaite mettre une image dans ‘res/drawable-hdpi’.
    (plus de détail : http://doc.pcsoft.fr/fr-FR/?9000109)

    Au lieu de cet exemple on demande de le mettre dans values-iw.
    Cela va provoquer une Erreur de Compilation Java.

    Pendant que cet Erreur Apparaît (ne pas quitter l'erreur) il suffit de copier tes librairies

    Une fois la copie terminé Revenir dans WinDev Mobile.
    Revenir une fois en arrière, on supprime le fichier provoquant l’Erreur ajouté plus haut Puis on termine la compilation.
    Résultat : Tu doit vérifié sur un émulateur ou l'appareil que ton application tient compte des librairies

    Attention : Il sera nécessaire de refaire la manipulation a chaque génération de l'APK en attendant que pc soft propose intégrations de values ou librairies so

  3. #3
    Membre éprouvé
    Homme Profil pro
    Responsable des études
    Inscrit en
    Février 2010
    Messages
    553
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Responsable des études
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Février 2010
    Messages : 553
    Points : 1 089
    Points
    1 089
    Par défaut
    +1 pour la réponse.

    Effectivement, bien vu, on casse temporairement la compilation/génération mais on n'en sort pas finalement.... cela évite effectivement le stress de la copie.

    D'autres idées ? Mais celle là me parait pas mal. Néanmoins, on continue à rester dans un mode de fonctionnement border line.

    On ouvre une requête collective auprès de PCSOFT ? Cette fonctionnalité est simplissime pour eux : il leur suffit de prévoir la copie des librairies qu'on leur présente dans un répertoire qu'ils créent de toute manière. C'est quasi gratuit pour eux !

    Il faut que cela soit ajouté dans la version 20 ! Je ne pourrai pas attendre la 21 pour cette fonction?

  4. #4
    Membre éprouvé
    Homme Profil pro
    Responsable des études
    Inscrit en
    Février 2010
    Messages
    553
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Responsable des études
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Février 2010
    Messages : 553
    Points : 1 089
    Points
    1 089
    Par défaut
    PCSOFT a été très rapide à me fournir une réponse.

    Deux points
    1. l'intégration de librairies .so a été prise en compte comme demande d'évolution ; avec un peu de chance, elle fera partie d'une des prochaines releases de la V20 (sans doute pas celle de Janvier, mais peut être une suivante). C'est une très très bonne nouvelle !
    2. la solution temporaire, moins tordue que la mienne, est celle que me propose PCSOFT :
      • "Dans l'attente, vous pouvez inclure vos librairies .so en ouvrant le fichier .apk généré sur votre post en le renommant en .zip avant, car un fichier apk n'est qu'un .zip.
      • Puis en mettant vos librairies .so avec celles déjà intégrées automatiquement par WINDEV MOBILE, et en le renommant en .apk ensuite.
      • Pour installer une application dont le fichier apk est sur votre poste sur un périphérique Android connecté vous pouvez utiliser cette ligne de commande :
        c:\Android\android-sdk-windows\platform-tools\adb.exe install c:\Mes Projet Mobile\Mon Projet\Mon Projet.apk
      • En vous assurant que "c:\Android\android-sdk-windows\platform-tools\" est bien le répertoire qui contient l'utilitaire "adb.exe" bien entendu."

  5. #5
    Membre confirmé

    Homme Profil pro
    Inscrit en
    Juillet 2011
    Messages
    382
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Juillet 2011
    Messages : 382
    Points : 639
    Points
    639
    Billets dans le blog
    1
    Par défaut
    Merci pour l'info
    Cela me parait une bonne solution pour les so ou tout autres fichiers contenus dans l'apk
    Mais cela n'est pas possible si ces fichiers doivent être pris en compte par java pour la compilation
    Comme par exemple les values ou les broadcast receiver(http://27130.foren.mysnip.de/read.php?27131,483635)

    (la demande a été transférer au service développement mais j’attends depuis Novembre 2013)
    En attendant, ma solution reste la seule possible dans certains cas.

  6. #6
    Membre éprouvé
    Homme Profil pro
    Responsable des études
    Inscrit en
    Février 2010
    Messages
    553
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Responsable des études
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Février 2010
    Messages : 553
    Points : 1 089
    Points
    1 089
    Par défaut
    Etrange cette histoire de Broadcast receiver ... car j'utilise cette fonctionnalité dans un projet WM qui fait l'émission et la réception de SMS avec cette fonctionnalité de BroadcastReceiver.

    Par contre, pour que l'intent soit correctement déclaré, je fais la chose suivante :
    - création d'un classe perso en extends de BroadcastReceiver
    - branchement de l'intent SMS envoi ("SENT") via registerReceiver et un new IntentFiltert(SENT)
    - déclaration dans le Manifest (ou via le menu de WM) que l'application peut envoyer/recevoir les SMS

  7. #7
    Inactif  
    Profil pro
    Inscrit en
    Juin 2012
    Messages
    2
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2012
    Messages : 2
    Points : 4
    Points
    4
    Par défaut
    Bonjour, quelqu'un a-t-il des nouvelles concernant l'intégration de .so ?
    Je suis en WM20 ; et j'ai beau essayer toutes les solutions proposé ici ; aucune ne semble convenir.
    Merci d'avance !

Discussions similaires

  1. Comment intégrer le corps du message dans une fonction SendMail
    Par Patrick78 dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 03/08/2008, 16h47
  2. Réponses: 1
    Dernier message: 02/08/2008, 11h57
  3. Réponses: 10
    Dernier message: 06/06/2007, 18h19
  4. [Débutant]Comment faire des tranches de nombre dans une tabl
    Par Jedecouvreaccess dans le forum Access
    Réponses: 7
    Dernier message: 05/09/2005, 08h46
  5. Comment mettre des lignes de couleur dans une TCheckListBox ?
    Par Isa31 dans le forum Composants VCL
    Réponses: 9
    Dernier message: 31/03/2005, 08h40

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo