ios - 将 ObjC pod 集成到 Swift 框架中的问题

标签 ios swift xcode cocoapods lottie

设置

我有一个 iOS 应用 MY-App,它使用我自己的框架 MY-Framework。两者都是用 swift 编写的。该应用仅处理用户身份验证并将访问 token 传递给 MY-FrameworkMY-Framework 然后处理整个 ScreenFlow 和业务逻辑。目标是将 MY-Framework 分发给客户,以便在他们的应用中使用它。

此处提供了展示此问题的项目设置的最小示例:https://github.com/vprimachenko/lottie-pod-problem-sample

现在我要增强我的框架,提供带有一些动画的 View ,并使用 为了它。我正在使用 版本1.6.0-pre

天真的尝试

我创建了一个包含以下内容的 Podfile

target 'fw' do
  pod 'lottie-ios'
end

导致框架编译错误

./fw/fw/File.swift:4:8: error: no such module 'Lottie'
import Lottie
       ^

框架

谷歌搜索后,我将 Podfile 更改为:

target 'fw' do
  use_frameworks!
  pod 'lottie-ios'
end

结果:运行时崩溃

dyld: Library not loaded: @rpath/Lottie.framework/Lottie
  Referenced from: .../Build/Products/Debug-iphonesimulator/fw.framework/fw
  Reason: image not found

也许是模块化 header ?

发行说明提到 use_modular_headers!,让我们试试看:

target 'fw' do
 use_modular_headers!
 pod 'lottie-ios'
end

结果:包含应用程序中的编译器错误

./app/app/ViewController.swift:3:8: error: missing required module 'Lottie'
import fw
      ^

也许两者都有?

target 'fw' do
 use_modular_headers!
 use_frameworks!
 pod 'lottie-ios'
end

结果:运行时崩溃

dyld: Library not loaded: @rpath/Lottie.framework/Lottie
 Referenced from: .../Build/Products/Debug-iphonesimulator/fw.framework/fw
 Reason: image not found

黑客

经过一些尝试后,我能够通过为 Lottie 提供自己的 bringing header 来解决这个问题,但这感觉更像是胶带而不是正确的解决方案。稍后我仍会将其作为附加答案发布。

我的问题

我如何正确使用集成 lottie-ios cocoapod,使其完全包含在 MY-Framework 中,所以当我将它分享给客户时,他们可以将其放入他们的应用程序而不用担心任何依赖关系吗?

遗憾的是,将其作为具有依赖项的私有(private) pod 发布不是一种选择。

最佳答案

常用的使用方式objective-c swift 中的代码正在使用桥接头,看看这个:

Importing Objective-C into Swift

您需要创建一个桥接 header 并将其添加到您的项目中,然后在您创建的 .h 文件中添加:

#import <Lottie/Lottie.h>

关于ios - 将 ObjC pod 集成到 Swift 框架中的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54593378/

相关文章:

ios - 我想在 Xcode 上使用 Swift 让我的黑暗模式同时在所有 View Controller 上工作。我该怎么做?

ios - CoreSpotlight 索引不起作用

ios - watchOs 上的通知

IOS Xcode 验证 Xcode.app

ios - 本地化 XIB,Xcode 6 上的不同方法

ios - 在分页 UIScrollView 中缩放图像

objective-c - Xcode 创建和使用带有链接错误的静态库

ios - UIApplicationWillTerminateNotitication 限制?

objective-c - IBOutlet 是否暗示 __weak?

swift - NSCollectionViewItem 的动态大小