美文网首页iOS随笔ios开发整理其他
解决Pod" target has libraries

解决Pod" target has libraries

作者: cc412 | 来源:发表于2018-04-11 15:24 被阅读70次

    最近在导入pod时候遇到

     The 'Pods-XXX target has libraries with conflicting names: xxxx.a.
    

    这个问题是因为两个不同的pod都依赖了同一个.a文件造成了冲突。

    首先我们应该知道是那两个库冲突了,从图上看我们的内部仓库“YDOfflineOcr”肯定是依赖了“libprotobuf.a”文件。但是另外一个库就不是那么好找了。有一个笨办法就是你挨个去看每个有podspec文件的仓库,去看看都依赖了那些库。还有偷懒的办法就是把你认为冲突的库注释掉,执行pod install,看看会去除那些文件。

    经过测试发现是"Firebase/Messaging" 这个仓库依赖了Protobuf这个库。我们可以去"Firebase/Messaging"的podspec看下 FirebaseMessaging.podspec

    下面是我们私有库的podspec文件,导入了libs下的所有.a文件。这个文件下也有libprotobug.a

    image.png

    如何解决

    知道那两个库后就可以解决这个问题了,解决办法是自己建立一个podspec文件,把其中一个库指定到这个podspec路径,这里我选择该自己的私有库。

    首先找到库的podspec文件,选择raw模式,这样就能拿到纯净的文本。


    GitLab
    GitHub

    然后copy出来,新建一个文件叫xxx.podspec,copy文本,修改podspec文件。首先找到verdored_library,之前是我这边写的是引用Libs下所有的,那就改成挨个引入(按你们自己的实际情况来)

    image.png 改为挨个引入

    然后建立一个仓库,把这个podspec文件放进去,上传到Git
    假设地址为:
    https://gitlab.corp.youdao.com/liwc/udpodspec/blob/master/YDOfflineOcr.podspec
    这里要使用纯净文本,所以blob 要改为raw,确保打开连接必须是一个纯文本
    就如下面这个链接这样(gitlab和github的raw模式不同,注意raw模式即可)
    https://raw.githubusercontent.com/firebase/firebase-ios-sdk/master/FirebaseMessaging.podspec

    Ok,我们现在有自己的podspec文件和地址了。那么只需你在引入pod时候指定podspec即可

    pod 'YDOfflineOcr', :podspec => 'https://gitlab.corp.youdao.com/liwc/udpodspec/raw/master/YDOfflineOcr.podspec'
    
    

    再次执行pod install,导入成功。

    当然我也可以移除firbase下podspec的依赖库



    把protobuf移除后,上传到自己的仓库,指定podspec
    可以根据自己情况选择处理那个库。

    相关文章

      网友评论

        本文标题:解决Pod" target has libraries

        本文链接:https://www.haomeiwen.com/subject/tspahftx.html