macOS 下搭建开发环境

上周四家里遭遇入室盗窃,用了快四年的 Lenovo G450A 还有刚买的 HTC 8S 悉数被盗,只剩下一台三星 S5830 。

这一天不写点代码就感觉不自在,实在忍受不了每天回家只能看电视的无聊,果断入手了一台 Macbook Pro 。

之前用的是 Win8 + Ubuntu 12 双系统,第一感觉就是:原来 macOS 被 Ubuntu 山寨了,特别是 UI 层面。

macOS 的内核 Darwin 是基于 Unix(BSD) 的,血统比 Linux 更纯正,对于程序员来说优势自不必说。

曾经为了学习操作系统和 Linux Shell ,不得不在 VMWare 下安装 Ubuntu ;

曾经为了学习 Objective-C 而尝试在 VMWare 下安装 macOS ,却因为忘记 BIOS 密码无法开启硬件虚拟化而最终作罢;

曾经学习 Cocos2d-X ,为了把 C++ 代码编译为 .so 库供 Android 项目调用,不得不下载和安装 10G 左右的 Cygwin。

而如今有了 Mac 这些都是浮云了,现在回想起来真是一把辛酸泪啊。

然后又想到之前在《乔布斯传》中看到的:

乔布斯曾经专门把 Linus Torvalds 请到办公室,商讨在 Linux 上搭建 macOS 的细节,遗憾的是由于 Linus 的傲慢、目光短浅而未能达成一致意见,最后乔布斯选择了 BSD 。不知道 Linus 后来有没有后悔,呵呵~

之前习惯了 Ubuntu 下的 apt-get ,macOS 下只得自己安装 HomeBrew 或 MacPorts 。

HomeBrew的安装

cd /usr/local
sudo mkdir homebrew
curl -L https://github.com/mxcl/homebrew/tarball/master | sudo tar xz --strip 1 -C homebrew
cd homebrew/bin
./brew -v
sudo ./brew update

修改 /usr/local 的所有者权限:

sudo chown $USER /usr/localbrew

.bash_profile 中为 HomeBrew 配置环境变量:

touch '.bash_profile' #首次创建,如果已经存在可跳过
vim '.bash_profile'
export PATH=$PATH:/usr/local/homebrew/bin

用 HomeBrew 安装 git :

brew search git
brew install git

搭建 Android 开发环境

JDK / Eclipse / ADT / Android SDK / Android NDK 的下载和安装就不赘述了,主要是 SDK 和 NDK 环境变量的配置:

export PATH=$PATH:~/Dev/android-sdks/tools
export PATH=$PATH:~/Dev/android-sdks/platform-tools
export PATH=$PATH:~/Dev/android-ndk-r8e
ANDROID_SDK_ROOT=~/Dev/android-sdks
export ANDROID_SDK_ROOT
NDK_ROOT=~/Dev/android-ndk-r8e
export NDK_ROOT

搭建 Cocos2d-x 开发环境

由于省去了安装庞大的 Cygwin,这一步就变得异常简单了,而且前面已经配置 SDK 和 NDK 环境变量,只需执行几个 shell 文件即可:

cd $COCOS2DX_ROOT
./install-templates-xcode.sh #安装Xcode模板
./create-android-project.sh #创建Android项目
cd $PROJECT_ROOT/proj.android
./build_native.sh #调用NDK将C++文件编译为.so库并部署到project中

最近几个版本的 Cocos2d-x 中的 buid_native.sh 已经不再将 Cocos2dxActivityCocos2dxBitmap 等公共封装类直接导入新建的 project(我去年 3 月份使用 1.0 版本的时候还是这样的),而是拿出去作为了一个单独的 Library Project ,位于 $COCOS2DX_ROOT/cocos2dx/platform/android/java ,这样很好。在导入新建 project 时,要记得将这个 Library Project 引入。

搭建 Ruby 开发环境

最后是 Octopress ,首先当然得安装 Ruby 环境。 macOS 自带 Ruby 版本过低,需要安装 1.9.3 版本,首先安装 Ruby 版本管理工具 rbenvrvm

curl -L https://get.rvm.io | bash -s stable --ruby
rvm install 1.9.3
rvm use 1.9.3 --default
rvm rubygems latest

配置环境变量:

[[ -s "$HOME/.rvm/scripts/rvm" ]] && source "$HOME/.rvm/scripts/rvm"

用 HomeBrew 安装 rbenv

brew update
brew install rbenv
brew install ruby-build
rbenv install 1.9.3-p194
rbenv rehash

Octopress 及 Heroku 的安装

从 GitHub clone 自己原先的 octopress 项目到本地,并安装 rakejekyll 等依赖包:

gem install bundler
rbenv rehash
bundle install
rake install
gem install heroku

然后需要把之前电脑上生成的 keys 清除掉:

heroku keys:clear

并重新生成 SSH key,可参考 Heroku 官方文档:

$ ssh-keygen -t rsa
Generating public/private rsa key pair.
Enter file in which to save the key (/Users/adam/.ssh/id_rsa):
Enter passphrase (empty for no passphrase): 
Enter same passphrase again: 
Your identification has been saved in /Users/adam/.ssh/id_rsa.
Your public key has been saved in /Users/adam/.ssh/id_rsa.pub.
The key fingerprint is:
a6:88:0a:0b:74:90:c6:e9:d5:49:d6:e3:04:d5:6c:3e adam@workstation.local

然后上传新的 key 到 heroku :

$ heroku keys:add
Found existing public key: /Users/adam/.ssh/id_rsa.pub
Uploading SSH public key /Users/adam/.ssh/id_rsa.pub... done

最后一步就是 git push ,却老是报错:

$ git push -u heroku master
#ssh: connect to host heroku.com port 22: Operation timed out
#fatal: The remote end hung up unexpectedly

StackOverflow 上说需要重新生成 SSH key ,试了不行,后来才知道是 Heroku 的 SSH 被 GFW 墙了,看来老外还是不懂咱天朝的国情啊。这篇文章帮了我,手动配置 ssh 配置文件就 OK 了:

vi ~/.ssh/config:
Host heroku.com
User [YOUR_HEROKU_ACCOUNT]
Hostname 107.21.95.3
PreferredAuthentications publickey
IdentityFile ~/.ssh/id_rsa
port 22