1
- # .github/workflows/build.yml
2
-
3
1
name : Android Build
4
2
5
3
# ワークフローが実行されるトリガーを指定
29
27
type : boolean
30
28
required : true
31
29
default : true
30
+ build_type : # <--- 変更点: ビルドタイプを選択する入力を追加
31
+ description : ' APK Build Type (split per ABI or single universal)'
32
+ type : choice
33
+ required : true
34
+ options :
35
+ - split
36
+ - single
37
+ default : ' split'
32
38
33
39
jobs :
34
40
build :
35
41
# 実行環境としてUbuntuの最新版を使用
36
42
runs-on : ubuntu-latest
37
43
outputs : # outputs を定義して他のジョブから参照可能にする
38
44
version : ${{ steps.get_version.outputs.version }}
45
+ # <--- 変更点: deployジョブでビルドタイプを判定するためにoutputsを追加
46
+ build_type : ${{ github.event.inputs.build_type || 'split' }}
39
47
40
48
steps :
41
49
# Step 1: リポジトリのコードをチェックアウト
42
50
- name : Checkout code
43
- uses : actions/checkout@v4 # 最新バージョンを確認してください
51
+ uses : actions/checkout@v4
44
52
45
- # Step 2: Java Development Kit (JDK) をセットアップ (Androidビルドに必要)
53
+ # Step 2: Java Development Kit (JDK) をセットアップ
46
54
- name : Set up JDK 21
47
- uses : actions/setup-java@v4 # 最新バージョンを確認してください
55
+ uses : actions/setup-java@v4
48
56
with :
49
- distribution : ' temurin' # または他のディストリビューション
50
- java-version : ' 21' # プロジェクトに必要なJavaバージョンを指定
57
+ distribution : ' temurin'
58
+ java-version : ' 21'
51
59
52
60
# Step 3: Flutter SDK をセットアップ
53
- # (オプション) プロジェクトルートに .flutter-version ファイルがあればそのバージョンが使われます
54
61
- name : Set up Flutter
55
- uses : subosito/flutter-action@v2 # 最新バージョンを確認してください
62
+ uses : subosito/flutter-action@v2
56
63
with :
57
- channel : ' stable' # stable, beta, dev, master から選択
58
- # flutter-version: '3.x.x' # 特定のバージョンを指定する場合
64
+ channel : ' stable'
59
65
60
66
# Step 4: Flutterの依存関係を取得
61
67
- name : Get Flutter dependencies
@@ -65,26 +71,43 @@ jobs:
65
71
# - name: Clean Flutter project
66
72
# run: flutter clean
67
73
68
- # Step 6: Android APK をビルド (--release オプションでリリースモード)
69
- # --split-per-abi をつけるとCPUアーキテクチャごとにAPKが分割されます
70
- - name : Build APK
74
+ # Step 6: Android APK をビルド
75
+ # <--- 変更点: 以下の2つのステップでビルド方法を分岐 --- >
76
+
77
+ # 分割APKをビルド (デフォルトまたは手動で'split'を選択した場合)
78
+ - name : Build APK (Split per ABI)
79
+ if : ${{ (github.event.inputs.build_type || 'split') == 'split' }}
71
80
run : flutter build apk --release --split-per-abi --build-number=${{ github.run_number }}
72
- # 単一のAPKが必要な場合は: flutter build apk --release
73
81
82
+ # 単一APKをビルド (手動で'single'を選択した場合)
83
+ - name : Build APK (Single Universal)
84
+ if : ${{ github.event.inputs.build_type == 'single' }}
85
+ run : flutter build apk --release --build-number=${{ github.run_number }}
86
+
74
87
# Step 7: pubspec.yaml からバージョンを読み取る
75
88
- name : Read version from pubspec.yaml
76
89
id : get_version
77
90
run : |
78
91
echo "version=$(grep '^version: ' pubspec.yaml | sed 's/version: //')" >> $GITHUB_OUTPUT
79
92
80
93
# Step 8: ビルドされたAPKを成果物としてアップロード
81
- # --split-per-abi を使用した場合、複数のAPKが生成されるためワイルドカードを使用
82
- - name : Upload APK Artifact
94
+ # <--- 変更点: 以下の2つのステップでアップロードするファイルを分岐 --- >
95
+
96
+ # 分割APKをアップロード
97
+ - name : Upload Split APKs Artifact
98
+ if : ${{ (github.event.inputs.build_type || 'split') == 'split' }}
83
99
uses : actions/upload-artifact@v4
84
100
with :
85
101
name : release-apk # deploy ジョブで参照するアーティファクト名
86
102
path : build/app/outputs/flutter-apk/app-*-release.apk
87
- # 単一APKの場合のパス例: build/app/outputs/apk/release/app-release.apk
103
+
104
+ # 単一APKをアップロード
105
+ - name : Upload Single APK Artifact
106
+ if : ${{ github.event.inputs.build_type == 'single' }}
107
+ uses : actions/upload-artifact@v4
108
+ with :
109
+ name : release-apk
110
+ path : build/app/outputs/apk/release/app-release.apk
88
111
89
112
deploy :
90
113
runs-on : ubuntu-latest
@@ -102,13 +125,26 @@ jobs:
102
125
name : release-apk # build ジョブでアップロードされたアーティファクト名
103
126
path : artifacts/apk/ # ダウンロード先のディレクトリ
104
127
105
- - name : Release
128
+ # <--- 変更点: 以下の2つのステップでリリースするファイルを分岐 --- >
129
+
130
+ # 分割APKをリリース
131
+ - name : Release with Split APKs
132
+ if : ${{ needs.build.outputs.build_type == 'split' }}
106
133
uses : softprops/action-gh-release@v2
107
134
with :
108
- tag_name : ${{ needs.build.outputs.version }} # build ジョブからバージョンを取得
135
+ tag_name : ${{ needs.build.outputs.version }}
109
136
draft : false
110
137
prerelease : false
111
- generate_release_notes : ${{ github.event.inputs.generate_release_notes }} # リリースノート生成のオプション
112
- files : artifacts/apk/app-*-release.apk # ダウンロードしたAPKファイルを指定
113
-
138
+ generate_release_notes : ${{ github.event.inputs.generate_release_notes }}
139
+ files : artifacts/apk/app-*-release.apk # 分割APKのパス
114
140
141
+ # 単一APKをリリース
142
+ - name : Release with Single APK
143
+ if : ${{ needs.build.outputs.build_type == 'single' }}
144
+ uses : softprops/action-gh-release@v2
145
+ with :
146
+ tag_name : ${{ needs.build.outputs.version }}
147
+ draft : false
148
+ prerelease : false
149
+ generate_release_notes : ${{ github.event.inputs.generate_release_notes }}
150
+ files : artifacts/apk/app-release.apk # 単一APKのパス
0 commit comments