在本机脚本项目中使用第 3 方本机 SDK - 框架似乎不是动态框架

Using 3rd party, native SDK in nativescript project - Framework does not appear to be a dynamic framework

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

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

在文件顶部,但我收到错误

Can't find variable: DotPay

当我运行代码时。

  1. 将整个库添加到 platforms/ios/ 目录中。在这种情况下,我什至无法构建项目,因为我收到此错误:
The bundle at $PROJECT_DIR/node_modules/nativescript-dotpay/platforms/ios/DotPaySDK.framework does not appear to be a dynamic framework.

我尝试在多个位置添加 module.modulemap 文件 (/platforms/ios, /platforms/ios/DotPaySDK.framework, /platforms/ios/DotPaySDK.framework/Modules) 但它没有改变任何东西。

此外,调用此命令后

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。

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

在该插件项目中,将您的 *.framework 放入 $myproject/src/platforms/ios

之后从创建的演示项目生成类型。然后你可以看到什么是"visible"什么不是

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