NativeScript 5.4.2
tns-core-modules 5.4.3
tns-ios 5.4.2
Xcode 10.2.1
我正在尝试为此iOS的后台地理位置库创建一个插件:https://github.com/Yermo/background-geolocation-ios
该项目生成一个静态库libBackgroundGeolocation.a。
我已阅读有关如何使用静态iOS库的文档:https://docs.nativescript.org/plugins/Use-Native-iOS-Libraries#static-libraries
我已了解所需的目录结构:https://docs.nativescript.org/plugins/plugin-reference#directory-structure
我的插件基于官方的插件种子,因此我有一个演示目录和一个src目录,其中包含我的插件代码以及该目录下的platform / ios目录。
我已将BackgroundGeolocation.a文件复制到src / platforms / ios中。
我已经创建了src / platforms / ios / include / BackgroundGeolocation目录,并将公共头文件从项目复制到该目录中。
我注意到src / platforms / ios / include / BackgroundGeolocation / module.modulemap文件已创建。
在插件目录中,我可以成功运行'npm run build'。
但是,如果从演示目录运行“ tns build ios”,则始终会出现“ ld:找不到用于-lBackgroundGeolocation的库”错误。
如果我将库重命名为libBackgroundGeolocation.a,则会得到“ ENOENT:没有这样的文件或目录,scandir'..... ios / include / libBackgroundGeolocation”,因此我推测它至少是在识别该库。
我认为这可能是路径问题,因此我尝试使用platform / ios目录的完整路径在build.xcconfig中显式设置库包含路径。
不高兴。它仍然找不到库,但是如果我在build.xcconfig中的-L中拼写了错误的目录名称,则会标记未找到目录错误。
然后,我认为可能与库中的目标有关,因此我按照此处Build fat static library (device + simulator) using Xcode and SDK 4+的说明包含了多个目标。
仍然没有喜悦。
我怀疑我缺少基本知识。
我在做什么错了?
最近是否有一个有效的工作示例,说明如何将静态iOS库包装为NativeScript插件?
答案 0 :(得分:0)
原来是添加
LIBRARY_SEARCH_PATHS = $(inherited) "$(SRCROOT)/../../node_modules/<projectname>/platforms/ios
到src / platforms / ios / build.xcconfig文件解决了此问题。