iOS開(kāi)發(fā)工作中遇到的問(wèn)題記錄

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`

我這里是自己創(chuàng)建的pod庫(kù)推送到了官方的Specs倉(cāng)庫(kù),結(jié)果本地search搜多不到

  1. 確定是否正確的推送到了遠(yuǎn)端
    直接去Specs里搜索你的庫(kù)名稱


    圖片.png
  1. 確定已經(jīng)推送到遠(yuǎn)端了,那么可能就是本地的search緩存比較舊,在終端依次執(zhí)行:

cd ~/Library/Caches/CocoaPods

rm search_index.json

pod search xxxx

  1. 如果還是提示找不到
    去本機(jī)的Specs目錄下看看


    圖片.png

發(fā)現(xiàn)官方遠(yuǎn)端的Specs/e/3/d/目錄下有我們的庫(kù),但是本地沒(méi)有;這時(shí)候則需要更新Specs了,執(zhí)行:

pod repo update --verbose
執(zhí)行成功后發(fā)現(xiàn)本地已經(jīng)有我們的庫(kù)了


圖片.png

這個(gè)時(shí)候再執(zhí)行rm search_index.json此時(shí)再search就可以啦

圖片.png

2.pod install 失敗

Couldn't connect to server, retries: 1
[!] CDN: trunk Repo update failed -
CDN: trunk URL couldn't be downloaded:

終端執(zhí)行pod repo查看本地的repo列表發(fā)現(xiàn)有個(gè)CDN的名叫trunk
1.pod repo remove trunk刪除CDN源
2.添加 source 'https://github.com/CocoaPods/Specs.git' 到你的工程的Podfile文件頭部

3.安裝app到真機(jī)調(diào)試提示App Install Failed

There was an error communicating with your device
解決方法:

  • Unpair Device,在Xcode--Window--Devices and Simulators菜單


    圖片.png
  • 清理工程 comond + k
  • 斷開(kāi)手機(jī)跟USB線的連接,重啟手機(jī)
  • 重啟Xcode
    然后在重新run,應(yīng)該就解決了

4.pod庫(kù)本地校驗(yàn)沒(méi)問(wèn)題推到私有倉(cāng)庫(kù)報(bào)錯(cuò)

本地執(zhí)行pod lib lint MyPrivatePods xxx.podspec --allow-warnings --verbose顯示驗(yàn)證通過(guò)
但是在推送到遠(yuǎn)端的時(shí)候就報(bào)錯(cuò),發(fā)現(xiàn)代碼使用的是舊的代碼[已經(jīng)修復(fù)的報(bào)錯(cuò)結(jié)果還是報(bào)錯(cuò)],沒(méi)有獲取到修改之后的最新的代碼;這個(gè)時(shí)候猜測(cè)是緩存的問(wèn)題導(dǎo)致的;也可以通過(guò)日志看到確實(shí)是從本地的緩存去拷貝的代碼

 > 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`
  • 進(jìn)入到cocoapod的本地代碼緩存cd ~/Library/Caches/CocoaPods/Pods/ 自己的私有倉(cāng)庫(kù)的代碼則在該目錄下的External/文件夾

    圖片.png

  • 找到我們需要推送的庫(kù),刪除掉緩存

  • 再次執(zhí)行pod repo push MyPrivatePods xxx.podspec --allow-warnings --verbose看日志發(fā)現(xiàn)是重新去下載代碼了,至此問(wèn)題就解決了

5.The 'Pods-App' target has transitive dependencies that include statically linked binaries:

pod的demo能正常編譯鏈接,但是本地lint的時(shí)候就報(bào)錯(cuò)了,提示如標(biāo)題,pod庫(kù)中依賴了靜態(tài)庫(kù)

  • 加上--use-libraries命令選項(xiàng)再次嘗試校驗(yàn)通過(guò)了
    查看lint幫助文檔可以看到該選項(xiàng)的作用
    --use-libraries Lint uses static libraries to install the spec

