【问题标题】:How to embed third party framework on ionic capacitor custom plugin?如何在离子电容器自定义插件上嵌入第三方框架?
【发布时间】:2019-11-07 21:40:07
【问题描述】:

我正在开发一个 Ionic Capacitor 插件,该插件导入 2 个 iOs .framework 文件和一个引用此 .framework 文件之一的 .bundle。问题是,无论我如何在插件项目上链接/嵌入和指向/复制此文件,xcode 声称,在应用程序项目上,它都无法在 swift 文件中找到该模块。

我已经尝试将文件添加到项目中,使用“嵌入式二进制文件”选项,链接库,允许非模块化包含(在构建选项菜单上),将文件添加到标题(在构建阶段),以及等等……

xcode 指出错误的那一行是:

import OneFramework

Xcode 声称: 没有这样的模块'OneFramework'

我期待当我通过 npm 将插件添加到我的应用程序项目中,然后运行“$ rm -rf ios && 离子电容器运行 ios”来运行应用程序时,xcode 会找到我的插件的所有模块我正在努力。

【问题讨论】:

  • 你找到解决办法了吗?
  • 不...不过在 Android 上执行此操作更容易。
  • @jsharpe 我找到了解决方案。请看一下我写的答案。

标签: swift xcode ionic4 capacitor


【解决方案1】:

我找到了解决方案。要实现这一点,首先要知道的是,当您执行npx @capacitor/cli plugin:generate 时,CLI 为您所做的是生成可可豆荚。此 pod 的根目录是生成的文件夹本身。 考虑到这一点,接下来要做的是学习如何制作豆荚,但我会总结一下导致我成功的主要方面。

-首先你打开*.xcworkspace。然后,单击“将文件添加到 Pod...”选项并添加您的文件。请确保标记了“如果需要,复制文件”选项。请参考下图。

-现在很高兴为您的 .framework 创建一个文件夹并为 .bundle(如果有的话)文件创建另一个文件夹。通过右键单击 Pods 项目并选择“新建组”选项来执行此操作。选择一个与 xcode 模式不同的名称,很高兴知道这个文件夹是由您创建的。

-如果你做对了,你最近添加到项目中的框架将出现在 pods 项目中,如下所示:

-现在,为了您的 swift 实现找到您的文件,将您位于 pods 项目中的 .frameworks 拖到插件项目的“框架、库和嵌入式内容”中。结果将是这样的:

-好的,文件已包含并链接。现在我们应该让我们的 cocoa pod 知道这一点并声明这个文件。文件“YourAwesomePlugin.podspec”(位于插件项目的根目录)是 pod 的主要入口。在此文件中,您将声明哪些文件(.frameworks、.bundle 等)属于您的 pod,因此在您 npm install 时将属于您的插件。要声明这一点,您需要三个指令:

s.vendored_frameworks = 'ios/Pods/YourFrameworkFolder/**'
s.resource = 'ios/Pods/YourResourceFolder/YourBundle.bundle'   
s.xcconfig = {'ENABLE_BITCODE' => 'NO'} #This is mandatory on my case, but you need to evaluate if this options applies to your plugin. 

-现在我们在插件项目上点击播放。要在你的应用上测试插件是否正常,你需要在APP项目的pods项目的podfile中添加插件项目的根路径。像这样:

-要安装它,您可以在 Yourproject/ios/App 上运行pod install。

请注意:

要声明您最近创建的插件的存在,您还需要做一些声明,但这部分很简单,并且已经记录在电容器/插件文档中。

我建议的pod install的安装方法是为了测试。如果您使用 npm 打包插件并像所有其他插件一样安装它,那就太好了。

我对 cocoapods 的了解不多,但我认为这是一个干净的解决方案。如果没有,请告诉我。

如果这个答案对你有用,请点赞,我正在分享一周的研究和尝试,同时把它写下来。

【讨论】:

  • 任何人都知道它是如何为 Android 完成的?我无法毫无问题地集成 AAR 文件。
  • 是的,我知道。您能提出一个新问题并在此处发送链接吗?
  • 你的方法是什么? @伊戈尔
  • @SvshX 你好,我会在周日回答你的问题。这周什么时候有时间写。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2015-09-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-04-07
  • 1970-01-01
  • 2011-04-16
相关资源
最近更新 更多