我知道这可能是不可能的,但cocoapods是否有任何足迹可以指出(在运行时)是否使用cocoapods安装了库?
我目前能够通过获取类名列表然后查找具有PodsDummy_Pods_
前缀的类来查明是否使用了CocoaPods。但我无法知道是否使用CocoaPods链接了一个给定的库。
修改
作为澄清:我可以访问库源代码,但我无法控制最终项目。该库作为二进制(静态库)分发,我们想知道用户是否使用CocoaPods安装它。
答案 0 :(得分:2)
我想这主要取决于你是否掌控了这个库。
如果你不这样做,那就不是真的。这些PodsDummy-
类存在于目标级别,因此它们只表示已使用CocoaPods 。但是,它不会告诉您特定库是否使用CocoaPods。
对于源代码库,CocoaPods可以添加额外的构建标志,这些标志可以公开可以以相同方式查找的其他API或字符串。已经添加了"COCOAPODS"
构建标志,因此可以使用它。
对于二进制库,它可能但有点棘手。理论上:您可以在lib / framework中添加一个符号,该符号可以在运行时中找到,然后在Podspec的prepare_command
中可以删除。我不知道命令会做什么,但可能是ar
,strip
或lipo
。
答案 1 :(得分:1)
可能的解决方案之一是将所有Pods库放入单独的包中。您的项目可能有几个捆绑。结果你可以在Swift或者运行时在运行时询问Bundle(for:type(of:self)) [ObBC中的[NSBundle bundleForClass:[self class]]
答案 2 :(得分:0)
似乎不可能自动检测到这一点,所以我们解决了这个问题:我们在Podfile中添加了一个自定义resource_bundle
,然后我们只是在运行时检查它是否存在,如果它在那里我们确保库是使用CocoaPods安装的。