我正在开发Nativescript + Angular共享的Web和移动应用程序。我正在使用最新版本的框架(TNS 6和Angular 8)。我需要使用iOS本身可用的SDK-https://github.com/dotpay/Mobile-SDK-iOS。我尝试将其包装为插件,并尝试通过两种方式做到这一点:
declare var DotPay;
位于文件顶部,但出现错误
Can't find variable: DotPay
运行代码时。
The bundle at $PROJECT_DIR/node_modules/nativescript-dotpay/platforms/ios/DotPaySDK.framework does not appear to be a dynamic framework.
我试图在多个位置(/platforms/ios、/platforms/ios/DotPaySDK.framework、/platforms/ios/DotPaySDK.framework/Modules)添加module.modulemap文件,但是它没有做任何更改。
此外,调用此命令后
TNS_TYPESCRIPT_DECLARATIONS_PATH="$(pwd)/typings" tns build ios
未生成此SDK的定义文件(在两种情况下)。
SDK的结构为:
我也使用
运行第二个选项tns build ios --log trace
我发现它在ios-project-service.js中失败,行499-502
const packageType = plistJson["CFBundlePackageType"];
if (packageType !== "FMWK") {
this.$errors.failWithoutHelp("The bundle at %s does not appear to be a dynamic framework.", libraryPath);
}
由于这个事实,SDK Info.plist的CFBundlePackageType密钥是BNDL而不是FMWK。
答案 0 :(得分:0)
要为iOS sdk构建插件,您应该从Nativescript插件种子开始。
在该Plugin Project中,将您的* .framework放入$myproject/src/platforms/ios
中。
之后,从创建的演示项目中生成键入内容。然后,您可以看到什么是“可见的”,什么不是。
答案 1 :(得分:0)
最后,我在Nativescript的ios运行时存储库上获得了帮助。这是问题所在:https://github.com/NativeScript/ios-runtime/issues/1187