mac mini 2020 M1 に React Native の開発環境を作る
Homebrew
HomebrewのインストーラーがApple Silicon対応しているのでいつもどおりインストールするだけ.
The Missing Package Manager for macOS (or Linux) — Homebrew
インストールパスは /opt/homebrew/bin
だった.
node, nodebrew
node は nodebrew で管理しているので brew install nodebrew
で nodebrew をインストールする.
nodeは v15.3 から apple silicon 対応している様子なので v15 の最新を入れることにする.
nodebrew ls-remote
すると v15.6.0 があるので nodebrew install v15.6.0
しようとすると以下のようなエラーが出る.
Error: Darwin arm64 is not supported. at /opt/homebrew/bin/nodebrew line 743.
調べるとnodebrewのスクリプトを書き換えるなどいろんな情報が出てきたけど,結果としは何もせず nodebrew compile v15.6.0
でソースからのコンパイルができた.
何もせず,は嘘だ.ソースコードのダウンロードに失敗したので mkdir ~/.nodebew/src
した.
コンパイルに結構時間かかるが mac mini は非常に静かだった.コンパイルが完了すると nodebrew use v15.6.0
できるようになった.
nodebrew v1.1 で apple silicon 対応が入り,node v16 から apple silicon 用 pre build も用意された.ということでこれら最新環境ではソースコンパイルせず, nodebrew install v16.0.0
でイケる.
cocoapods
冒頭の記事にもある通り, cocoapods をインストールしようとすると ffi エラーが起きる.
x86_64 モードで cocoapods と ffi をインストールする.
arch -x86_64 gem install --user cocoapods ffi
実行
arch -x86_64 npx pod-install
build, yarn run ios
yarn run ios
するとシミュレーターは立ち上がるがビルドに失敗する.
Xcode開いてエラー内容を見ながら修正.
基本的に冒頭の記事通りに Build Active Architecture Only
を No
にするのと Excluded Architectures (EXCLUDED_ARCHS)
に arm64
を入れる対応が必要.
別途 Flipper でビルドがコケるのでこちらを参考に修正.
simulator ではなく native app として動かす
Xcode 上でビルドターゲットをMy Mac(Designed for iPad)とすると Native App として動かせる.
Bluetooth も実機同様に使える.素敵.
2021 4月時点での最新情報です。
基本的に↑と同じですが、いくつかのツールがM1 native supportedになってるので、少し簡単になってると思います。
iOS
- Homebrew has officially supported Apple silicon since 3.0.0
- Cocoapods supporting M1 is available via brew
$ brew install cocoapods
- https://formulae.brew.sh/formula/cocoapods
- Update Podfile by following https://zenn.dev/myb/articles/4b1dd3821703aa2ac95b#podsプロジェクトのbuild-settingsを設定
- Don't forget to run $ pod update every time when update Podfile
- Flipper may cause a build error while running
$ yarn run ios
- https://qiita.com/mk2/items/a087a3556116ff16afa6
- (Probably) specify its version in Podfile like as
use_flipper!({ 'Flipper' => '0.75.0' })
- Configure path to node if you get error while building iOS app
-
sudo ln -s
which node/usr/local/bin
-
Android
- Install Java 16 (runs natively on M1)
- It's recommended to download from azul
- Ref : https://zenn.dev/osuzuki/articles/b41dc7be15e2b5#step2.-jdkインストール
- Upgrade gradle version to 7.0 (because JDK 16 has been supported since Gradle 7.0)
- Open android/gradle/wrapper/gradle-wrapper.properties
- Edit distributionUrl to https://services.gradle.org/distributions/gradle-7.0-bin.zip
- Emulator
- arm supporting version has been available since 4.2 beta (no emulator is found on 4.1)
- Tips : it may be necessary to chose "Cold boot now" when to launch emulator via AVD