2017-04-25 2 views
3

Je souhaite créer un framework dynamique qui intègre deux frameworks tiers avec des bibliothèques statiques et les ajouter ensuite en tant que pod à mon projet. Voici leurs fichiers podspecComment créer un framework dynamique (Swift) basé sur deux bibliothèques statiques utilisant Cocoapods

J'ai essayé de les ajouter comme s.dependency dans mon dossier podspec mais obtenu l'erreur suivante Pods error - target has transitive dependencies that include static binaries

essayé de les inclure s.vendored_frameworks mais nous avons eu la suite https://github.com/CocoaPods/CocoaPods/issues/6409 et ne peut pas faire une solution de contournement avec la solution donnée.

Pourriez-vous m'aider avec la façon dont je peux y faire face et plus tard, je vais poster un projet de test pour examiner le problème de plus près. Maintenant, j'ai tellement de projets de test différents qui ne fonctionnent pas que je ne sais même pas quoi publier sur Github pour montrer.

Dans la plupart de mes tentatives, j'ai fini par ne pas être en mesure d'utiliser Importer IndoorsSDK/IndoorAtlas dans mes fichiers rapides du cadre parce erreur "No such module".

Appréciez toute aide.

Répondre

2

Enfin, j'ai trouvé la solution. Donc, au cas où quelqu'un rencontrerait un problème similaire, je l'afficherai ici.

Mon podspec fichier sauf les autres lignes contiennent suivant

#// one library added as dependency, another as vendored_frameworks 
#// because it lacks modulemap, so it was added manually to IndooRS framework 
spec.dependency 'IndoorAtlas' 
spec.vendored_frameworks = 'SKNavigation/Frameworks/IndoorsSDK.framework' 

#// following lines fix linking issues so our pod would see dependency modules 
spec.pod_target_xcconfig = { 
    'FRAMEWORK_SEARCH_PATHS' => '$(inherited) $(SRCROOT)/**', 
    'OTHER_LDFLAGS' => '$(inherited) -undefined dynamic_lookup' 
    } 

Et modulemap, qui a été ajouté au cadre qui manquait il

module IndoorsSDK [system] { 
    header "Headers/IndoorsSDK.h" 
    header "Headers/Indoors.h" 
    export * 
    link framework "CoreMotion" 
    link framework "CoreBluetooth" 
    link "c++" 
} 

Le dernier point, podfile devrait contenir suit pour cacher l'erreur de dépendances transitives.

pre_install do |installer| 
    def installer.verify_no_static_framework_transitive_dependencies; end 
end 

Et c'est probablement tout.