在Obj-C lang上使用框架时出错。通过CocoaPods for Swift项目(不能在模拟器上或在设备上运行项目)

时间:2016-12-16 16:03:04

标签: objective-c swift frameworks cocoapods

我将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。它可能是问题的根源吗?

1 个答案:

答案 0 :(得分:0)

找到解决方案:

实际上RoHan的小费让我以正确的方式思考。以前我将.framework文件放在Resources文件夹中并相应地指定它。因此,作为Pod的一部分,框架文件本身并未以正确的方式链接。

解决方案是在s.vendored_frameworks中将框架文件指定为.podspec,如下所示:

s.vendored_frameworks = 'FrameworkName.framework'

就是这样。像魅力一样。

P.S。如果在swift项目中使用框架(在objc lang上),请不要忘记使用桥接头文件