M 系列 Mac,运行模拟器时卡死在 installing

Q:

公司内部私有 pod 库的示例工程,在 M3 芯片的 Mac 上运行模拟器时,出现了卡死的情况;
第一次运行是没问题的,但是 commend + r 第 2 次运行时,Xcode 会卡在 installing 那里,模拟器跑不起来;
在 Intel 芯片的机器上正常,只在 M3 的 Mac 出现了这个情况。

图1.png

之所以出现这个情况,是因为我们 pod 的 podsepc 文件中,指定了模拟器环境跳过 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 架构,给他跳过就可能会出现一些问题。于是我尝试使用 Rosetta 模式运行(怎么使用 Rosetta 模式,请参考文末链接)。
遗憾的是第 1 次,第 2 次运行时正常,第 3 次运行就又卡死在 installing 了,估计是 M 系列对指令集的兼容有点问题(详细探究请参考文末链接)。

A:

于是暂时放弃 EXCLUDED_ARCHS 编译项,把 podspec 文件,以及 podfile 文件中的这个配置注释掉,并且把项目配置中的 ‘arm64 除外’ 配置,也删掉;

 #   s.pod_target_xcconfig = { 'EXCLUDED_ARCHS[sdk=iphonesimulator*]' => 'arm64’ }
 #   s.user_target_xcconfig = { 'EXCLUDED_ARCHS[sdk=iphonesimulator*]' => 'arm64’ }
图2.png

至此,在 M 系 Mac 的模拟器上,就可以正常 commend + r 运行了;

⚠️说明:

这并不算完美的方案,如果以后再集成其他不方便改 podspec 的三方库,库里又凑巧带这个 ‘模拟器下跳过 arm64 编译’ 的配置;又或者 .a 中不包含一些架构,到时候就又会出现这个情况;
所以还是建议尽量用真机调试;

感谢这篇文章的帮助:https://www.jianshu.com/p/311ddae66ac2

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容