EAS Buildの警告「cli.appVersionSource」の解消法【React Native + Expo】
警告内容
npx eas build
を実行した際、次の警告が表示されました。
npx eas build --platform android
The field "cli.appVersionSource" is not set, but it will be required in the future. Learn more
eas.json
の中のフィールド、cli
セクションにappVersionSource
を設定する必要があるという警告です。これは将来的に必須となるため、設定が推奨されています。
メッセージに最後にある「Learn more」の先が以下のドキュメントです。
対応方法
追加した内容は以下の通りです。(該当箇所以外は省略)
{
"cli": {
+ "appVersionSource": "remote"
},
"build": {
"preview": {...},
"local": {...},
"production": {
+ "autoIncrement": true
}
},
"submit": {...}
}
これで設定が完了し、警告が回避されます。設定値はlocal
またはremote
です。
今回は、公式ドキュメントの推奨に従ってremote
にしました。
production
プロファイルのみで自動インクリメントを有効にした理由は、preview
やlocal
プロファイルが関係者のみの共有目的で使われることが多く、バージョン管理の厳密さがそれほど必要ないからだと思っています。
解説
ExpoやEASを使用してアプリ開発する場合でも、バージョン管理は考慮しておく必要があります。適切に管理することで、ストアへの提出などをスムーズに進めることができます。ここでは、Expoプロジェクトでのバージョン管理の仕組みと推奨される設定について解説します。
ExpoやEASを使ったプロジェクトでは、アプリのバージョンには2種類あります。
- ユーザー向けに見せるバージョン(app.jsonで参照できるversionなど)
- 開発者向けビルドバージョン(app.jsonで参照できるandroid.versionCode や ios.buildNumber など)
上記2種類に対して、公式ドキュメントで推奨されている設定内容は以下です。
- ユーザー向けバージョンは手動で更新する
- app.jsonのversionフィールドに手動で管理する
- 開発者向けバージョンは自動インクリメントを有効にする
つまり、ユーザー向けに見せるバージョン(app.jsonのversion
)は手動で更新し、開発者向けのビルドバージョン(android.versionCode
やios.buildNumber
)は自動インクリメントに任せる、ということかと思います。
補足「リモートバージョンが設定されていない場合の対応」
リモートのバージョン管理が有効になっていない場合、以下のようにローカルバージョンが使用されるという警告が出ることがあります。
No remote versions are configured for this project, versionCode will be initialized based on the value from the local project.
このプロジェクトはリモートのバージョンが設定されていないため、versionCodeはローカルプロジェクトの値に基づいて初期化されるそうです。これを解消するには、ローカルバージョンをリモートに同期する必要があります。
コマンド以下です。
npx eas build:version:set
実行すると、リモートバージョンが初期化され、以降は自動でリモートバージョンがインクリメントされるようになります。
バージョン番号の初期値の指定を求められるかもしれませんが、ストアにまだ出していない場合は1
でよいと思います。もし既にストアに公開している場合は、ストアのバージョンコードよりも大きな値を入力する必要があります。
ちょっと株式会社(chot-inc.com)のエンジニアブログです。 フロントエンドエンジニア募集中! カジュアル面接申し込みはこちらから chot-inc.com/recruit/iuj62owig
Discussion