2018-01-12 MBP环境迁移

这周换了新的MBP,迁移了旧电脑的资料和开发环境到新的MBP,也遇到了很多坑,记录下来以便参考:

Mac 系统设置

MBP 的基本配置
新MBP为 2017 15-inch 款,macOS 为 High Sierra Version 10.13.2,Processor为2.9 GHz,Memory为16GB,Storage为500GB,基本配置比旧的翻了一倍,代码编译的速度也快了很多。

iCloud账号
第一次登录后,设置iCloud账号:这会同步一些配置,包括Keychain、Wifi、邮件、Notes等。

Dock
根据个人喜好,在"System Preferences"中设置左部显示,设置效果并清理不需要的Dock图标。

手势设置
根据个人喜好,在"System Preferences"中的"Trackpad"中设置: 其中页面的滚动方向为 Scroll & Zoom -> Scroll direction: Natural "可以uncheck"

三指拖拽的设置有所不同,在 Accessibility->Mouse & Trackpad -> Trackpad Options: Enable dragging “three finger drag”

开发环境配置

XCode
在 App Store 中下载安装,在脚本运行时,如果出现xcrun: error: unable to find utility "xcodebuild", not a developer tool or in PATH 需要在Goto Xcode->Preferences->Locations设置。

编译项目出现Rxswift版本错误的问题Module compiled with Swift 4.0 cannot be imported in Swift 4.0.3:这是因为我的系统安装了两个版本的XCode,一个是9.0一个是9.2,9.0是默认的,所以脚本运行时会使用这个默认的(Swift 4.0),而我用9.2的XCode编译项目时使用的(Swift 4.0.3),这就导致了Rxswift版本的不一致问题。修改XCode 9.2为默认版本,重新编译脚本即可。

Distribution版本的code sign问题:随着时间的推移,可能在keychain中存在多个版本,需要删掉不需要的版本,只保留那个正确的。

SSH Key

  • 生成:ssh-keygen -t rsa -b 4096 -C "yourname@yourcompanyname.com"
  • 可设置passphrase
  • 查看:ls -al ~/.ssh
  • 复制:pbcopy < ~/.ssh/id_rsa.pub
    • Add SSH Key in GitHub
  • 打开SSH:eval "$(ssh-agent -s)"
  • 添加:ssh-add ~/.ssh/id_rsa

Sourcetree
我一般使用Sourcetree进行版本控制,可以在官网下载。

如果在一开始的输入阶段,输入错了用户名(我就是误加了邮箱后缀),后继就会发现再也无法添加URL下载代码,程序一直在报错。对于这个问题,我们需要在 旧版 (2.0.5.2 Network) /新版 (2.6.3 Advanced) 手动修改用户名:Host名(github.yourcompanyname.com)以及不包括邮箱地址的用户名。

在下载Repository的时候,为了后面的Ecosystem环境设置要求,我们要求设置指定的Path为/Users/yourname/Projects/yourcompanyname/kiai

在控制项目版本时,进行版本切换时登录框弹出的问题,几遍输入正确的用户名密码后也无法解决,登录框持续弹出,并且还发现一部分的第三方库没有下载下来:

  • 重新跑了一遍项目的依赖脚本
  • 重新设置了SSH Key

但是仍然存在一些问题,Permission denied (publickey) Fatal: Could not read from remote repository,指出下载权限错误,在使用Git命令行切换时无问题。这里采取的workaround是,在版本切换时会配置成运行"post-checkout", 先把这个禁止掉。后面整个环境在Ecosystem中配置好以后就没有类似问题了。(20180116删除Carthage文件夹,重新跑一遍脚本)

20180116:在我更新corp账号信息后,SourceTree无法下载更新,直接出错,根据日志信息是因为认证错误,这是因为它还在直接使用Keychain里面存储的旧的密码,所以对于这种情况,删除Keychain相应的项目(即对应git.yourcompanynme.com的条目),再次下载更新,这时候会弹出密码输入框,输入正确的密码即可。

20180119 使用Git管理超大文件,Homebrew安装 brew install git-lfs

