1. pod search xxx提示找不到
hechao@hechaodeMacBook-Pro CassECommerce % pod search HCClangTrace
Setup completed
Creating search index for spec repo 'CassPrivatePods'.. Done!
[!] Unable to find a pod with name, author, summary, or description matching `HCClangTrace`
[!] Skipping `yoga` because the podspec contains errors.
hechao@hechaodeMacBook-Pro CassECommerce % pod search HCClangTrace -source https://github.com/CocoaPods/Specs.git
Setup completed
[!] Unable to find a pod with name, author, summary, or description matching `HCClangTrace \-source https://github\.com/CocoaPods/Specs\.git`
我这里是自己创建的pod库推送到了官方的Specs仓库,结果本地search搜多不到
-
确定是否正确的推送到了远端
直接去Specs里搜索你的库名称
- 确定已经推送到远端了,那么可能就是本地的search缓存比较旧,在终端依次执行:
cd ~/Library/Caches/CocoaPods
rm search_index.json
pod search xxxx
-
如果还是提示找不到
去本机的Specs目录下看看
发现官方远端的Specs/e/3/d/目录下有我们的库,但是本地没有;这时候则需要更新Specs了,执行:
pod repo update --verbose
执行成功后发现本地已经有我们的库了
这个时候再执行rm search_index.json
此时再search就可以啦
2.pod install 失败
Couldn't connect to server, retries: 1
[!] CDN: trunk Repo update failed -
CDN: trunk URL couldn't be downloaded:
终端执行pod repo查看本地的repo列表发现有个CDN的名叫trunk
1.pod repo remove trunk
删除CDN源
2.添加 source 'https://github.com/CocoaPods/Specs.git'
到你的工程的Podfile文件头部
3.安装app到真机调试提示App Install Failed
There was an error communicating with your device
解决方法:
-
Unpair Device,在Xcode--Window--Devices and Simulators菜单
- 清理工程 comond + k
- 断开手机跟USB线的连接,重启手机
- 重启Xcode
然后在重新run,应该就解决了
4.pod库本地校验没问题推到私有仓库报错
本地执行pod lib lint MyPrivatePods xxx.podspec --allow-warnings --verbose
显示验证通过
但是在推送到远端的时候就报错,发现代码使用的是旧的代码[已经修复的报错结果还是报错],没有获取到修改之后的最新的代码;这个时候猜测是缓存的问题导致的;也可以通过日志看到确实是从本地的缓存去拷贝的代码
> Copying ECFileLog from `/Users/hechao/Library/Caches/CocoaPods/Pods/External/ECFileLog/1fd1b83811b92e5d2e3e45cdc7ee34b1-af8a5` to
`../../../../../private/var/folders/r0/4tb84bbj15j3kbzrnk8hqdwm0000gn/T/CocoaPods-Lint-20200513-61623-tmljx7-ECFileLog/Pods/ECFileLog`
-
进入到cocoapod的本地代码缓存
cd ~/Library/Caches/CocoaPods/Pods/
自己的私有仓库的代码则在该目录下的External/文件夹
找到我们需要推送的库,删除掉缓存
再次执行
pod repo push MyPrivatePods xxx.podspec --allow-warnings --verbose
看日志发现是重新去下载代码了,至此问题就解决了
5.The 'Pods-App' target has transitive dependencies that include statically linked binaries:
pod的demo能正常编译链接,但是本地lint的时候就报错了,提示如标题,pod库中依赖了静态库
- 加上
--use-libraries
命令选项再次尝试校验通过了
查看lint帮助文档可以看到该选项的作用
--use-libraries Lint uses static libraries to install the spec
6.使用Transporter上传ipa包的时候卡在鉴权阶段,没有上传进度
这个是由于Transporter首次上传的时候需要下载大概一百多M的文件到~/Library/Caches/com.apple.amp.itmstransporter/
所以很慢;这个时候可以去网上下载下来这个包,然后替换到该目录下
具体可参照:https://www.jianshu.com/p/dc92dc00db48
7.在pod install的时候卡在了Resolving dependencies of Podfile
一卡卡半天,加了--verbose也没有输出日志;没有去阅读cocoapods的源码了解Resolving dependencies of Podfile这个过程的实现。偶然间我将SDWebImage/WebP的集成注释掉发现就可以了
后来再次去集成SDWebImage/WebP的时候发现还是异常了:
Resolving dependencies of `Podfile`
[!] CocoaPods could not find compatible versions for pod "SDWebImage/Core":
In snapshot (Podfile.lock):
SDWebImage/Core (= 5.8.0)
In Podfile:
SDWebImage was resolved to 5.8.0, which depends on
SDWebImage/Core (= 5.8.0)
SDWebImage/WebP was resolved to 3.4, which depends on
SDWebImage/Core (= 3.4)
果然是因为版本的问题,导致cocoapod在解析依赖的时候发现不匹配导致异常了;去SDWebImage的github上发现从5.0版本开始已经移除掉WebP的支持,改为使用插件的方式去支持了SDWebImageWebPCoder
所以这里有2种解决方案:
1. 使用5.0以下版本的SDWebImage
pod 'SDWebImage', '~> 4.0.0'
pod 'SDWebImage/WebP'
2. 使用5.0及以上的版本,但是不通过SDWebImage/WebP的方式集成WebP,而是使用SDWebImageWebPCoder的方式
pod 'SDWebImage', '~> 5.0.0'
pod 'SDWebImageWebPCoder'
8.Xcode如何修改copyright的组织信息
有时候我们写错了版权的组织,或者想修改源代码的版权的组织信息,搜索Xcode的Build Setteing也没发现提供这个配置去修改
针对已有的源代码文件
搜索组织名,然后全局替换成要修改的组织名
修改全局的配置
上面进行替换是针对已有的文件的操作,那么新建的文件如果不修改配置的话,那就还是错的。此时我们需要将我们的工程文件xxx.xcodeproj -- 显示包内容 -- 以文本的方式打开project.pbxproj文件,然后搜索旧的组织名或者直接搜索ORGANIZATIONNAME
就可以找到对应的配置了;然后修改这个配置的值保存即可
9. pod install 某个库尝试多次无果
有时候install多次,要么就是卡半天失败;要么就是被墙拉不下来(比如libwebp库)
针对需要翻墙的库
- 搞个梯子
- 找群友或同事要库的包文件以及spec配置文件
源码的目录
~/Library/Caches/CocoaPods/Pods/Release
spec配置文件目录~/Library/Caches/CocoaPods/Pods/Specs/Release
默认情况下,发布在cocoapods官方的源都是缓存在Release目录下,如果没有还可以去External目录去找找
拿到源码包以及spec配置包之后,放到对应的位置就好了
针对多次拉取代码都失败的
- 切换4G切换Wifi试试
- 上面的方法屡试不爽,找别人拿到压缩包放到对应位置即可