前言
????????公司有一個很老款的iOS應(yīng)用,原來在xcode8開發(fā)的,現(xiàn)在到iOS15系統(tǒng)跑不起來了,被迫升級之。。
? ? ? ? 遇到一些問題,總結(jié)如下文。
問題1 編譯報錯 Multiple commands produce……
Multiple commands produce '/Users/user/Library/Developer/Xcode/DerivedData/LoanVisit-ghqbwiuunlciygdkzpvmakgtxcsx/Build/Products/Debug-iphoneos/LoanVisit.app/app.js':
1) Target 'LoanVisit' (project 'LoanVisit') has copy command from '/Users/user/Desktop/projects/LoanVisit/platforms/ios/www/cordova-js-src/plugin/android/app.js' to '/Users/user/Library/Developer/Xcode/DerivedData/LoanVisit-ghqbwiuunlciygdkzpvmakgtxcsx/Build/Products/Debug-iphoneos/LoanVisit.app/app.js'
2) Target 'LoanVisit' (project 'LoanVisit') has copy command from '/Users/user/Desktop/projects/LoanVisit/platforms/ios/www/js/app.js' to '/Users/user/Library/Developer/Xcode/DerivedData/LoanVisit-ghqbwiuunlciygdkzpvmakgtxcsx/Build/Products/Debug-iphoneos/LoanVisit.app/app.js'
去到 項目的TARGETS > Build phase 下面,搜索日志中出現(xiàn)的重復(fù)的文件名字,在Copy Bundle Resource和Compile Sources下面,刪除掉,只保留1個即可。
問題2?library not found for -lstdc++.6.0.9
ld: library not found for -lstdc++.6.0.9
clang: error: linker command failed with exit code 1 (use -v to see invocation)
原因:Xcode新版本已經(jīng)不在支持舊的-lstdc++.6.0.9庫了,要刪掉該引用,并且替換成新的libc++.tbd。
當(dāng)然,如果是舊項目的話,因為部分代碼是用了舊的庫,替換過后可能重新編譯會報錯,這種情況下建議升級原來的代碼,兼容最新庫。
問題3 百度地圖sdk library not found for -lssl
其實本身不是問題,是百度地圖sdk的相關(guān)framework放錯地方了,檢查并放到正確的地方,重新引用就行。
問題4 真機(jī)調(diào)試報錯 -402620395?A valid provisioning profile for this executable was not found
真機(jī)調(diào)試編譯成功,但安裝運行報錯:
首先檢查并排除開發(fā)者證書的問題。
然后因為是老項目遷移,需要調(diào)整下項目的配置:file-> project settings
Per-User Project Settings中的Build System設(shè)置為Legacy Build System,并且把最后一個鉤打開,見下圖。
問題5 真機(jī)調(diào)試報錯-402620375 the code signature version is no longer supported
網(wǎng)上有很多這個報錯的解決辦法,可能各個項目情況不太一樣,這里提供下我的可行配置,一共兩處地方:
1、項目配置build settings - signing:Other Code Signing Flags 增加配置變量 --generate-entitlement-der
2、檢查項目依賴的第三方庫(含自己制作的),將Embed and Sign修改為?Do Not Embed。
問題6 運行報錯?DiskCookieStorage changing policy from 2 to 0
????????這個報錯一開始很煩人,也比較少見。
????????我項目框架是ionic + Cordova。查到網(wǎng)上有相關(guān)類似問題:https://forum.ionicframework.com/t/app-crashes-when-i-try-to-open-in-it-on-tesflight-on-a-iphone/21005
????????但沒有合適可行解決辦法。
????????一開始從字面懷疑是cookie問題,其實不然。
????????然后發(fā)現(xiàn)調(diào)試閃退,但直接運行安裝好的debug版本app又可以正常跑。轉(zhuǎn)而懷疑到動態(tài)調(diào)試的控制,接著檢查代碼,發(fā)現(xiàn)在啟動類里面控制了禁止app動態(tài)調(diào)試。把這段控制去掉,再次debug,就正常了,囧。。。
關(guān)于百度地圖SDK升級
? ? ? ? 項目用到了百度地圖和定位SDK,項目升級Xcode版本之后發(fā)現(xiàn)舊的庫跑不下去了,然后就對這個sdk也升級,相關(guān)代碼也調(diào)整適配。
? ? ? ? 中間其實遇到了一些bug,但按照官方文檔還是可以解決的。如果升級中有什么問題,要檢查下是否按照官方文檔的步驟一步步做完了:https://lbsyun.baidu.com/index.php?title=iossdk/guide/create-project/oc