Использование статической библиотеки iOS в плагине NativeScript 5.4

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, содержащий мой код плагина, и каталог платформ / 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: Library not found for -lBackgroundGeolocation».

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

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

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

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

По-прежнему никакой радости.

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

Что я делаю неправильно?

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


person Yermo Lamers    schedule 21.06.2019    source источник


Ответы (1)


Получается добавление

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

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

person Yermo Lamers    schedule 22.06.2019