Создание подключаемого модуля NativeScript с использованием статической библиотеки IOS.

Я создал статическую библиотеку (протестирован в Xcode для собственного проекта ios и работает нормально). Теперь я следую этому https://github.com/NativeScript/nativescript-plugin-seed, чтобы создать плагин nativescript с использованием статической платформы.

Структура плагина  введите здесь описание изображения

Файл module.modulemap создан мной и выглядит так

module libstaticlibrary {
    umbrella header "staticlibrary.h"
    export *
}

staticlibrary.h

#import <Foundation/Foundation.h>

@interface staticlibrary : NSObject
+ (NSString *)sayHello;
@end

libstaticlibrary.d.ts, тоже созданный мной

declare class staticlibrary extends NSObject {

    static sayHello():string;

}

Затем в helloplugin.common.ts я пытаюсь получить доступ к методу staticlibrary.sayHello ().

export class Utils {
  public static SUCCESS_MSG(): string {
    // let msg = `Your plugin is working on ${app.android ? 'Android' : 'iOS'}.`;
    let msg = staticlibrary.sayHello();

    setTimeout(() => {
      dialogs.alert(`${msg} For real. It's really working :)`).then(() => console.log(`Dialog closed.`));
    }, 2000);

    return msg;
  }

Я получаю следующую ошибку.

node_modules/nativescript-helloplugin/helloplugin.common.ts(21,15): error TS2304: Cannot find name 'staticlibrary'.

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


person smartsanja    schedule 05.03.2018    source источник


Ответы (1)


Это просто ошибка компилятора TypeScript, вам нужно сгенерировать типизацию для своей статической библиотеки (см. docs, чтобы узнать как) или просто добавьте эту строку в начало файла.

declare var staticlibrary: any

Я вижу, что у вас есть файл объявления во фрагменте кода, если вы хотите его использовать, вам нужно включить его в свой references.d.ts файл.

person Manoj    schedule 05.03.2018
comment
Спасибо за ответ. Я выполнил команду TNS_TYPESCRIPT_DECLARATIONS_PATH = $ (pwd) / typings tns build ios --for-device и включил путь staticlibrary.d.ts в reference.d.ts. У меня нет такого файла или каталога, scandir '/Users/.../nativescript-helloplugin/demo/node_modules/nativescript-helloplugin/platforms/ios/include/libstaticlibrary'. Очевидно, у меня нет такого файла. - person smartsanja; 06.03.2018
comment
Переименуйте libstaticlibrary.a в staticlibrary.a у меня сработало. - person smartsanja; 06.03.2018