使用第3方,原生脚本项目中的原生SDK-框架似乎不是动态框架

时间:2019-08-12 12:08:08

标签: ios nativescript angular2-nativescript nativescript-plugin

我正在开发Nativescript + Angular共享的Web和移动应用程序。我正在使用最新版本的框架(TNS 6和Angular 8)。我需要使用iOS本身可用的SDK-https://github.com/dotpay/Mobile-SDK-iOS。我尝试将其包装为插件,并尝试通过两种方式做到这一点:

  1. 使用Podfile创建插件-在这种情况下,当我尝试在最终项目中访问DotPay对象时,我会添加
declare var DotPay;

位于文件顶部,但出现错误

Can't find variable: DotPay

运行代码时。

  1. 将整个库添加到platform / ios /目录中。在这种情况下,我什至无法构建项目,因为出现此错误:
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的结构为: DotPay iOS SDK structure

我也使用

运行第二个选项
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。

2 个答案:

答案 0 :(得分:0)

要为iOS sdk构建插件,您应该从Nativescript插件种子开始。

在该Plugin Project中,将您的* .framework放入$myproject/src/platforms/ios中。

之后,从创建的演示项目中生成键入内容。然后,您可以看到什么是“可见的”,什么不是。

答案 1 :(得分:0)

最后,我在Nativescript的ios运行时存储库上获得了帮助。这是问题所在:https://github.com/NativeScript/ios-runtime/issues/1187