This documentation is available as Markdown for AI agents and LLMs. See the full Markdown index or append .md to any documentation URL.

複数のアプリバリアントを設定する

ページを編集

1 台のデバイスに複数のアプリバリアントをインストールできるよう、動的な app config を設定する方法を学びます。


この章では、複数のビルド種別(development、preview、production)を 1 台のデバイスで同時に実行できるようプロジェクトを設定します。こうしておくと、別のバージョンをアンインストールして入れ直さなくても、アプリ開発のさまざまな段階をテストできます。

視聴:複数のアプリバリアントを設定する方法
視聴:複数のアプリバリアントを設定する方法

development、preview、production の各アプリバリアントに固有のバンドル識別子を設定し、1 台のデバイスで並べて実行できるようにします。


1 台のデバイスに同時にインストールするには、各バリアントに固有の Android Application ID と iOS Bundle Identifier が必要です。app.json ファイルでは、これらの ID は次のように設定されています。

app.json
{ "ios": { "bundleIdentifier": "com.yourname.stickersmash" %%placeholder-start%%... %%placeholder-end%% }, "android": { "package": "com.yourname.stickersmash" %%placeholder-start%%... %%placeholder-end%% } }

1

動的な設定のために app.config.js を追加する

app.json はアプリ関連の設定を JSON ファイルに持ちます。これは静的なので、一部のプロパティに動的な値を使いたい 場合には向きません。ここでは 環境変数 に基づいて、すべてのビルドプロファイルごとに異なる Android Application ID と iOS Bundle Identifier を設定します。

  • プロジェクトのルートに app.config.js という新しいファイルを作成します。
  • app.config.js で、config を引数に取る関数をデフォルトエクスポートします。そして config を分割代入して、app.json の既存プロパティをすべてコピーします。
app.config.js
export default ({ config }) => ({ ...config, });

2

環境に応じて動的な値を更新する

ビルド種別を判別するため、app.config.jsdevelopmentpreview のビルドプロファイル用として IS_DEVIS_PREVIEW の 2 つの環境変数を追加しましょう。

app.config.js
const IS_DEV = process.env.APP_VARIANT === 'development'; const IS_PREVIEW = process.env.APP_VARIANT === 'preview';

次に、アプリ名、Android Application ID、iOS Bundle Identifier を動的に切り替える 2 つの関数を追加します。

app.config.js
const getUniqueIdentifier = () => { if (IS_DEV) { return 'com.yourname.stickersmash.dev'; } if (IS_PREVIEW) { return 'com.yourname.stickersmash.preview'; } return 'com.yourname.stickersmash'; }; const getAppName = () => { if (IS_DEV) { return 'StickerSmash (Dev)'; } if (IS_PREVIEW) { return 'StickerSmash (Preview)'; } return 'StickerSmash: Emoji Stickers'; };

アプリの name の値には getAppName() を使い、development と preview のビルドで android.packageios.bundleIdentifier を区別するために getUniqueIdentifier() を使います。

app.config.js
export default ({ config }) => ({ ...config, name: getAppName(), ios: { ...config.ios, bundleIdentifier: getUniqueIdentifier(), }, android: { ...config.android, package: getUniqueIdentifier(), }, });

3

eas.json を設定する

eas.jsonAPP_VARIANT 環境変数を追加します。

eas.json
{ "build": { "development": { "developmentClient": true, "distribution": "internal", "env": { "APP_VARIANT": "development" } }, "preview": { "distribution": "internal", "env": { "APP_VARIANT": "preview" } } %%placeholder-start%%... %%placeholder-end%% } }

これで eas build --profile development を実行すると、APP_VARIANTdevelopment に設定されます。

ios-simulator ビルドプロファイルは development を継承しているので、この設定は iOS Simulator にも自動的に適用されます。

4

開発サーバーを実行する

開発ビルドを APP_VARIANT 環境変数で識別しているため、開発サーバーを起動するコマンドにもこの変数を渡す必要があります。そのために、プロジェクトの package.json"scripts" フィールドに dev スクリプトを追加します。

package.json
{ "scripts": { "dev": "APP_VARIANT=development npx expo start" } }

npm run dev コマンドを実行して開発サーバーを起動します。

Terminal
npm run dev

このスクリプトは app.config.js をローカルで評価し、development プロファイル用の環境変数を読み込みます。

これで開発ビルドは Android と iOS の両方で動き、app.config.js で変更したアプリ名が表示されます。たとえば下の開発ビルドは iOS Simulator で動作しています。アプリ名が StickerSmash (Dev) になっていることに注目してください。

これ以降は、静的な値には app.json を、動的な値には app.config.js を使い分けられます。

まとめ

第 5 章:複数のアプリバリアントを設定する

動的な設定のために app.config.js を作成し、app.json の静的な設定はそのまま残しました。特定のビルドプロファイルを設定するために eas.json に環境変数を追加し、カスタムの package.json スクリプトで開発サーバーを起動する方法も学びました。

次の章では、内部配布ビルドとは何か、なぜ必要なのか、そしてどう作成するのかを学びます。

次へ:内部配布ビルドを作成して共有する