在NativeScript 5.4插件中使用静态iOS库

时间:2019-06-21 20:43:48

标签: ios objective-c xcode nativescript nativescript-plugin

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插件?

1 个答案:

答案 0 :(得分:0)

原来是添加

LIBRARY_SEARCH_PATHS = $(inherited) "$(SRCROOT)/../../node_modules/<projectname>/platforms/ios

到src / platforms / ios / build.xcconfig文件解决了此问题。