升級了Xcode,又要吐血了,唉。。。
代碼又出來好多編譯錯(cuò)誤,Objc的工程還好一點(diǎn),swift就很慘。
1,Objc工程/Swift工程,編譯時(shí)會(huì)出:
:-1: Multiple commands produce '/Users/xxx/Library/Developer/Xcode/DerivedData/Abc-eevxfmncsazylmbfntnfpktbmfgw/Build/Products/Debug-iphoneos/abc.app/Info.plist':
1) Target 'abc' (project 'Abc') has copy command from '/Users/xxx/Desktop/Abc/Info.plist' to '/Users/xxx/Library/Developer/Xcode/DerivedData/Abc-eevxfmncsazylmbfntnfpktbmfgw/Build/Products/Debug-iphoneos/abc.app/Info.plist'
2) Target 'abc' (project 'Abc') has process command with output '/Users/xxx/Library/Developer/Xcode/DerivedData/Abc-eevxfmncsazylmbfntnfpktbmfgw/Build/Products/Debug-iphoneos/abc.app/Info.plist'
為什么呢?google了一圈之后,大家都說是因?yàn)橹貜?fù)拷貝了Info.plist的原因。有兩個(gè)解決方法:
1)修改編譯方式:
File->Workspace Settings->Build System,改為Legacy Build System。默認(rèn)為New.
2)刪除拷貝了多次的plist文件:
Target->Build Phases -> Copy Bundle Resources 找到Info.plist,刪掉
也有可能需要?jiǎng)h除Copy Pods Resources中的Info.plist(我沒遇到這個(gè))
注意:上面兩個(gè)方法任意一個(gè)都可以成功編譯Xcode 9的工程。
在不"Clean Build Folder"的情況下,再把Info.plist加入工程Resources也不會(huì)有什么問題,這只是打ipa包的時(shí)候需要打包進(jìn)入的文件列表而已。
2,Xcode 10 里沒有SVN了... 只有Git
這下我可慘了,只能用svnX了,好在有GUI,不然只在命令行處理就太麻煩了
3,提示了好多:
Showing Recent Messages
/Users/xxx/Desktop/ipp/Pods/ObjectMapper/Sources/EnumOperators.swift:35:13: Invalid redeclaration of '<-'
Showing Recent Messages
/Users/xxx/Desktop/ipp/Pods/ObjectMapper/Sources/FromJSON.swift:44:13: Invalid redeclaration of 'optionalBasicType(_:object:)'
有可能是因?yàn)榉椒膯栴}。
我的問題比較蠢,因?yàn)樵谑褂肅ocoapods加入ObjectMapper時(shí),沒有指定版本,如果指定3.3版本就可以解決上述問題:
pod 'ObjectMapper', '~>3.3'
4,如果選擇了swift 4.2,會(huì)提示:AVAudioSession.setCategory 問題
提示:Swift不支持setCategory,但是如果使用4.2的setCategory,又會(huì)無法兼容iOS 10.0以下系統(tǒng)。google上有提示需要用Objc來寫這段代碼,因?yàn)镺bjc不會(huì)提示『不支持』。我沒嘗試解決,索性退回到4.0了...
5,補(bǔ)充:
今天發(fā)現(xiàn)一個(gè)很久不碰的工程編輯不過了(Xcode 10.3)。
開始提示pod文件中限定的swift太低(3.2),需要是4.0,4.2,5.0,于是改成4.2.
然后編譯出錯(cuò):Invalid redeclaration of 'replaceSubrange(_:with:)' 和 Invalid redeclaration of ‘removeSubrange’.
升級RealmSwift得到解決:
#pod update RealmSwift --verbose --no-repo-update
Installing Realm 3.7.6 (was 3.0.1)