🔥
【Expo】WSL上でEASのAndroidローカルビルドをする
Windows では EAS のローカルビルドができない
Expo を使い,Managed Workflow でアプリ開発をしているのですが,無料版だとリモートビルドの回数に制限があります.
そこでローカルビルドをしようと調べたのですが,どうやら Windows では EAS のローカルビルドに対応していないようです.
結果的に WSL 上でビルドする形になったので,手順をメモしておきます.
WSL2 が導入済みで,Ubuntu を前提としています.
環境構築
パッケージ更新
sudo apt update && sudo apt upgrade -y
Node.js のインストール
curl -o- https://raw.githubusercontent.com/nvm/v0.39.0/install.sh | bash
source ~/.bashrc
nvm install --lts
nvm use --lts
EAS CLI のインストール
npm install -g eas-cli
JDK と SDK マネージャのインストール
sudo apt update && sudo apt install -y openjdk-17-jdk unzip
mkdir -p "$HOME/Android/cmdline-tools"
cd "$HOME/Android"
curl -L -o cmdline-tools.zip https://dl.google.com/android/repository/commandlinetools-linux-11076708_latest.zip
unzip cmdline-tools.zip -d cmdline-tools
mv cmdline-tools/cmdline-tools cmdline-tools/latest
cd ~
環境変数を設定
echo 'export ANDROID_SDK_ROOT=$HOME/Android' >> ~/.bashrc
echo 'export ANDROID_HOME=$ANDROID_SDK_ROOT' >> ~/.bashrc
echo 'export PATH=$PATH:$ANDROID_SDK_ROOT/cmdline-tools/latest/bin:$ANDROID_SDK_ROOT/platform-tools' >> ~/.bashrc
source ~/.bashrc
SDK インストールとライセンス同意
環境変数を読み込んだ新しいシェルセッションで実行してください。または、一度 WSL を再起動してから実行してください。
sdkmanager --sdk_root="$ANDROID_SDK_ROOT" "platform-tools" "platforms;android-34" "build-tools;34.0.0"
yes | sdkmanager --sdk_root="$ANDROID_SDK_ROOT" --licenses
GitHub のセットアップ
Git 設定
git config --global user.name "GitHubの名前"
git config --global user.email "GitHubのメアド"
SSH キー作成
# Enter連打でOK(パスフレーズは設定しなくても可)
ssh-keygen -t ed25519 -C "GitHubのメアド"
eval "$(ssh-agent -s)"
ssh-add ~/.ssh/id_ed25519
公開鍵を GitHub に登録
cat ~/.ssh/id_ed25519.pub
出力をコピーし,GitHub の SSH and GPG keys から,New SSH key に貼り付け.
接続確認
# yesと答えれば良い
ssh -T git@github.com
Hi [GitHub の名前]! と出れば OK
ビルドする
リポジトリをクローンする(既存のプロジェクトの場合)
git clone [リポジトリURL]
cd [プロジェクトディレクトリ]
変更があったら反映する
git fetch origin
git pull --rebase origin [ブランチ名]
不安だったらビルド前にチェック
npx expo install --fix
npx expo prebuild
npx expo-doctor
ビルドする
# ビルドタイプ: production, preview, development
eas build --platform android --profile [ビルドタイプ] --local
Discussion