【问题标题】:importing native iOS framework to nativescript plugin将原生 iOS 框架导入到 nativescript 插件
【发布时间】:2018-11-30 19:06:43
【问题描述】:

我正在尝试从我的 NativeScript 插件访问 iOS 框架类。

目前,这个插件只有一个SampleClass 和一个返回数字的test 方法,但它很快就会改变。目前,我正在尝试从该原生框架调用类方法。

我看到了一些插件种子扩展了 iOS 基类并在那里创建所有内容的示例,但在这种情况下,我想使用 .framework 文件。

我假设这相当于使用一些.aar Android 文件。在那种情况下,我已经看到会使用类似这样的方式拨打电话

var c = java.lang.Class.forName("org.test.plugin.name.MyActivity");

所以,我已经将.framework 文件复制到platforms/ios,我的问题是关于如何获得这个SampleClass 方法。

另外,我看到了一些推荐使用 CocoaPods 的文档。我是 iOS 开发的新手,仍然完全不明白,但如果我的应用程序不使用任何本机依赖项,​​这是否有必要?我需要其他文件吗? (有一个默认的Info.plistbuild.xcconfig

感谢您的回答。

【问题讨论】:

  • 我想如果你只想从框架中访问类,那么你不需要任何额外的步骤。一旦框架文件被复制到平台/ios,它应该可以在插件中访问。
  • @Manoj 我得到的是“找不到名称'SampleClass'。”
  • 如果你使用 TypeScript,那么你应该声明它。就像declare var SampleClass 这样编译器会忽略它。如果您有兴趣列出所有类和方法,那么您应该使用步骤here 为库生成声明文件。
  • @Manoj 成功了(我不知道文档的哪个部分这么说,但我很高兴它起作用了)谢谢。现在我面临一个 lipo 错误,但这将是另一个问题......
  • 很高兴这有效,所以现在我完全理解了您在寻找什么,因此添加了一个详细的答案,这可能有助于其他人轻松找到它。

标签: ios plugins nativescript


【解决方案1】:

由于您使用的是 TypeScript,因此您必须声明类,例如,

// iOS
declare var SampleClass;

// Android
declare var org; 

然后您可以直接访问所有可用的包/类/方法。

// Android
const MyActivity = org.test.plugin.name.MyActivity; 

// iOS
SampleClass.new() 

如果您喜欢这些库的智能感知支持,那么您甚至可以使用文档中的给定步骤为 iOSAndroid 库生成声明文件。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2019-08-19
    • 1970-01-01
    • 1970-01-01
    • 2021-02-09
    • 1970-01-01
    • 2019-03-20
    • 2021-01-27
    • 2019-06-17
    相关资源
    最近更新 更多