在自定义cocoapod框架中使用Pod依赖关系来获取"使用未声明的类型"

时间:2018-01-25 17:09:28

标签: swift cocoapods rollbar

我已将Rollbar添加为我的cocoapod的依赖项。在我的podspec中,我有:

s.dependency 'Rollbar'

构建并运行包含我的cocoapod作为依赖项的应用程序可以正常工作,但如果我打开我的框架项目,Xcode会抱怨,因为它没有导入Rollbar依赖项。

这导致"使用未解析的标识符' Rollbar'"以下行中的错误:

Rollbar.initWithAccessToken("XXX")

我完全理解发生了什么,我的框架项目对Rollbar依赖关系一无所知,因此它不会加载这些类。但这会影响我测试框架的方式,因为它不会编译,如果我这样保持。

我还要注意,在我的桥接标题中,我已经使用#import包装了必要的Rollbar __has_include以允许桥接标头进行编译。

#if __has_include("Rollbar/Rollbar.h")
#import <SystemConfiguration/SystemConfiguration.h>
#import <Rollbar/Rollbar.h>
#endif

在我收到此错误时,似乎无法在我的Swift文件中执行类似操作:

RollbarSetup.swift:2:5: Unexpected platform condition (expected 'os', 'arch', or 'swift')

这让我相信这种类型的条件是不允许的。我希望如果Rollbar依赖不存在,我可以在框架中创建一些模拟对象。

在编写使用单独的cocoapod依赖关系的cocoapod时,有没有其他人遇到过这种情况?我觉得这个场景中的任何人都会遇到这种情况。

我可以做些什么来允许我的框架项目进行编译?

2 个答案:

答案 0 :(得分:0)

Podspec文件应由pod的作者编写,以便在您的Podfile中添加{0}添加pod 'Rollbar'项目。此外,#if __has_include仅在文件已导入时执行,因此在此语句中导入它会执行任何操作。由于你使用的是Swift,一个简单的import Rollbar应该可以解决问题,不需要桥接头。

答案 1 :(得分:0)

我在Swift中有一个cocoapod SDK,并按照以下步骤操作了

  1. 首先将Rollbar添加到podspec文件中 s.dependency 'Rollbar', '1.8.1'
  2. 在视图控制器中添加import Rollbar,您必须在其中设置错误消息
  3. 在为您的SDK创建的示例项目上运行pod install命令。
  4. 您现在就可以使用Rollbar。
  5. RollBar SDK初始化
let configuration = RollbarConfiguration()
configuration.crashLevel = "critical"
configuration.environment = "production"
Rollbar.initWithAccessToken("POST_CLIENT_ITEM_ACCESS_TOKEN", configuration: configuration)
Rollbar.error("Error Message")

Rollbar集成已完成。