Создание плагина NativeScript с использованием iOS SDK приводит к ошибкам «Неопределенные символы для архитектуры» - PullRequest
1 голос
/ 20 июня 2019

Я пытаюсь создать плагин NativeScript для интеграции iOS SDK bluetooth-принтера с приложением NativeScript.

Здесь приведена ссылка на SDK в качестве статической платформы

Я продолжаю получать следующую ошибку с партией army7, показывающей различные значения после новой установки плагина.

Undefined symbols for architecture armv7:
  "_CBCentralManagerScanOptionAllowDuplicatesKey", referenced from:
      -[RTBleService startScan:serviceArray:clear:] in RTPrinterSDK(RTBleService.o)
  "_OBJC_CLASS_$_CBCentralManager", referenced from:
      objc-class-ref in RTPrinterSDK(RTBleService.o)
  "_OBJC_CLASS_$_CBUUID", referenced from:
      objc-class-ref in RTPrinterSDK(RTBleService.o)
ld: symbol(s) not found for architecture armv7
note: Using new build systemnote: Planning buildnote: Constructing build description

В дополнение к попытке использовать официальный плагин семени плагина, у меня естьв конечном итоге сделано следующее, что, по моим исследованиям, должно быть достаточно:

УСТАНОВКА:

1) Создана папка для файлов плагинов в каталоге / app (этоплагин предназначен только для этого проекта в настоящее время).Эта папка имеет следующую структуру:

/app/plugin/src/package.json   
/app/plugin/src/platforms/ios/RTPrinterSDK.framework  

RTPrinterSDK.framework имеет две папки: Заголовки (содержит .h файлы) и Модули (содержит файл module.modulemap ) в дополнение к двум файлам: Info.plist и RTPrinterSDK.a .

2) Iдобавил плагин к проекту, запустив tns plugin add app/plugin/src

3) Я полагаю, что теперь tns run ios --bundle должен запустить проект на подключенном устройстве с плагином - хотя я еще ничего не сделал с плагином наapplication.

ПРОВЕРКА SANITY:

1) lipo -info app/plugin/src/platforms/ios/RTPrinterSDK.framework/RTPrinterSDK показывает, что Architectures in the fat file: /path-to-RTPrinterSDK are: army7 i386 x64_64 arm64.

2) tns run ios --bundle без пользовательского плагинаработает как в эмуляторах, так и на реальном устройстве

3) на всякий случай, я также пытался это сделать на новом новом --ts проекте

4) есть демонстрационное приложение, которое поставляется с SDK,Хотя это не приложение NativeScript, это файл проекта XCode, и я смог успешно запустить его на том же подключенном устройстве.

В SDK есть примечание, относящееся к файлу ble_serial.plist.В соответствии с инструкциями, я уверен, что мне нужно интегрировать это где-то в папке плагинов для доступа к подключению Bluetooth, но я не уверен, где.Учитывая, что ошибки относятся к модулям с "Ble" в имени, я боюсь, что может быть соединение.

Обратите внимание, что я не писал / готовил SDK.Поставщик принтера предоставил это.У меня есть доступ к нему только так, как он предоставляется.

Я был бы очень признателен за любые советы или отзывы по этому вопросу.

1 Ответ

1 голос
/ 21 июня 2019

Следуя ценным советам сообщества NativeScript, я обнаружил, что префикс CB в ошибках относится к CoreBluetooth.

Чтобы убедиться, что он загружен, я создал новый файл на /app/plugin/src/platforms/ios/build.xcconfig и добавил в него следующую строку:

OTHER_LDFLAGS = $(inherited) -framework "CoreBluetooth".

Теперь он компилируется и запускается на устройстве.

...