如何判断(在运行时)是否使用cocoapods链接了一个库?

时间:2017-05-17 14:19:14

标签: ios runtime cocoapods

我知道这可能是不可能的,但cocoapods是否有任何足迹可以指出(在运行时)是否使用cocoapods安装了库?

我目前能够通过获取类名列表然后查找具有PodsDummy_Pods_前缀的类来查明是否使用了CocoaPods。但我无法知道是否使用CocoaPods链接了一个给定的库。

修改

作为澄清:我可以访问库源代码,但我无法控制最终项目。该库作为二进制(静态库)分发,我们想知道用户是否使用CocoaPods安装它。

3 个答案:

答案 0 :(得分:2)

我想这主要取决于你是否掌控了这个库。

如果你不这样做,那就不是真的。这些PodsDummy-类存在于目标级别,因此它们只表示已使用CocoaPods 。但是,它不会告诉您特定库是否使用CocoaPods。

对于源代码库,CocoaPods可以添加额外的构建标志,这些标志可以公开可以以相同方式查找的其他API或字符串。已经添加了"COCOAPODS"构建标志,因此可以使用它。

对于二进制库,它可能但有点棘手。理论上:您可以在lib / framework中添加一个符号,该符号可以在运行时中找到,然后在Podspec的prepare_command中可以删除。我不知道命令会做什么,但可能是arstriplipo

答案 1 :(得分:1)

可能的解决方案之一是将所有Pods库放入单独的包中。您的项目可能有几个捆绑。结果你可以在Swift或者运行时在运行时询问Bundle(for:type(of:self)) [ObBC中的[NSBundle bundleForClass:[self class]]

答案 2 :(得分:0)

似乎不可能自动检测到这一点,所以我们解决了这个问题:我们在Podfile中添加了一个自定义resource_bundle,然后我们只是在运行时检查它是否存在,如果它在那里我们确保库是使用CocoaPods安装的。