Expo(EAS)で環境ごとにアプリをインストールできるようにする
Expoで開発しているアプリを実機にインストールする時に、ProductionとDevelopmentを別のアプリとしてインストールする方法。
前提
基本的には公式通りに進めれば問題ないが、記載されていない箇所もあるのでメモを残しておく。
Bundle Identifierを作成する
Bundle IdentifierをDevelopment用に追加で作成する。
Apple DeveloperのIdentifiersのページから作成する。
もともとのIdentifiersがcom.xxx.appnameだった場合、com.xxx.appname.developなどにしておけばOK。
ファイルの変更
公式ドキュメントの通り、app.jsonをapp.config.jsonに書き換える。
nameとbundleIdentifierを環境変数で分けるようにする。
const IS_DEV = process.env.APP_VARIANT === 'development';
export default {
name: IS_DEV ? 'MyApp (Dev)' : 'MyApp',
slug: 'my-app',
ios: {
bundleIdentifier: IS_DEV ? 'com.myapp.dev' : 'com.myapp',
},
android: {
package: IS_DEV ? 'com.myapp.dev' : 'com.myapp',
},
};
eas.jsonにもAPP_VARIANTを追加する
{
"build": {
"development": {
"developmentClient": true,
"env": {
"APP_VARIANT": "development"
}
},
"production": {}
}
}
package.jsonのdev scriptも、VARIANTを指定する。
{
"scripts": {
"dev": "APP_VARIANT=development npx expo start"
}
}
EASでビルドする
まずは通常通りビルドコマンドを実行する。
eas build --profile development --platform ios
Team, ProviderはProductionと同じでいいので、同じものを選択する。
そうすると、app.config.jsに記載していたbundleIdentifierが登録される
✔ Select a Team › Team Name
✔ Select a Provider › Provider Name
✔ Bundle identifier registered com.myapp.dev
その他に、Reuse this distribution certificate?のように過去に使った設定を使い回すか聞かれるので、同じもので問題ないのであれば再利用を選択すればOK。
Sign in with Appleの設定
SupabaseでAppleログインを設定していたので、Authorized Client IDs (iOS, macOS, watchOS, tvOS bundle IDs or service IDs)
にカンマ区切りでDevelopment環境用のIdentifiersを追加する。
Discussion