🚀

Cursor Flutter開発でビルドスキームを設定する方法

に公開

この記事ではCursorでFlutter開発をする際のスキームの設定方法について紹介します。

目次

  1. 記事の背景と目的
  2. スキームとは何か?
  3. 実装方法の概要
  4. Flutter(Cursor)側での実装
  5. Xcode側の実装
  6. 実装後の動作確認

1.記事の背景と目的

  • CursorでのFlutter開発におけるiOS側でのビルドスキームの実装方法を紹介します
  • android側については触れませんのでご注意ください
  • Cursorの開発を弊社でも導入を進めていく中で自身がかなり詰まったこと、今後より簡単に管理できないかを考えるために記事として残しておきます。

2.スキームとは何か?

  • そもそもスキームとは、iOSアプリでいうとXcodeでアプリをビルド・実行・テストするための設定のまとまりを指します。
    もう少しわかりやすく説明すると、
    自身でカスタマイズした設定でアプリを動かしたいプリセットのようなものです。

スキームと紐づいているものは主に下記があたります。

  • 使用するBuild Configuration(例:Debug / Release / Staging)
  • ターゲット(アプリ本体、ウィジェット、拡張など)
  • ビルド後の挙動(例:ユニットテストの自動実行)
  • 実行時の引数や環境変数

一度設定しておけば、ボタンやコマンドで簡単に切り替えることができます。
gitにあげておけばチームのメンバーも簡単に使用できるようになるのでかなり便利で、チームで開発をする中では必須の機能になっています

3.実装方法の概要

  • ざっくりわけて2つの実装が必要になります

Cursorでの実装
Xcodeでの実装

全体の流れとしては、

  • Cursor側でlaunch.jsonでビルドしたいconfigurationsを記述する
  • Xcodeでlaunch.jsonで設定したconfigurationsに対応するスキームを作成する
  • Cursor側でビルド環境を管理するクラスを作成して、どのスキームでビルドされたかを管理する

です。

では早速実装に入りましょう!

4.Flutter(Cursor)側での実装

launch.jsonの作成

今回は、stagingとdebugの環境の2つを作成することとします。

まず、.vscode配下にlaunch.jsonのfileを作成しましょう


launch.json

作成できたら、下記のコードを記載しましょう

launch.json
{
    "version": "0.2.0",
    "configurations": []
  }  

上記が枠組みとなり、
configurationsの中に配列としてスキームを定義し、使用することができます。

スキームの設定で必要になるのは下記の項目です。

name request type args
スキーム名 デバッグの開始方法 アプリの種類 起動時のコマンドライン引数

です

実際に作成したものは下記になります。

launch.json
{
    "version": "0.2.0",
    "configurations": [
      {
        "name": "staging",
        "request": "launch",
        "type": "dart",
        "args": [
          "--dart-define=FLAVOR=staging",
        ]
      },
      {
        "name": "debug",
        "request": "launch",
        "type": "dart",
        "args": [
          "--dart-define=FLAVOR=debug",
        ]
      },
    ]
  }

以上でcursor側でのconfiguration(スキーム)の設定は以上になります。
すでに実行はできる状態になっているので、確認してみましょう。

実行とデバッグタブに移動して、各スキームが選択できることを確認してください。

5.Xcode側の実装

スキームの作成

では次に、Cursorで先程実装したconfigurationsでビルドができるよう、スキームを設定していきましょう

Xcodeを開き、下記の画像を参考にedit schemeを開きます。


edit sheme

Duplicate Scheme を選択


Runner.xcodeproj

Configurationsの作成

作成したスキームのConfigurationsを作成しましょう。

これをすることで、Xcodeのrunnerで特定のスキームでflutterアプリをrunさせることができ、アプリをキルしても再度立ち上げることが可能になり、実機でのテスト確認が容易になります。

RunnerのConfigurationsから、+ボタンを押し、Duplicate 〇〇を押します(なんでもいいです)

コピーのものが作成されるので、Release-staging, Release-debugの2つを作成しましょう。

できたらこんな感じになります

Configurationsが参照されるようにする

edit schemeを開き、左の各項目のBuild Configurationsをそれぞれ
Release-staging, Release-debug
に設定しましょう

以上で設定の部分は終了です!
最後に実際にビルドしてみて挙動を確認してみましょう!

6.実装後の動作確認

動作確認

cursorのスキームから、ビルドしたいスキームを選択して実行

flutter側で下記のコードを実装
下記のコードで、どのスキームでビルドされているかを取得することができます。

AppConfig.dart
final flavor = const String.fromEnvironment('FLAVOR', defaultValue: 'release');

アプリのビルド設定を持つクラス(今回はAppConfigクラス)を作成しスキームに応じてprintを変更する処理を記載してみましょう!(一部抜粋)

AppConfig.dart
    switch (flavor) {
      case 'staging':
        print('✅️STG環境でビルドされました');
        return AppConfig(
          apiBaseUrl: CustomUrl.apiStgEndPoint,
          environment: Environment.stg,
        );

実際にcursor上でビルドしてみると、、、

できた!無事成功しましたね☺️

最後に

状況に応じたアプリのインストール方法

開発のデバッグ時、実機での動作確認時に応じてアプリのインストール方法を変更できるのでその方法を紹介します!

開発中のデバッグ時(ホットリロード、ホットリスタートやブレイクポイントなどが使用できる)

1.cursorのスキームから、ビルドしたいスキームを選択して実行

実機での動作確認がメインの時

1.スキームに応じたコマンドを実行

flutter build ios --flavor=debug --dart-define=FLAVOR=debug
flutter build ios --flavor=staging --dart-define=FLAVOR=staging

2.Xcodeを開き、スキームをそれぞれのものに変更。
3.Xcode上でrun

こちらでのビルド方法は、アプリをキルした時再度runしなくてもアプリを立ち上げることができます!
実機での動作確認時にかなり有効です✨️

以上です!
なかなか記事が見つからないのと、VSCode系での開発が初めてだったので少し手こずりました、、、
是非参考にしてみてください!

Jambo Tech Blog

Discussion