今回は、Expoで作ったアプリを、Androidのネイティブアプリとしてビルド(Deploy)します。
この記事では、前々回までで作成途中のHello Worldアプリ(請求書アプリモックアップ)をDeployします。公式ドキュメントはこちら。
この記事は連載です。親記事はこちら
前提
expo-cliがグローバルインストールされていることを前提とします。インストールしたかわからない場合は、この連載の初回を御覧ください。
また、Windowsの場合はWSLが有効になっている必要があります。この記事はMacを想定していますので詳細は省略しますが、必要な方はWindowsを対象としている元記事を見てください(元記事は少し古いです)。
app.jsonにビルド情報を設定
AndroidおよびiOS用にビルド情報を設定します。Visual Studio Codeでプロジェクトを開いて、以下の情報を入れます。通常であればAndroidとiOSの部分だけ、以下にあうように追記すればよいはずです。
"com.yourcompany.yourappname"部分は、会社のWeb URLの逆(example.comならcom.example)を入れて、さらにアプリのslugを入れるとよいでしょう。ただし、Androidのpackage名にはハイフンが使えないので、ハイフンはアンダースコアに置き換えましょう。(- → _)
{ "expo": { "name": "Hello World!", "slug": "hello-world", "version": "1.0.0", "orientation": "portrait", "icon": "./assets/icon.png", "splash": { "image": "./assets/splash.png", "resizeMode": "contain", "backgroundColor": "#ffffff" }, "updates": { "fallbackToCacheTimeout": 0 }, "assetBundlePatterns": [ "**/*" ], "ios": { "supportsTablet": true, "bundleIdentifier": "com.yourcompany.yourappname", "buildNumber": "1.0.0" }, "android": { "package": "com.yourcompany.yourappname", "versionCode": 1 }, "web": { "favicon": "./assets/favicon.png" }, "description": "" } }
ビルドを開始する
Visual Studio CodeのPowerShellで、ビルドを実行します。ここではAndroid用のビルドを実施しますが、iOSも同様です。
$ expo build:android -t apk
keystoreをアップロードするか聞かれるのですが、とりあえずここではExpoに任せる(Generate new keystore)を選択します。
ビルド中...
ビルドはターミナル上で実施されているように見えますが、実際にはExpoサーバー上で実施されます。
ターミナル上にはビルドがキューに入った(ビルド順番待ちになった)という表示が最後に出ますが、その上にあるWebリンクを開けると、ExpoのWebでビルド状況を確認することができます。この画面は、プロジェクトのBuildページからも見ることができます。
右にある「Build Queue Status」をクリックすると、Expoサーバーが今どれくらい忙しいか見ることができます。
ビルドが終わるまで、ひたすら待ちます。混み具合によりますが、数十分はかかります。
右下のダウンロードリンクでapkファイルをダウンロードし、Androidに直接インストールしたりDeploygateなどのサービス経由で配布したり、Play Storeにアップロードすることができます。