Igo*_*gor 5 xcode swift ionic4 capacitor
我正在开发一个 Ionic Capacitor 插件,它导入 2 个 iOs .framework 文件和一个引用此 .framework 文件之一的 .bundle。问题是,无论我如何在插件项目上链接/嵌入和指向/复制这些文件,xcode 声称,在应用项目上,它无法在 swift 文件中找到该模块。
我已经尝试将文件添加到项目中,使用“嵌入式二进制文件”选项,链接库,允许非模块化包含(在构建选项菜单上),将文件添加到头文件(在构建阶段),等等。 ...
xcode 指出错误的那一行是:
import OneFramework
Run Code Online (Sandbox Code Playgroud)
并且 xcode 声称:没有这样的模块“OneFramework”
我原以为当我通过 npm 将插件添加到我的应用程序项目中,然后运行“$ rm -rf ios && ionic capacity run ios”来运行该应用程序时,xcode 会找到我正在尝试的插件的所有模块做。
我找到了解决方案。要实现此目标,首先要知道的是,当您执行npx @capacitor/cli plugin:generateCLI 时,会生成可可豆荚。该 Pod 的根目录是生成的文件夹本身。考虑到这一点,接下来要做的就是学习如何制作豆荚,但我将总结导致我成功的主要方面。
-首先打开*.xcworkspace。接下来,单击“将文件添加到 Pod...”选项并添加文件。请确保选中“如果需要,复制文件”选项。请参考下图。
- 现在可以为您的 .framework 创建一个文件夹,并为 .bundle(如果有)文件创建另一个文件夹。通过右键单击 Pods 项目并选择“新建组”选项来执行此操作。选择一个与 xcode 模式不同的名称,很高兴知道这个文件夹是由您创建的。
-如果你做得正确,你最近添加到项目中的框架将出现在 pods 项目中,如下所示:

- 现在,为了快速实现找到您的文件,请将 pod 项目上的 .frameworks 拖动到插件项目的“框架、库和嵌入式内容”。结果将是这样的:

-好的,文件已包含并链接。现在我们应该让我们的可可豆知道这一点并声明这个文件。文件“YourAwesomePlugin.podspec”(位于插件项目的根目录)是 pod 的主要入口。在此文件中,您将声明哪些文件(.frameworks、.bundle 等)属于您的 pod,因此当您 npm 安装它时将属于您的插件。要声明这一点,您需要三个指令:
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.
Run Code Online (Sandbox Code Playgroud)
-现在我们开始玩插件项目。为了在你的应用程序上测试插件是否正常,你需要在APP项目的pods项目的podfile中添加插件项目的根路径。像这样:
- 要安装它,您可以进入 Yourproject/ios/App 并运行pod install.
请注意:
要声明最近创建的插件的存在,您还需要进行一些声明,但这部分很简单并且已经记录在电容器/插件文档中。
我建议的安装方法用于pod install测试。如果您使用 npm 打包插件并像所有其他插件一样 npm 安装它,那就太好了。
我对 cocoapods 的了解并不像我希望的那样,但这是有效的,我认为这是一个干净的解决方案。如果没有,请告诉我。
如果这个答案对你有用,请点赞,这是我一周的研究和尝试,我正在分享,沿着这段时间把它全部写下来。
| 归档时间: |
|
| 查看次数: |
2802 次 |
| 最近记录: |