Q:
公司內(nèi)部私有 pod 庫(kù)的示例工程,在 M3 芯片的 Mac 上運(yùn)行模擬器時(shí),出現(xiàn)了卡死的情況;
第一次運(yùn)行是沒(méi)問(wèn)題的,但是 commend + r 第 2 次運(yùn)行時(shí),Xcode 會(huì)卡在 installing 那里,模擬器跑不起來(lái);
在 Intel 芯片的機(jī)器上正常,只在 M3 的 Mac 出現(xiàn)了這個(gè)情況。

之所以出現(xiàn)這個(gè)情況,是因?yàn)槲覀?pod 的 podsepc 文件中,指定了模擬器環(huán)境跳過(guò) arm64 的編譯
Pod::Spec.new do |s|
s.name = ‘xxx’
s.version = ‘1.0.9’
s.summary = ‘xxx summary’
s.description = ‘xxx desc’
s.homepage = 'http://xxx’
s.license = { :type => 'MIT', :file => 'LICENSE’ }
s.author = { ‘xxx' => ‘xxx’ }
s.source = { :git => ‘git@xxx', :tag => s.version.to_s }
s.ios.deployment_target = ‘9.0’
s.pod_target_xcconfig = { 'EXCLUDED_ARCHS[sdk=iphonesimulator*]' => 'arm64’ }
s.user_target_xcconfig = { 'EXCLUDED_ARCHS[sdk=iphonesimulator*]' => 'arm64’ }
s.frameworks = 'UIKit', 'WebKit', ‘Foundation’
end
而 M 系列的 Mac 本身就是 arm 架構(gòu),給他跳過(guò)就可能會(huì)出現(xiàn)一些問(wèn)題。于是我嘗試使用 Rosetta 模式運(yùn)行(怎么使用 Rosetta 模式,請(qǐng)參考文末鏈接)。
遺憾的是第 1 次,第 2 次運(yùn)行時(shí)正常,第 3 次運(yùn)行就又卡死在 installing 了,估計(jì)是 M 系列對(duì)指令集的兼容有點(diǎn)問(wèn)題(詳細(xì)探究請(qǐng)參考文末鏈接)。
A:
于是暫時(shí)放棄 EXCLUDED_ARCHS 編譯項(xiàng),把 podspec 文件,以及 podfile 文件中的這個(gè)配置注釋掉,并且把項(xiàng)目配置中的 ‘a(chǎn)rm64 除外’ 配置,也刪掉;
# s.pod_target_xcconfig = { 'EXCLUDED_ARCHS[sdk=iphonesimulator*]' => 'arm64’ }
# s.user_target_xcconfig = { 'EXCLUDED_ARCHS[sdk=iphonesimulator*]' => 'arm64’ }

至此,在 M 系 Mac 的模擬器上,就可以正常 commend + r 運(yùn)行了;
??說(shuō)明:
這并不算完美的方案,如果以后再集成其他不方便改 podspec 的三方庫(kù),庫(kù)里又湊巧帶這個(gè) ‘模擬器下跳過(guò) arm64 編譯’ 的配置;又或者 .a 中不包含一些架構(gòu),到時(shí)候就又會(huì)出現(xiàn)這個(gè)情況;
所以還是建議盡量用真機(jī)調(diào)試;
感謝這篇文章的幫助:http://www.itdecent.cn/p/311ddae66ac2