我将Objective-C语言的一些代码编译成所有体系结构的fat lib,然后打包到框架中。
我的目标是通过CocoaPods在Swift项目中使用这个框架。实际上是通过CocoaPods发布这个框架。
问题:当我将此框架发布到本地Pod并将其导入Swift项目时,我无法在模拟器或设备上运行它。
对于模拟器我有这个错误:
"操作无法完成。 LaunchServicesError错误0。"
我有这个错误:
"应用安装失败。无法检查应用程序包"
在Pod中我使用"资源"文件夹只与框架本身。我在podspec文件中使用这一行
`s.resources = ['Resources/*.*']`
对于Podfile我使用这一行(我使用local只是为了尝试它是否有效)
`pod ‘podname’, :git => 'pod_git_url'`
然后我手动创建桥接头文件并在
中指定它`Build Settings > Objective-C Bridging Header`
然后在桥接文件中添加框架导入
`#import <FrameworkName/HeaderClass.h>`
我还将框架添加到Link Binary With Libraries
结果它给出了上述错误。
有趣的是,如果我直接在项目中导入提到的框架,而不使用CocoPods - 它就像一个魅力。 但它并没有通过CocoaPods。
P.S。我在Swift语言中的项目是旧语法 - 因此当我在添加Pods后打开它时,它要求我将其转换为Swift 3或Swift 2.3。我选择了2.3。它可能是问题的根源吗?
答案 0 :(得分:0)
找到解决方案:
实际上RoHan的小费让我以正确的方式思考。以前我将.framework
文件放在Resources
文件夹中并相应地指定它。因此,作为Pod的一部分,框架文件本身并未以正确的方式链接。
解决方案是在s.vendored_frameworks
中将框架文件指定为.podspec
,如下所示:
s.vendored_frameworks = 'FrameworkName.framework'
就是这样。像魅力一样。
P.S。如果在swift项目中使用框架(在objc lang上),请不要忘记使用桥接头文件