设置
我有一个iOS应用程序MY-App
,它使用我自己的框架MY-Framework
。两者都是用swift
编写的。该应用程序只处理用户身份验证,并将访问令牌传递给MY-Framework
。然后,MY-Framework
处理整个ScreenFlow和业务逻辑。目标是将MY-Framework
分发给客户,以便在他们的应用程序中使用它。
显示此问题的项目设置的最小示例可在这里获得:https://github.com/vprimachenko/lottie-pod-problem-sample
现在,我要增强我的框架,提供一些动画视图,并为此使用洛蒂。我使用的是cocoapods版本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
^
框架
在googling搜索之后,我将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
也许是模组头?
cocoapods发布说明提到了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
带来头来解决这个问题,但这感觉更像是一个胶带,而不是一个适当的解决方案。我稍后仍会把这个问题作为补充答覆发表。
我的问题
如何正确地集成lottie-ios
cocoapod,使其完全包含在MY-Framework
中,因此,当我将其共享给客户时,他们可以直接将其放到应用程序中,而不必担心任何依赖关系。
不幸的是,将其作为带有依赖关系的私有荚发布并不是一种选择。
发布于 2019-02-16 08:44:44
在objective-c
中使用swift
代码的常见方法是使用桥接标头,请查看以下内容:
您需要创建一个桥接头并将其添加到您的项目中,然后在您创建的.h文件中添加:
#import <Lottie/Lottie.h>
发布于 2019-02-13 01:43:16
如何正确地集成lottie-ios cocoapod,使其完全包含在MY中,因此,当我将其共享给客户时,他们可以直接将它放到他们的应用程序中,而不必担心任何依赖?
我觉得你不想这么做。如果客户的应用程序已经使用Lottie框架,可能与中使用的版本不同呢?
解决这一问题的一个典型方法是要求您的客户将Lottie用作依赖项。如果你在使用可可豆,你的客户不会真正注意到,这是常见的做法。使用spec.dependency在https://guides.cocoapods.org/syntax/podspec.html指定依赖项)
如果真的很绝望,您可以将Lottie的所有源复制到中,并确保它们在自己的模块中定义,以避免冲突。
发布于 2019-02-12 13:17:45
您需要手动将Lottie-ios框架复制到您的私有CocoaPod框架(这是My- Framework )
https://stackoverflow.com/questions/54593378
复制相似问题