Pod spec私有库集成遇到的错误(二)

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Pod spec私有库集成遇到的错误(二)相关的知识,希望对你有一定的参考价值。

参考技术A

私有库中依赖私有库

本地验证、远端验证

删除重新编译
Build Settings 找到Other Linker Flags中找到你的那个XXXX框架然后删除,重新编译就可以成功。

异常:XCode编译出错异常:ld: framework not found Kernel clang: error: linker command failed with e.......
解决办法:

Targets->Build Setting->Linking->Match-o-Type ,修改为Static Library,再次编译,编译成功。

https://blog.csdn.net/qq_40697071/article/details/99055070

2.勾选 “Run script only when installing”

https://blog.csdn.net/longshihua/article/details/78054446

很奇怪,为什么已经从项目中删除了文件和文件夹还是报这个警告呢?

去掉警告的办法如下:

1.选择工程, 编译的 (targets)

2.选择 Build Settings 菜单

3.查找 Library Search Paths 和 Framework Search Paths, 删掉编译报warning的路径即OK

进入Build Settings
搜索OTHER LINKER FLAGS
-framework这个标志是给你带.framework的文件使用的,所以你需要找出来那些不需要-framework的框架,把它下面的-framework删除掉。

解决方案:在Podfile中,注释use_frameworks!后,重新执行pod install。

如果私有库添加了静态库或者dependency用了静态库
那么执行pod lib lint还有pod spec lint时候需要加上—user-libraries选项
否则会出现\'The \'Pods\' target has transitive dependencies错误。

https://www.jianshu.com/p/bdb1db6c9db4/

–use-libraries使用静态库,如果在工程中使用到了静态库,但不在编译的时候加上这句话,就不能编译通过。如果私有库中存在.a文件,那么必须加上这个后缀。
–allow-warnings允许警告,警告可能会导致编译不能通过,一般需要加上它。
–sources=BIFaceSDK,BIEncrypt说明库的依赖关系,这里说明了库依赖于BIFaceSDK,BIEncrypt这两个pods。
–skip-import-validation和–skip-tests这两个命令可以跳过部分验证环节,如果发现工程怎么都lint不过,那么可以尝试一下这个。

需要注意的地方:
–skip-import-validation和–skip-tests
这样操作之后,确实可以实现pod的更新,但是最终工程中的pod可能会发生丢失部分文件,找不到索引等意外。因此,还是要谨慎操作哈!

这次报错事因为再依赖三方库中有静态库,而三方的阿里云只支持真机架构
所以在 .podspec中添加指定的架构

这个问题真的是很令人头疼,折腾了两天,也看了网上的一些解决办法,包括StackOverFlow,有成功的也有不成功的,成功的我也觉得不是最佳。我就去翻CocoaPods GitHub Issues,终于让我翻到了。

8129这个问题在 CocoaPods 1.6.0.beta.2 版本得到了修复

私有库中包含有第三方的静态库。
解决办法需要在 podspec中添加:静态库的绝对路径

本地私有库的实现 pod

以pods的形式,引入本地相关文件

一, 生成本地库 的描述文件.spec

//1.进入的 本地库的 目录

cd  ‘xxx‘

//2.初始化本地仓库

git init

git add .

git commit -m ‘xxx‘

//3.创建spec文件

pod spec create  ‘spec的文件名字‘

//然后,用xcode打开文件,可修改相关信息,如下:

//.summary    摘要信息(短一点)

//.description  库的描述信息

//.license        协议,删掉多余的(xx)

//.author        作者, maxueshan => [email protected]

//source   本地库, 改成空的 

//.source_files   过滤文件(*表示文件 .h .m )

 

二.集成到 宿主工程中

//1.进入

cd ‘xx‘

//2.生成podfile文件

pod init

//注释:pod repo 可查看检索的路径

//3.podfile中设置pod库

pod ‘Base‘, :path => ‘../Base‘         //需要指定路径,路径直到 .spec文件所在的目录即可

//注释: ‘ ../‘  的作用是跳出当前目录,回到上一个目录

 

//4.安装

pod install

 

以上是关于Pod spec私有库集成遇到的错误(二)的主要内容,如果未能解决你的问题,请参考以下文章

pod Spec管理配置

使用CocoaPods建立私有仓库

尝试在私有 pod 上运行测试时出错

带有静态库的私有 pod 以及 swift pod

您可能在 Ruby 解释器或扩展库中遇到了错误

Cocoapod“pod spec lint”CompileSwift返回了一个不成功的退出代码