6.使用Transporter上傳ipa包的時(shí)候卡在鑒權(quán)階段,沒(méi)有上傳進(jìn)度

這個(gè)是由于Transporter首次上傳的時(shí)候需要下載大概一百多M的文件到~/Library/Caches/com.apple.amp.itmstransporter/所以很慢;這個(gè)時(shí)候可以去網(wǎng)上下載下來(lái)這個(gè)包,然后替換到該目錄下
具體可參照:http://www.itdecent.cn/p/dc92dc00db48

7.在pod install的時(shí)候卡在了Resolving dependencies of Podfile

一卡卡半天,加了--verbose也沒(méi)有輸出日志;沒(méi)有去閱讀cocoapods的源碼了解Resolving dependencies of Podfile這個(gè)過(guò)程的實(shí)現(xiàn)。偶然間我將SDWebImage/WebP的集成注釋掉發(fā)現(xiàn)就可以了
后來(lái)再次去集成SDWebImage/WebP的時(shí)候發(fā)現(xiàn)還是異常了:

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)

果然是因?yàn)榘姹镜膯?wèn)題,導(dǎo)致cocoapod在解析依賴的時(shí)候發(fā)現(xiàn)不匹配導(dǎo)致異常了;去SDWebImage的github上發(fā)現(xiàn)從5.0版本開(kāi)始已經(jīng)移除掉WebP的支持,改為使用插件的方式去支持了SDWebImageWebPCoder

所以這里有2種解決方案:

1. 使用5.0以下版本的SDWebImage
pod 'SDWebImage', '~> 4.0.0'
pod 'SDWebImage/WebP'
2. 使用5.0及以上的版本,但是不通過(guò)SDWebImage/WebP的方式集成WebP,而是使用SDWebImageWebPCoder的方式
pod 'SDWebImage', '~> 5.0.0'
pod 'SDWebImageWebPCoder'

8.Xcode如何修改copyright的組織信息

有時(shí)候我們寫(xiě)錯(cuò)了版權(quán)的組織,或者想修改源代碼的版權(quán)的組織信息,搜索Xcode的Build Setteing也沒(méi)發(fā)現(xiàn)提供這個(gè)配置去修改

針對(duì)已有的源代碼文件
搜索組織名,然后全局替換成要修改的組織名

圖片.png

修改全局的配置
上面進(jìn)行替換是針對(duì)已有的文件的操作,那么新建的文件如果不修改配置的話,那就還是錯(cuò)的。此時(shí)我們需要將我們的工程文件xxx.xcodeproj -- 顯示包內(nèi)容 -- 以文本的方式打開(kāi)project.pbxproj文件,然后搜索舊的組織名或者直接搜索ORGANIZATIONNAME就可以找到對(duì)應(yīng)的配置了;然后修改這個(gè)配置的值保存即可

圖片.png

9. pod install 某個(gè)庫(kù)嘗試多次無(wú)果

有時(shí)候install多次,要么就是卡半天失??;要么就是被墻拉不下來(lái)(比如libwebp庫(kù))

針對(duì)需要翻墻的庫(kù)

  • 搞個(gè)梯子
  • 找群友或同事要庫(kù)的包文件以及spec配置文件

源碼的目錄~/Library/Caches/CocoaPods/Pods/Release
spec配置文件目錄~/Library/Caches/CocoaPods/Pods/Specs/Release

默認(rèn)情況下,發(fā)布在cocoapods官方的源都是緩存在Release目錄下,如果沒(méi)有還可以去External目錄去找找

拿到源碼包以及spec配置包之后,放到對(duì)應(yīng)的位置就好了

圖片.png
圖片.png

針對(duì)多次拉取代碼都失敗的

  • 切換4G切換Wifi試試
  • 上面的方法屢試不爽,找別人拿到壓縮包放到對(duì)應(yīng)位置即可
最后編輯于
?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

友情鏈接更多精彩內(nèi)容