Использование статической библиотеки iOS в плагине NativeScript 5.4 - PullRequest
0 голосов
/ 21 июня 2019

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 / platform / ios.

Я создал каталог src / platform / ios / include / BackgroundGeolocation и скопировал общедоступные заголовочные файлы из проекта в этот каталог.

Я заметил, что был создан файл src / platform / ios / include / BackgroundGeolocation / module.modulemap.

В каталоге плагинов я могу успешно запустить 'npm run build'.

Однако из демо-каталога, если я запускаю 'tns build ios', я постоянно получаю сообщение об ошибке "ld: Библиотека не найдена для -lBackgroundGeolocation".

Если я переименую библиотеку в libBackgroundGeolocation.a, я получу «ENOENT: такого файла или каталога нет, scandir '..... ios / include / libBackgroundGeolocation", поэтому я предполагаю, что он по крайней мере признает, что библиотека есть.

Я подумал, что, возможно, это была проблема с путем, поэтому я попытался явно указать путь к библиотеке в build.xcconfig, используя полный путь к каталогу platform / ios.

Нет радости. Он по-прежнему не находит библиотеку, но если я неправильно опишу имя каталога в -L в build.xcconfig, это помечает ошибку каталога не найдена.

Затем я подумал, что, возможно, это связано с целями в библиотеке, поэтому я следовал рецепту здесь Создание толстой статической библиотеки (устройство + симулятор) с использованием Xcode и SDK 4 + для включения нескольких целей.

Все еще нет радости.

Я подозреваю, что упускаю что-то фундаментальное.

Что я делаю не так?

Есть ли где-нибудь рабочий недавний рабочий пример того, как обернуть статическую библиотеку iOS как плагин NativeScript?

1 Ответ

0 голосов
/ 22 июня 2019

Оказывается, добавление

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

в файл src / platform / ios / build.xcconfig решило эту проблему.

...