LoginSignup
3
1

More than 1 year has passed since last update.

Expoでeas buildする時はversionCodeを動的にインクリメントしようぜ

Last updated at Posted at 2022-12-09

やりたいこと

app.jsonのversionCodeをインクリメントするスクリプトを用意する

力技感があるが、今回はapp.jsonを丸ごと書き換えてしまうという作戦をとることにした。

以下のscriptをプロジェクトのルートに用意する

updateAndroidVesionCode.ts
const fs = require("fs")

const appJson = JSON.parse(fs.readFileSync("./app.json", "utf8"))
appJson.expo.android.versionCode += 1
fs.writeFileSync("./app.json", JSON.stringify(appJson, null, "  "))

app.jsonを読み込んできて、versionCodeを1インクリメントし、保存するというスクリプト

package.jsonをスクリプトを実行するように書き換える

これをeas buildの前に実行すればよいので、package.jsonを以下のように書き換える

package.json
{
  "name": "hogehoge",
  "version": "1.0.0",
  "main": "node_modules/expo/AppEntry.js",
  "scripts": {
    "start": "expo start",
    ~省略~
    "build:android": "node updateAndroidVesionCode.ts && eas build  --platform android",
    "test": "jest",
    ~省略~
  },
  ~省略~
}

まとめ

iOSのbuildNumberも同じやり方ができるはずなので、これからExpoでアプリを作る人はそうすると良いと思う。
自分はiOSのほうは日付を使ってしまっているので、そのまま日付を使い続けるしかないが。

追記

この記事を書き終わって数日後にExpoが公式で自動インクリメントをサポートしてることを知った。
https://docs.expo.dev/build-reference/app-versions/

ちなみにこの設定を導入している個人開発アプリは↓です
【個人開発】「後で」返事ができる文通チャットアプリ「レイター」を作った話:技術編

Twitterもやってるので、よければフォローお願いします。
https://twitter.com/ObataGenta

3
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
3
1