Xcode12适配 无法编译模拟器

共计遇到三个问题,挨个剖析一下。

问题现象1:

  1. building for iOS Simulator-arm64 but attempting to link with file built for iOS Simulator-x86_64
  2. building for iOS Simulator, but linking in object file built for iOS, file '/Users///framework/' for architecture arm64

问题分析:

字面意思来看,是说link了不支持模拟器的FrameWork,通常需要检查三方库,看看三方库是不是不支持模拟器,比如支付的早期就不支持模拟器。

Xcode12在编译模拟器的时候优先使用arm64架构编译,而过去打包模拟器是没有arm64的,arm64架构只适用于真机。因此报错linking了一个真机的FrameWork。

解决方案大致是(错误的方案):
I've seen quite a bit of weird behavior with frameworks, I think due to changes to the simulators to support Apple silicon. My temporary workaround is, in my app/extension targets, to add "arm64" to the Excluded Architectures build setting when building for the simulator (as your preview appears to be trying to do), and setting "Build Active Architecture Only" to No for all schemes. Might be worth a try.

Check if in your project for compiled target ->build settings -> user defined section (at the very bottom) you have defined VALID_ARCHS=arm64, if yes, delete it.

大致是说删除VALID_ARCHS=arm64,然后Build Active Architecture Only 设置为NO


image.png

实际测试,确实可行了。但是带来了新的问题,这样没法编译真机了……

解决方案(推荐2)

  1. build settings->excluded architectures 中加入arm64架构,代表不编译arm64架构。但是这种做法会导致无法编译真机,因为真机是arm64架构。所以需要勾选Any iOS Simulator SDK,解决。
  2. build settings->build active architecture only 设置为YES,代表仅编译当前项目中包含的架构。这个设置适用于模拟器和真机。
  3. 如果使用了XCConfig配置文件,那么设置EXCLUDED_ARCHS[sdk=iphonesimulator*] = arm64,效果同1


问题现象2:

fatal error: /Applications/Xcode.app/Contents/Developer/Toolchains/XcodeDefault.xctoolchain/usr/bin/lipo: ***.a have the same architectures (arm64) and can't be in the same fat output file

问题分析:

打包的时候设置Build Active Architecture Only为no则代表打适用于所有机型的包,Xcode11 打包的模拟器的.a默认支持i386、x86_64,Xcode12 打包的模拟器.a默认支持i386、x86_64、arm64。比Xcode11多了arm64,而arm64通常用于真机,因此在合并模拟器的.a和真机的.a的时候起了冲突。

解决方案:

打包的时候强制指定${CONFIG} ARCHS="i386 x86_64", Xcode 配置build settings->+user-defined->VALID_ARCHS = i386 x86_64,或者直接设置Architectures = i386 x86_64


问题现象3:

报错1:DemoApp.xcodeproj The linked framework **framework' is missing one or more architectures required by this target: armv7.
报错2:ld: in **, building for iOS, but linking in object file (**) built for iOS Simulator, file '*' for architecture arm64

问题分析:

既然Xcode12模拟器默认支持了arm64,那么我们直接打出一个模拟器的FrameWork,真机是否可以直接使用?

解决方案:

答案是不可以。真机无法使用模拟器的arm64。报错1是直接使用模拟器的包编译会提示找不到armv7,改了build active architecture only后报错2。
Xcode12 提到了Universal APP(通用APP),MacOS11 的Apple芯片支持手机应用在电脑上运行。推测可能是苹果为新电脑做的适配,假设新电脑支持arm64,那就应该支持编译arm64的模拟器和真机。开发者大会有提及,但是细节不明。
解决方案:暂时只能老老实实回退到不包含arm64的模拟器包。

参考:https://developer.apple.com/forums/thread/657913

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 194,088评论 5 459
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 81,715评论 2 371
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 141,361评论 0 319
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 52,099评论 1 263
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 60,987评论 4 355
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 46,063评论 1 272
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 36,486评论 3 381
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 35,175评论 0 253
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 39,440评论 1 290
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 34,518评论 2 309
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 36,305评论 1 326
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 32,190评论 3 312
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 37,550评论 3 298
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 28,880评论 0 17
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 30,152评论 1 250
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 41,451评论 2 341
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 40,637评论 2 335