iOS项目从Xcode8升级Xcode13各种报错解决记录

前言

        公司有一个很老款的iOS应用,原来在xcode8开发的,现在到iOS15系统跑不起来了,被迫升级之。。

        遇到一些问题,总结如下文。

问题1 编译报错 Multiple commands produce……

截图1

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 下面,搜索日志中出现的重复的文件名字,在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新版本已经不在支持旧的-lstdc++.6.0.9库了,要删掉该引用,并且替换成新的libc++.tbd。


libc++

当然,如果是旧项目的话,因为部分代码是用了旧的库,替换过后可能重新编译会报错,这种情况下建议升级原来的代码,兼容最新库。


问题3 百度地图sdk library not found for -lssl

截图

其实本身不是问题,是百度地图sdk的相关framework放错地方了,检查并放到正确的地方,重新引用就行。


问题4 真机调试报错 -402620395 A valid provisioning profile for this executable was not found

真机调试编译成功,但安装运行报错:

截图

首先检查并排除开发者证书的问题。

然后因为是老项目迁移,需要调整下项目的配置:file-> project settings

Per-User Project Settings中的Build System设置为Legacy Build System,并且把最后一个钩打开,见下图。


配置截图


问题5 真机调试报错-402620375 the code signature version is no longer supported

报错截图

网上有很多这个报错的解决办法,可能各个项目情况不太一样,这里提供下我的可行配置,一共两处地方:

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。查到网上有相关类似问题:https://forum.ionicframework.com/t/app-crashes-when-i-try-to-open-in-it-on-tesflight-on-a-iphone/21005

        但没有合适可行解决办法。

        一开始从字面怀疑是cookie问题,其实不然。

        然后发现调试闪退,但直接运行安装好的debug版本app又可以正常跑。转而怀疑到动态调试的控制,接着检查代码,发现在启动类里面控制了禁止app动态调试。把这段控制去掉,再次debug,就正常了,囧。。。


关于百度地图SDK升级

        项目用到了百度地图和定位SDK,项目升级Xcode版本之后发现旧的库跑不下去了,然后就对这个sdk也升级,相关代码也调整适配。

        中间其实遇到了一些bug,但按照官方文档还是可以解决的。如果升级中有什么问题,要检查下是否按照官方文档的步骤一步步做完了:https://lbsyun.baidu.com/index.php?title=iossdk/guide/create-project/oc

你可能感兴趣的:(iOS项目从Xcode8升级Xcode13各种报错解决记录)