美文网首页
工作项目从 Intel 迁移 M1 过程

工作项目从 Intel 迁移 M1 过程

作者: 欧阳蓝缺 | 来源:发表于2022-06-25 15:37 被阅读0次

    背景

    公司的项目排除三方库的代码已经超过 270 万行,且项目编译时还加了些脚本。在 MacBook Pro 16-inch i7 2.6 的电脑上在不改代码的情况下 Run 一次就得两三分钟,改几行代码就是四五分钟,对工作来说非常浪费时间。公司有同事已经换成 M1,发现速度快很多,一般在 30 秒左右。于是决定换 M1 。
    换用 M1 我不想开启 Rosetta,看资料说会有些性能损耗,虽然加上这部分损耗也比 Intel 快,不过我还是想用苹果标准的方案。

    环境

    • MacBook Pro (13-inch, M1, 2020)
    • macOS Monterey 12.4
    • Xcode 13.4.1 13F100

    过程

    1. 安装 brew

    官网 https://brew.sh/ 的安装命令 /bin/bash -c "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)"

    2. 安装 cocoapods

    brew install cocoapods
    

    因 macOS Monterey 12.4 Ruby 环境的不同,使用官方 sudo gem install cocoapods 能安装成功,但有些项目 pod install 时会报错,所以使用 brew 安装。

    pod install 报错问题
    https://github.com/CocoaPods/CocoaPods/issues/10518

    3. 安装 ccache

    • 项目较大,为提高平时增量编译的速度,我们用了 ccache。
    • 使用 brew 安装 brew install ccache
    • 安装后终端中可以正常执行 ccache ,但 Xcode 中却找不到 ccache 命令。原因是 Xcode 中的 $PATH 值与终端不同,终端会加载 .zshrc .zprofile 中配置的 $PATH,但 Xcode 只加载了几个系统基本的目录和 Xcode 的几个目录(具体可以在 Xcode 工程脚本中输出 $PATH 查看),所以找不到命令。
    • 解决:将 ccache 链接到 bin 目录,通过 brew 安装的 ccache 在 /opt/homebrew/bin/ccache,执行以下命令将 ccache 链接到 bin 目录以,让 Xcode 能访问到。
    # 将 ccache 链接到 bin 目录
    sudo ln -s /opt/homebrew/bin/ccache /usr/local/bin/ccache
    

    4. 安装 python 2

    # from distribute_setup import use_setuptools
    # use_setuptools()
    from setuptools import setup, find_packages
    
    • 修改后执行 python setup.py install 及可。

    opencc-python 安装失败问题
    https://blog.csdn.net/a3335581/article/details/82802820

    5. 工程 Run 模拟器编译失败

    • 以上操作过,工程已经可以在设备上调试了,但 Run 模拟器一直报错,在 link 阶段提示 Undefined symbols for architecture x86_64,网上搜到大部分的解决方式是开启 Rosetta,试过开启后是可以解决,但前面已经说过原因,我不想开启。
    • 就我们工程的解决方法:所有 Target 的 Build Settings 中
      Architectures 改为默认值 $(ARCHS_STANDARD)
      Build Active Architecture Only 的 Debug 改为默认的 Yes
      Podfile 中增加配置
    post_install do |installer|
      installer.pods_project.targets.each do |target|
        target.build_configurations.each do |config|
          config.build_settings['ONLY_ACTIVE_ARCH'] = 'NO'
        end
      end
    end
    

    清除 Xcode、pod 缓存后 pod install,模拟器和设备上成功 Debug 起来。

    Run 模拟器编译失败问题
    https://juejin.cn/post/6989958874740555789

    相关文章

      网友评论

          本文标题:工作项目从 Intel 迁移 M1 过程

          本文链接:https://www.haomeiwen.com/subject/uyjivrtx.html