Terminal
在这个10.13 Mac OS中,默认的Shell为 "/bin/tcsh",也就意味着不是之前默认的Bash,所以我们需要修改默认值为Bash,以便在后继使用:Preferences -> General -> Shells open with Command (complete path): "/bin/bash"

Carthage
我们的项目使用Carthage来管理第三方库:

  • 安装homebrew: /usr/bin/ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
  • 安装Carthage:brew install carthage
  • 安装SwiftLint:brew install SwiftLint

多版本共存问题:如果系统安装了多个Carthage版本,运行时可能会出现莫名的错误,我们需要先移除所有版本后重新安装 brew uninstall --force carthage, brew install carthage

更新版本:brew upgrade carthage

Swiftlint版本:check version: swiftlint version, upgrade: brew upgrade swiftlint

Ecosystem
Ecosystem系统有默认指定的XCode版本,如果和当前版本不一致,它会自动下载指定的版本,但是直接下载速度非常慢,最好从其他机器上直接Copy一个过来,设成默认的XCode。

新版MAC 10.13的系统/usr/local读写权限不能够直接设置,得重启机器打开,然后再添加用户的权限,Ecosystem需要在此目录下操作存储文件。

我们项目的Server依赖项目的源文件是放在/usr/local下的,因为版本需要特别指定,所以我们需要通过Ecosystem命令下载。

在测试"localization string"命令时,发现执行错误:

  • 首先需要安装Java:如果brew cask install java失败,可以直接官网下载JDK
  • 安装Ant:brew install ant
  • 后面发现还是遇到了[javac] error: Source option 1.5 is no longer supported. Use 1.6 or later错误:这是因为JDK9支持的最低版本是1.6,而我们项目的设置为1.5,修改项目设置即可。

如果Ecosystem设置的XCode版本与当前不一致,Ecosystem会试图下载XCode,我们可以修改脚本避免下载:在/analytics-mobile/workspace-settings/chef/cookbook/workspace/recipes/project.rb下注释掉include_recipe 'workspace::update_xcode'

资料同步

使用百度云同步盘和网盘同步更新旧电脑的资料,因为网盘不支持自动同步,所以还得继续使用旧版同步盘,不知道哪天就用不了了。

使用Chrome同步网页收藏内容。

使用Outlook同步邮件信息。

使用Windows虚拟机:安装Paralles后,将pvm文件直接从旧机器AirDrop到新机器,直接打开即可。

使用印象笔记同步笔记:因为免费版支持两个设备,所以需要将旧机器上的注销。

软件安装

远程桌面连接RDC,需要使用App Store的美国账户下载,中国区没有。使用时报错The remote PC ended your session. If this keeps happening, contact your network administrator for assistance.”,也Ping不通域名,这个问题需要修改Search Domain

苹果商店下载:安装有道、wechat、Dr. Cleaner

官网下载:Skype、搜狗输入法、Skype for Business(Office 365上下载)

Mac 空间清理

XCode采用真机调试时会加载大量的调试信息,一般两三个G一个,可以只保留常用的版本,而删除其他的信息,这个可以重新自动生成,所以可以安全删除:/Users/yourmacname/Library/Developer/Xcode/iOS DeviceSupport

不定期删除编译时生成的Derived Data:/Users/yourmacname/Library/Developer/Xcode/DerivedData

清除不需要使用的Core Simulator,在/Users/yourmacname/Library/Developer/CoreSimulator/Devices目录下,查看device_set.plist文件,找出与特定Simulator对应的ID,然后根据这个ID查找对应的folder文件夹,相应的保留或者删除。

iOS Files 备份,备份也是非常的大,可能忘了清理: About This Mac -> Storage -> 点击进入

百度云同步盘的删除文件可能会被继续保存在隐藏文件夹中:/Users/yourmacname/百度云同步盘/.BDYunCache/.Delete

Notes

创建Symbolic Link:ln -s ../***/***

隐藏文件:defaults write com.apple.finder AppleShowAllFiles -bool true, defaults write com.apple.finder AppleShowAllFiles -bool false

推荐阅读更多精彩内容