Flutterで新しいアプリを作るときの手順まとめ
まっさらな状態からFlutterでiOS向けとウェブアプリを構築するまでの手順の備忘録。
Firebaseも使う
Bundle IDにアプリ名を含ませるつもりならIdentifiersを適当に作り、その名前が使えるのかアプリを作ってしまう
App Check で使うのでApple IDをメモしておく
Firebaseのプロジェクトを作る
XXX-prod
と XXX-stg
Blaze プランに変更する
必要に応じてHostingからカスタムドメインを接続
接続の確認と証明書の作成に時間がかかるので先にやっとく
プロジェクトルートディレクトリを作って、app
を作る。
xxx.code-workspace
を追加する。
{
"folders": [
{
"path": "."
},
{
"path": "app"
},
{
"path": "firebase"
}
],
"settings": {
"editor.tabSize": 2
}
}
flutter create \
--platforms ios,web \
--template app \
--org dev.kingu \
--project-name FIXME \
app
pubspec.yaml
を掃除して、 firebase_core
を追加
Flutterバージョンを固定
environment:
sdk: 3.6.0
flutter: 3.27.1
buildは自動で採番するので削除
version: 1.0.0
Runner.xcworkspace
を開いて Automatically manage signingがうまくいってるか確認する
flutter build ios --config-only
- Schema configurations
- Bundle Identifier suffix
- Podfile
- xcconfig
Podfile
project 'Runner', {
'Debug-stg' => :debug,
'Debug-prod' => :debug,
'Profile-stg' => :release,
'Profile-prod' => :release,
'Release-stg' => :release,
'Release-prod' => :release,
}
# Uncomment this line to define a global platform for your project
platform :ios, '17.6'
xcconfig
Info.plist
- Bundle display name
- Bundle name
- ITSAppUsesNonExemptEncryption
app/scripts
ディレクトリに追加して、修正して、実行
Firebaseにアプリが作成されるので、Apple ID
と チームID
を追加してApp Check有効化
Web向けにreCAPTCHAを設定して秘密鍵を追加
ビルドできるかチェック
flutter build ios --flavor stg
flutter build ios --flavor prod
app
以下で実行してFlutterのバージョンを固定
fvm use --pin stable
-
app/scripts/*.sh
をコピー -
analysis_options.yaml
をコピー -
build.yaml
をコピー
TODO
pubspec.yaml
に必要なものを追加
dart pub add slang slang_flutter dev:slang_build_runner
Firestoreを使うなら、target 'Runner' do
の中にプレビルド版を入れる
pod 'FirebaseFirestore',
:git => 'https://github.com/invertase/firestore-ios-sdk-frameworks.git',
:tag => '11.6.0'
-
flutterfire_configure.sh
実行してupload-crashlytics-symbols
を追加 - ビルドしてPodfile.lockを更新
アイコン作って差し替え
app/.vscode/launch.json
を作ってアイコンの確認
{
"version": "0.2.0",
"configurations": [
{
"name": "stg",
"request": "launch",
"type": "dart",
"args": [
"--flavor",
"stg",
],
"program": "lib/main.dart"
},
{
"name": "prod",
"request": "launch",
"type": "dart",
"args": [
"--flavor",
"prod",
],
"program": "lib/main.dart"
},
]
}
Firebase コンソールでFirestoreのデータベースを作成
App CheckでFirestoreなど有効にする
firebase init
でセットアップ
OIDCのセットアップ
-
dependabot.yml
をコピー - GitHub Actionsのワークフローをコピー
- Xcode Cloudの動作確認
- Cloud Functionsのセットアップ
- 手動でfirebase deployしてチェック
Firebaseの"統合"を設定する
Slackとの連携など