Plugin Flutter FFI MacOS

Salut à tou·te·s,
Je suis en train de faire un plugin Flutter qui fait appel en FFI à une librairie native installée (le plugin part du principe que le framework natif est déjà installé sur le système).
J’ai un problème pour linker la librairie. Sur linux (par exemple) j’ai simplement besoin d’appeler DynamicLibrary.open("path_to_lib.so);.
Sur MacOS, cette même manipulation renvoie une erreur : impossible d’ouvrir la librairie dynamique.
J’ai essayé avec le chemin d’accès vers le dossier path_to/MaLibrairie.framework ainsi qu’avec le chemin d’accès vers la librairie path_to/MaLibrairie.framework/MaLibrairie.

J’ai cru comprendre qu’il faut peut-être faire une manip avec le fichier .podspec du plugin, mais je n’arrive pas à trouver la manipulation exacte (ni de projet similaire). Quelqu’un a cette expérience?
Par ailleurs, si le fichier est linké avec le .podspec, est-ce qu’il faut utiliser DynamiLibrary.open("path") ou DynamicLibrary.process() ?

Merci d’avance

Salut,

Es-tu passé par Xcode pour ajouter ta librairie ?
Les fichiers doivent être liés via Xcode en lançant le .xcworkspace.

Merci.
Si je ne m’abuse, le .xcworkspace est lié à une appllication, pas à un plugin. Ici donc, le .xcworkspace est donc dans mon_plugin/example/macos
Or je souhaite que cette liaison de librairie soit faite par le plugin, et non par l’application test. Ca te parais jouable ?

Oui normalement ton plugin devrait faire la connection, après je n’ai pas trop fait ce genre de manip, je ne pourrais plus t’aider.

Après vérification :

  • Le projet « example » du plugin fonctionne si j’ajoute le framework dans Xcode.
    Mais :
  • Après export du plugin sur dart pub, si j’importe le plugin depuis une application test, il ne trouve pas le framework. Il faudrait relinker à la main à chaque fois pour les utilisateurs du plugin, ce qui ne me semble pas satisfaisant.

Quelqu’un a une idée pour pouvoir charger le framework dynamiquement depuis Dart ? Ou bien pour spécifier un chemin d’accès (ou une liste de chemins d’acccès possibles) au .podspec du plugin pour qu’il puisse linker le framework à la compilation de l’app ?

Résolu en ajoutant ceci au .podspec du plugin :

s.frameworks = 'TelerikUI'
s.xcconfig = { 'FRAMEWORK_SEARCH_PATHS' => '/Applications/Xcode.app/Contents/Developer/Library/Frameworks' }
1 J'aime