ann-flutter-flavor 0.1.6
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +7 -0
- data/.gitignore +1 -0
- data/Gemfile +3 -0
- data/Gemfile.lock +271 -0
- data/README.md +283 -0
- data/Rakefile +6 -0
- data/ann-flutter-flavor.gemspec +25 -0
- data/lib/ann-flutter-flavor.rb +10 -0
- data/lib/ann_flutter_flavor/version.rb +3 -0
- data/lib/fastlane/plugin/ann_flutter_flavor/actions/ann_compile_build_action.rb +219 -0
- data/lib/fastlane/plugin/ann_flutter_flavor/actions/ann_download_from_app_store_action.rb +183 -0
- data/lib/fastlane/plugin/ann_flutter_flavor/actions/ann_download_from_play_store_action.rb +168 -0
- data/lib/fastlane/plugin/ann_flutter_flavor/actions/ann_emulators_action.rb +180 -0
- data/lib/fastlane/plugin/ann_flutter_flavor/actions/ann_run_tests_action.rb +128 -0
- data/lib/fastlane/plugin/ann_flutter_flavor/actions/ann_setup_action.rb +137 -0
- data/lib/fastlane/plugin/ann_flutter_flavor/actions/ann_upload_to_app_store_action.rb +280 -0
- data/lib/fastlane/plugin/ann_flutter_flavor/actions/ann_upload_to_firebase_action.rb +199 -0
- data/lib/fastlane/plugin/ann_flutter_flavor/actions/ann_upload_to_play_store_action.rb +248 -0
- data/lib/fastlane/plugin/ann_flutter_flavor/helper/lanes_android.rb +120 -0
- data/lib/fastlane/plugin/ann_flutter_flavor/helper/lanes_annai.rb +502 -0
- data/lib/fastlane/plugin/ann_flutter_flavor/helper/lanes_ios.rb +157 -0
- data/lib/fastlane/plugin/ann_flutter_flavor/helper/lanes_setup.rb +161 -0
- data/lib/fastlane/plugin/ann_flutter_flavor/helper/podspec_bridge.rb +153 -0
- data/lib/fastlane/plugin/ann_flutter_flavor/helper/test_integration.rb +346 -0
- data/lib/fastlane/plugin/ann_flutter_flavor/helper/utils_project_config.rb +102 -0
- data/lib/fastlane/plugin/ann_flutter_flavor/helper/utils_spec_loader.rb +363 -0
- data/lib/fastlane/plugin/ann_flutter_flavor/helper/utils_status.rb +115 -0
- data/lib/fastlane/plugin/ann_flutter_flavor.rb +23 -0
- data/plugin_manager.sh +140 -0
- metadata +113 -0
checksums.yaml
ADDED
|
@@ -0,0 +1,7 @@
|
|
|
1
|
+
---
|
|
2
|
+
SHA256:
|
|
3
|
+
metadata.gz: 984f73b5f299d07b74007d531c54f535f3d9dd5673c8dfe2c113a83fa04eddbc
|
|
4
|
+
data.tar.gz: 11e4d5d85dc16b3c25bf5843f47ad86c1f71d5501292c92a82081d9a7167fb9b
|
|
5
|
+
SHA512:
|
|
6
|
+
metadata.gz: cc98fcdf4a4c1ea4292c53cc7cc5257128f95299718e4b07b291e984c20014f8e29bfb19734286a0466d6897543aa817bc81c1e4b50b35a5c171ab6cb94b1bda
|
|
7
|
+
data.tar.gz: 8823491564fa0e1f851efa2dc2badeefd07784b518af0ea9514a5d22481c151733865c6b0d4b86c633b428c6a30d70914446afdb66aea2ea730b88871b82410b
|
data/.gitignore
ADDED
|
@@ -0,0 +1 @@
|
|
|
1
|
+
/pkg/
|
data/Gemfile
ADDED
data/Gemfile.lock
ADDED
|
@@ -0,0 +1,271 @@
|
|
|
1
|
+
PATH
|
|
2
|
+
remote: .
|
|
3
|
+
specs:
|
|
4
|
+
annai-flutter-flavor (0.1.2)
|
|
5
|
+
fastlane (>= 2.232.2)
|
|
6
|
+
|
|
7
|
+
GEM
|
|
8
|
+
remote: https://rubygems.org/
|
|
9
|
+
specs:
|
|
10
|
+
CFPropertyList (3.0.8)
|
|
11
|
+
abbrev (0.1.2)
|
|
12
|
+
addressable (2.8.8)
|
|
13
|
+
public_suffix (>= 2.0.2, < 8.0)
|
|
14
|
+
artifactory (3.0.17)
|
|
15
|
+
atomos (0.1.3)
|
|
16
|
+
aws-eventstream (1.4.0)
|
|
17
|
+
aws-partitions (1.1220.0)
|
|
18
|
+
aws-sdk-core (3.242.0)
|
|
19
|
+
aws-eventstream (~> 1, >= 1.3.0)
|
|
20
|
+
aws-partitions (~> 1, >= 1.992.0)
|
|
21
|
+
aws-sigv4 (~> 1.9)
|
|
22
|
+
base64
|
|
23
|
+
bigdecimal
|
|
24
|
+
jmespath (~> 1, >= 1.6.1)
|
|
25
|
+
logger
|
|
26
|
+
aws-sdk-kms (1.122.0)
|
|
27
|
+
aws-sdk-core (~> 3, >= 3.241.4)
|
|
28
|
+
aws-sigv4 (~> 1.5)
|
|
29
|
+
aws-sdk-s3 (1.213.0)
|
|
30
|
+
aws-sdk-core (~> 3, >= 3.241.4)
|
|
31
|
+
aws-sdk-kms (~> 1)
|
|
32
|
+
aws-sigv4 (~> 1.5)
|
|
33
|
+
aws-sigv4 (1.12.1)
|
|
34
|
+
aws-eventstream (~> 1, >= 1.0.2)
|
|
35
|
+
babosa (1.0.4)
|
|
36
|
+
base64 (0.2.0)
|
|
37
|
+
benchmark (0.5.0)
|
|
38
|
+
bigdecimal (4.0.1)
|
|
39
|
+
claide (1.1.0)
|
|
40
|
+
coderay (1.1.3)
|
|
41
|
+
colored (1.2)
|
|
42
|
+
colored2 (3.1.2)
|
|
43
|
+
commander (4.6.0)
|
|
44
|
+
highline (~> 2.0.0)
|
|
45
|
+
csv (3.3.5)
|
|
46
|
+
declarative (0.0.20)
|
|
47
|
+
diff-lcs (1.6.2)
|
|
48
|
+
digest-crc (0.7.0)
|
|
49
|
+
rake (>= 12.0.0, < 14.0.0)
|
|
50
|
+
domain_name (0.6.20240107)
|
|
51
|
+
dotenv (2.8.1)
|
|
52
|
+
emoji_regex (3.2.3)
|
|
53
|
+
excon (0.112.0)
|
|
54
|
+
faraday (1.10.5)
|
|
55
|
+
faraday-em_http (~> 1.0)
|
|
56
|
+
faraday-em_synchrony (~> 1.0)
|
|
57
|
+
faraday-excon (~> 1.1)
|
|
58
|
+
faraday-httpclient (~> 1.0)
|
|
59
|
+
faraday-multipart (~> 1.0)
|
|
60
|
+
faraday-net_http (~> 1.0)
|
|
61
|
+
faraday-net_http_persistent (~> 1.0)
|
|
62
|
+
faraday-patron (~> 1.0)
|
|
63
|
+
faraday-rack (~> 1.0)
|
|
64
|
+
faraday-retry (~> 1.0)
|
|
65
|
+
ruby2_keywords (>= 0.0.4)
|
|
66
|
+
faraday-cookie_jar (0.0.8)
|
|
67
|
+
faraday (>= 0.8.0)
|
|
68
|
+
http-cookie (>= 1.0.0)
|
|
69
|
+
faraday-em_http (1.0.0)
|
|
70
|
+
faraday-em_synchrony (1.0.1)
|
|
71
|
+
faraday-excon (1.1.0)
|
|
72
|
+
faraday-httpclient (1.0.1)
|
|
73
|
+
faraday-multipart (1.2.0)
|
|
74
|
+
multipart-post (~> 2.0)
|
|
75
|
+
faraday-net_http (1.0.2)
|
|
76
|
+
faraday-net_http_persistent (1.2.0)
|
|
77
|
+
faraday-patron (1.0.0)
|
|
78
|
+
faraday-rack (1.0.0)
|
|
79
|
+
faraday-retry (1.0.3)
|
|
80
|
+
faraday_middleware (1.2.1)
|
|
81
|
+
faraday (~> 1.0)
|
|
82
|
+
fastimage (2.4.0)
|
|
83
|
+
fastlane (2.232.2)
|
|
84
|
+
CFPropertyList (>= 2.3, < 4.0.0)
|
|
85
|
+
abbrev (~> 0.1.2)
|
|
86
|
+
addressable (>= 2.8, < 3.0.0)
|
|
87
|
+
artifactory (~> 3.0)
|
|
88
|
+
aws-sdk-s3 (~> 1.197)
|
|
89
|
+
babosa (>= 1.0.3, < 2.0.0)
|
|
90
|
+
base64 (~> 0.2.0)
|
|
91
|
+
benchmark (>= 0.1.0)
|
|
92
|
+
bundler (>= 1.17.3, < 5.0.0)
|
|
93
|
+
colored (~> 1.2)
|
|
94
|
+
commander (~> 4.6)
|
|
95
|
+
csv (~> 3.3)
|
|
96
|
+
dotenv (>= 2.1.1, < 3.0.0)
|
|
97
|
+
emoji_regex (>= 0.1, < 4.0)
|
|
98
|
+
excon (>= 0.71.0, < 1.0.0)
|
|
99
|
+
faraday (~> 1.0)
|
|
100
|
+
faraday-cookie_jar (~> 0.0.6)
|
|
101
|
+
faraday_middleware (~> 1.0)
|
|
102
|
+
fastimage (>= 2.1.0, < 3.0.0)
|
|
103
|
+
fastlane-sirp (>= 1.0.0)
|
|
104
|
+
gh_inspector (>= 1.1.2, < 2.0.0)
|
|
105
|
+
google-apis-androidpublisher_v3 (~> 0.3)
|
|
106
|
+
google-apis-playcustomapp_v1 (~> 0.1)
|
|
107
|
+
google-cloud-env (>= 1.6.0, <= 2.1.1)
|
|
108
|
+
google-cloud-storage (~> 1.31)
|
|
109
|
+
highline (~> 2.0)
|
|
110
|
+
http-cookie (~> 1.0.5)
|
|
111
|
+
json (< 3.0.0)
|
|
112
|
+
jwt (>= 2.1.0, < 3)
|
|
113
|
+
logger (>= 1.6, < 2.0)
|
|
114
|
+
mini_magick (>= 4.9.4, < 5.0.0)
|
|
115
|
+
multipart-post (>= 2.0.0, < 3.0.0)
|
|
116
|
+
mutex_m (~> 0.3.0)
|
|
117
|
+
naturally (~> 2.2)
|
|
118
|
+
nkf (~> 0.2.0)
|
|
119
|
+
optparse (>= 0.1.1, < 1.0.0)
|
|
120
|
+
ostruct (>= 0.1.0)
|
|
121
|
+
plist (>= 3.1.0, < 4.0.0)
|
|
122
|
+
rubyzip (>= 2.0.0, < 3.0.0)
|
|
123
|
+
security (= 0.1.5)
|
|
124
|
+
simctl (~> 1.6.3)
|
|
125
|
+
terminal-notifier (>= 2.0.0, < 3.0.0)
|
|
126
|
+
terminal-table (~> 3)
|
|
127
|
+
tty-screen (>= 0.6.3, < 1.0.0)
|
|
128
|
+
tty-spinner (>= 0.8.0, < 1.0.0)
|
|
129
|
+
word_wrap (~> 1.0.0)
|
|
130
|
+
xcodeproj (>= 1.13.0, < 2.0.0)
|
|
131
|
+
xcpretty (~> 0.4.1)
|
|
132
|
+
xcpretty-travis-formatter (>= 0.0.3, < 2.0.0)
|
|
133
|
+
fastlane-sirp (1.0.0)
|
|
134
|
+
sysrandom (~> 1.0)
|
|
135
|
+
gh_inspector (1.1.3)
|
|
136
|
+
google-apis-androidpublisher_v3 (0.96.0)
|
|
137
|
+
google-apis-core (>= 0.15.0, < 2.a)
|
|
138
|
+
google-apis-core (0.18.0)
|
|
139
|
+
addressable (~> 2.5, >= 2.5.1)
|
|
140
|
+
googleauth (~> 1.9)
|
|
141
|
+
httpclient (>= 2.8.3, < 3.a)
|
|
142
|
+
mini_mime (~> 1.0)
|
|
143
|
+
mutex_m
|
|
144
|
+
representable (~> 3.0)
|
|
145
|
+
retriable (>= 2.0, < 4.a)
|
|
146
|
+
google-apis-iamcredentials_v1 (0.26.0)
|
|
147
|
+
google-apis-core (>= 0.15.0, < 2.a)
|
|
148
|
+
google-apis-playcustomapp_v1 (0.17.0)
|
|
149
|
+
google-apis-core (>= 0.15.0, < 2.a)
|
|
150
|
+
google-apis-storage_v1 (0.61.0)
|
|
151
|
+
google-apis-core (>= 0.15.0, < 2.a)
|
|
152
|
+
google-cloud-core (1.8.0)
|
|
153
|
+
google-cloud-env (>= 1.0, < 3.a)
|
|
154
|
+
google-cloud-errors (~> 1.0)
|
|
155
|
+
google-cloud-env (2.1.1)
|
|
156
|
+
faraday (>= 1.0, < 3.a)
|
|
157
|
+
google-cloud-errors (1.5.0)
|
|
158
|
+
google-cloud-storage (1.58.0)
|
|
159
|
+
addressable (~> 2.8)
|
|
160
|
+
digest-crc (~> 0.4)
|
|
161
|
+
google-apis-core (>= 0.18, < 2)
|
|
162
|
+
google-apis-iamcredentials_v1 (~> 0.18)
|
|
163
|
+
google-apis-storage_v1 (>= 0.42)
|
|
164
|
+
google-cloud-core (~> 1.6)
|
|
165
|
+
googleauth (~> 1.9)
|
|
166
|
+
mini_mime (~> 1.0)
|
|
167
|
+
googleauth (1.11.2)
|
|
168
|
+
faraday (>= 1.0, < 3.a)
|
|
169
|
+
google-cloud-env (~> 2.1)
|
|
170
|
+
jwt (>= 1.4, < 3.0)
|
|
171
|
+
multi_json (~> 1.11)
|
|
172
|
+
os (>= 0.9, < 2.0)
|
|
173
|
+
signet (>= 0.16, < 2.a)
|
|
174
|
+
highline (2.0.3)
|
|
175
|
+
http-cookie (1.0.8)
|
|
176
|
+
domain_name (~> 0.5)
|
|
177
|
+
httpclient (2.9.0)
|
|
178
|
+
mutex_m
|
|
179
|
+
io-console (0.8.2)
|
|
180
|
+
jmespath (1.6.2)
|
|
181
|
+
json (2.18.1)
|
|
182
|
+
jwt (2.10.2)
|
|
183
|
+
base64
|
|
184
|
+
logger (1.7.0)
|
|
185
|
+
method_source (1.1.0)
|
|
186
|
+
mini_magick (4.13.2)
|
|
187
|
+
mini_mime (1.1.5)
|
|
188
|
+
multi_json (1.19.1)
|
|
189
|
+
multipart-post (2.4.1)
|
|
190
|
+
mutex_m (0.3.0)
|
|
191
|
+
nanaimo (0.4.0)
|
|
192
|
+
naturally (2.3.0)
|
|
193
|
+
nkf (0.2.0)
|
|
194
|
+
optparse (0.8.1)
|
|
195
|
+
os (1.1.4)
|
|
196
|
+
ostruct (0.6.3)
|
|
197
|
+
plist (3.7.2)
|
|
198
|
+
pry (0.16.0)
|
|
199
|
+
coderay (~> 1.1)
|
|
200
|
+
method_source (~> 1.0)
|
|
201
|
+
reline (>= 0.6.0)
|
|
202
|
+
public_suffix (7.0.2)
|
|
203
|
+
rake (13.3.1)
|
|
204
|
+
reline (0.6.3)
|
|
205
|
+
io-console (~> 0.5)
|
|
206
|
+
representable (3.2.0)
|
|
207
|
+
declarative (< 0.1.0)
|
|
208
|
+
trailblazer-option (>= 0.1.1, < 0.2.0)
|
|
209
|
+
uber (< 0.2.0)
|
|
210
|
+
retriable (3.2.1)
|
|
211
|
+
rexml (3.4.4)
|
|
212
|
+
rouge (3.28.0)
|
|
213
|
+
rspec (3.4.0)
|
|
214
|
+
rspec-core (~> 3.4.0)
|
|
215
|
+
rspec-expectations (~> 3.4.0)
|
|
216
|
+
rspec-mocks (~> 3.4.0)
|
|
217
|
+
rspec-core (3.4.4)
|
|
218
|
+
rspec-support (~> 3.4.0)
|
|
219
|
+
rspec-expectations (3.4.0)
|
|
220
|
+
diff-lcs (>= 1.2.0, < 2.0)
|
|
221
|
+
rspec-support (~> 3.4.0)
|
|
222
|
+
rspec-mocks (3.4.1)
|
|
223
|
+
diff-lcs (>= 1.2.0, < 2.0)
|
|
224
|
+
rspec-support (~> 3.4.0)
|
|
225
|
+
rspec-support (3.4.1)
|
|
226
|
+
ruby2_keywords (0.0.5)
|
|
227
|
+
rubyzip (2.4.1)
|
|
228
|
+
security (0.1.5)
|
|
229
|
+
signet (0.21.0)
|
|
230
|
+
addressable (~> 2.8)
|
|
231
|
+
faraday (>= 0.17.5, < 3.a)
|
|
232
|
+
jwt (>= 1.5, < 4.0)
|
|
233
|
+
multi_json (~> 1.10)
|
|
234
|
+
simctl (1.6.10)
|
|
235
|
+
CFPropertyList
|
|
236
|
+
naturally
|
|
237
|
+
sysrandom (1.0.5)
|
|
238
|
+
terminal-notifier (2.0.0)
|
|
239
|
+
terminal-table (3.0.2)
|
|
240
|
+
unicode-display_width (>= 1.1.1, < 3)
|
|
241
|
+
trailblazer-option (0.1.2)
|
|
242
|
+
tty-cursor (0.7.1)
|
|
243
|
+
tty-screen (0.8.2)
|
|
244
|
+
tty-spinner (0.9.3)
|
|
245
|
+
tty-cursor (~> 0.7)
|
|
246
|
+
uber (0.1.0)
|
|
247
|
+
unicode-display_width (2.6.0)
|
|
248
|
+
word_wrap (1.0.0)
|
|
249
|
+
xcodeproj (1.27.0)
|
|
250
|
+
CFPropertyList (>= 2.3.3, < 4.0)
|
|
251
|
+
atomos (~> 0.1.3)
|
|
252
|
+
claide (>= 1.0.2, < 2.0)
|
|
253
|
+
colored2 (~> 3.1)
|
|
254
|
+
nanaimo (~> 0.4.0)
|
|
255
|
+
rexml (>= 3.3.6, < 4.0)
|
|
256
|
+
xcpretty (0.4.1)
|
|
257
|
+
rouge (~> 3.28.0)
|
|
258
|
+
xcpretty-travis-formatter (1.0.1)
|
|
259
|
+
xcpretty (~> 0.2, >= 0.0.7)
|
|
260
|
+
|
|
261
|
+
PLATFORMS
|
|
262
|
+
arm64-darwin-25
|
|
263
|
+
ruby
|
|
264
|
+
|
|
265
|
+
DEPENDENCIES
|
|
266
|
+
annai-flutter-flavor!
|
|
267
|
+
pry
|
|
268
|
+
rspec (~> 3.4.0)
|
|
269
|
+
|
|
270
|
+
BUNDLED WITH
|
|
271
|
+
2.7.2
|
data/README.md
ADDED
|
@@ -0,0 +1,283 @@
|
|
|
1
|
+
# ANN Flutter Flavor — Fastlane Plugin
|
|
2
|
+
|
|
3
|
+
[](https://rubygems.org/gems/ann-flutter-flavor)
|
|
4
|
+
[](https://opensource.org/licenses/MIT)
|
|
5
|
+
|
|
6
|
+
Fastlane plugin that reads `annspec.yaml` and provides lanes for building, signing, uploading and testing all Flutter flavors across Android, iOS and Web — without writing repetitive Fastfile boilerplate for each flavor.
|
|
7
|
+
|
|
8
|
+
---
|
|
9
|
+
|
|
10
|
+
## Installation
|
|
11
|
+
|
|
12
|
+
Add to your `Pluginfile`:
|
|
13
|
+
|
|
14
|
+
```ruby
|
|
15
|
+
gem 'ann-flutter-flavor'
|
|
16
|
+
```
|
|
17
|
+
|
|
18
|
+
Then run:
|
|
19
|
+
|
|
20
|
+
```bash
|
|
21
|
+
fastlane add_plugin ann_flutter_flavor
|
|
22
|
+
# or
|
|
23
|
+
bundle install
|
|
24
|
+
```
|
|
25
|
+
|
|
26
|
+
Or add directly via Fastlane:
|
|
27
|
+
|
|
28
|
+
```bash
|
|
29
|
+
fastlane add_plugin ann_flutter_flavor
|
|
30
|
+
```
|
|
31
|
+
|
|
32
|
+
---
|
|
33
|
+
|
|
34
|
+
## Quick start
|
|
35
|
+
|
|
36
|
+
```ruby
|
|
37
|
+
# Fastfile
|
|
38
|
+
lane :deploy_android do
|
|
39
|
+
ann_compile_build(platform: :android, build_config: "release")
|
|
40
|
+
ann_upload_to_play_store(platform: :android)
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
lane :deploy_ios do
|
|
44
|
+
ann_compile_build(platform: :ios, build_config: "release")
|
|
45
|
+
ann_upload_to_app_store(platform: :ios)
|
|
46
|
+
end
|
|
47
|
+
```
|
|
48
|
+
|
|
49
|
+
Run a lane:
|
|
50
|
+
|
|
51
|
+
```bash
|
|
52
|
+
bundle exec fastlane deploy_android
|
|
53
|
+
bundle exec fastlane deploy_ios
|
|
54
|
+
```
|
|
55
|
+
|
|
56
|
+
---
|
|
57
|
+
|
|
58
|
+
## Actions
|
|
59
|
+
|
|
60
|
+
### `ann_compile_build` — Build all flavors for a platform
|
|
61
|
+
|
|
62
|
+
Builds every flavor defined in `annspec.yaml` for a given platform. Supports building a subset of flavors via the `flavor` parameter.
|
|
63
|
+
|
|
64
|
+
```ruby
|
|
65
|
+
ann_compile_build(
|
|
66
|
+
platform: :android, # :ios, :android, or :web
|
|
67
|
+
build_config: "release", # "debug", "profile", "release"
|
|
68
|
+
sub_command: "appbundle", # "apk", "appbundle", "ipa", "web"
|
|
69
|
+
flavor: "production", # Comma-separated. Omit to build ALL flavors
|
|
70
|
+
clean: false, # Run flutter clean before building
|
|
71
|
+
main_file: "lib/main.dart", # Default main file (overridden per-flavor in spec)
|
|
72
|
+
skip_sound_null_safety: false,
|
|
73
|
+
skip_code_sign: false,
|
|
74
|
+
export_options_plist: "", # iOS only — path to ExportOptions.plist
|
|
75
|
+
additional_parameter: "", # Extra flutter build flags
|
|
76
|
+
spec_file: nil # Custom path to annspec.yaml (optional)
|
|
77
|
+
)
|
|
78
|
+
```
|
|
79
|
+
|
|
80
|
+
**Examples:**
|
|
81
|
+
|
|
82
|
+
```ruby
|
|
83
|
+
# Build all Android flavors
|
|
84
|
+
ann_compile_build(platform: :android)
|
|
85
|
+
|
|
86
|
+
# Build specific iOS flavors only
|
|
87
|
+
ann_compile_build(platform: :ios, flavor: "production,staging", build_config: "release")
|
|
88
|
+
|
|
89
|
+
# Build web with clean
|
|
90
|
+
ann_compile_build(platform: :web, sub_command: "web", clean: true)
|
|
91
|
+
```
|
|
92
|
+
|
|
93
|
+
---
|
|
94
|
+
|
|
95
|
+
### `ann_upload_to_play_store` — Upload Android to Google Play
|
|
96
|
+
|
|
97
|
+
Builds and uploads all Android flavors to the Google Play Store using the `google_api_key` defined in `annspec.yaml`.
|
|
98
|
+
|
|
99
|
+
```ruby
|
|
100
|
+
ann_upload_to_play_store(
|
|
101
|
+
flavor: "production", # Specific flavor(s). Omit for all
|
|
102
|
+
clean: false,
|
|
103
|
+
spec_file: nil
|
|
104
|
+
)
|
|
105
|
+
```
|
|
106
|
+
|
|
107
|
+
---
|
|
108
|
+
|
|
109
|
+
### `ann_upload_to_app_store` — Upload iOS to App Store
|
|
110
|
+
|
|
111
|
+
Builds and uploads all iOS flavors to the Apple App Store using the `apple_api_key` and `export_options_plist` defined in `annspec.yaml`.
|
|
112
|
+
|
|
113
|
+
```ruby
|
|
114
|
+
ann_upload_to_app_store(
|
|
115
|
+
flavor: "production", # Specific flavor(s). Omit for all
|
|
116
|
+
clean: false,
|
|
117
|
+
spec_file: nil
|
|
118
|
+
)
|
|
119
|
+
```
|
|
120
|
+
|
|
121
|
+
---
|
|
122
|
+
|
|
123
|
+
### `ann_upload_to_firebase` — Deploy web to Firebase Hosting
|
|
124
|
+
|
|
125
|
+
Builds and deploys all web flavors to Firebase Hosting.
|
|
126
|
+
|
|
127
|
+
```ruby
|
|
128
|
+
ann_upload_to_firebase(
|
|
129
|
+
flavor: "web", # Specific flavor(s). Omit for all
|
|
130
|
+
clean: false,
|
|
131
|
+
spec_file: nil
|
|
132
|
+
)
|
|
133
|
+
```
|
|
134
|
+
|
|
135
|
+
---
|
|
136
|
+
|
|
137
|
+
### `ann_run_tests` — Run integration tests
|
|
138
|
+
|
|
139
|
+
Runs integration tests for all flavors of a given platform using emulators/simulators.
|
|
140
|
+
|
|
141
|
+
```ruby
|
|
142
|
+
ann_run_tests(
|
|
143
|
+
platform: :android, # :ios or :android
|
|
144
|
+
test_spec_file: nil # Path to test spec YAML (optional)
|
|
145
|
+
)
|
|
146
|
+
```
|
|
147
|
+
|
|
148
|
+
---
|
|
149
|
+
|
|
150
|
+
### `ann_open_emulators` — Start emulators/simulators
|
|
151
|
+
|
|
152
|
+
Opens the required emulators or simulators for a platform before running tests.
|
|
153
|
+
|
|
154
|
+
```ruby
|
|
155
|
+
ann_open_emulators(
|
|
156
|
+
platform: :android,
|
|
157
|
+
test_spec_file: nil
|
|
158
|
+
)
|
|
159
|
+
```
|
|
160
|
+
|
|
161
|
+
---
|
|
162
|
+
|
|
163
|
+
### `annai_upgrade_setup` — Maintenance setup
|
|
164
|
+
|
|
165
|
+
Runs comprehensive Flutter and Fastlane maintenance: `flutter upgrade`, `flutter doctor`, `bundle update`, gem install.
|
|
166
|
+
|
|
167
|
+
```ruby
|
|
168
|
+
annai_upgrade_setup # Skip if already up to date
|
|
169
|
+
annai_upgrade_setup(force: true) # Force run regardless
|
|
170
|
+
```
|
|
171
|
+
|
|
172
|
+
---
|
|
173
|
+
|
|
174
|
+
### `annai_cleanup` — Clean build artifacts
|
|
175
|
+
|
|
176
|
+
Runs `flutter clean` and removes platform build folders.
|
|
177
|
+
|
|
178
|
+
```ruby
|
|
179
|
+
annai_cleanup
|
|
180
|
+
annai_cleanup(force: true)
|
|
181
|
+
```
|
|
182
|
+
|
|
183
|
+
---
|
|
184
|
+
|
|
185
|
+
## Configuration
|
|
186
|
+
|
|
187
|
+
The plugin reads `annspec.yaml` from your Flutter project root. Keys used by Fastlane actions:
|
|
188
|
+
|
|
189
|
+
```yaml
|
|
190
|
+
annai_app:
|
|
191
|
+
android:
|
|
192
|
+
default:
|
|
193
|
+
fastlane:
|
|
194
|
+
google_api_key: "../annai_app_data/keys/android/google-api-key.json"
|
|
195
|
+
|
|
196
|
+
flavor:
|
|
197
|
+
production:
|
|
198
|
+
main_file: "lib/flavors/main_prod.dart"
|
|
199
|
+
version_name: 2.1.0
|
|
200
|
+
version_code: 20100
|
|
201
|
+
|
|
202
|
+
ios:
|
|
203
|
+
default:
|
|
204
|
+
fastlane:
|
|
205
|
+
apple_api_key: "../annai_app_data/keys/ios/apple_api_key.json"
|
|
206
|
+
export_options_plist: "../annai_app_data/keys/ios/exportOptions.plist"
|
|
207
|
+
|
|
208
|
+
flavor:
|
|
209
|
+
production:
|
|
210
|
+
apple_id: "1234567890" # Required for App Store upload
|
|
211
|
+
main_file: "lib/flavors/main_prod.dart"
|
|
212
|
+
version_name: 2.1.0
|
|
213
|
+
version_code: 20100
|
|
214
|
+
```
|
|
215
|
+
|
|
216
|
+
See the [Gradle plugin README](https://github.com/anntech-dev/android-studio-plugins/tree/main/plugins/android-build-flavorize#configuration) for the complete `annspec.yaml` field reference.
|
|
217
|
+
|
|
218
|
+
---
|
|
219
|
+
|
|
220
|
+
## Typical CI/CD Fastfile
|
|
221
|
+
|
|
222
|
+
```ruby
|
|
223
|
+
default_platform(:android)
|
|
224
|
+
|
|
225
|
+
platform :android do
|
|
226
|
+
|
|
227
|
+
lane :build do
|
|
228
|
+
ann_compile_build(
|
|
229
|
+
platform: :android,
|
|
230
|
+
build_config: "release",
|
|
231
|
+
sub_command: "appbundle",
|
|
232
|
+
clean: true
|
|
233
|
+
)
|
|
234
|
+
end
|
|
235
|
+
|
|
236
|
+
lane :deploy do
|
|
237
|
+
ann_upload_to_play_store
|
|
238
|
+
end
|
|
239
|
+
|
|
240
|
+
lane :test do
|
|
241
|
+
ann_open_emulators(platform: :android)
|
|
242
|
+
ann_run_tests(platform: :android)
|
|
243
|
+
end
|
|
244
|
+
|
|
245
|
+
end
|
|
246
|
+
|
|
247
|
+
platform :ios do
|
|
248
|
+
|
|
249
|
+
lane :build do
|
|
250
|
+
ann_compile_build(
|
|
251
|
+
platform: :ios,
|
|
252
|
+
build_config: "release",
|
|
253
|
+
sub_command: "ipa"
|
|
254
|
+
)
|
|
255
|
+
end
|
|
256
|
+
|
|
257
|
+
lane :deploy do
|
|
258
|
+
ann_upload_to_app_store
|
|
259
|
+
end
|
|
260
|
+
|
|
261
|
+
end
|
|
262
|
+
```
|
|
263
|
+
|
|
264
|
+
---
|
|
265
|
+
|
|
266
|
+
## Requirements
|
|
267
|
+
|
|
268
|
+
- Fastlane `>= 2.232.2`
|
|
269
|
+
- Ruby `>= 3.0`
|
|
270
|
+
- Flutter project with `annspec.yaml` at the project root
|
|
271
|
+
|
|
272
|
+
---
|
|
273
|
+
|
|
274
|
+
## Related plugins
|
|
275
|
+
|
|
276
|
+
- **[android-build-flavorize](https://central.sonatype.com/artifact/dev.anntech.flavorize/flavorize)** — Gradle plugin for Android build configuration
|
|
277
|
+
- **[android-studio-flavorize](https://plugins.jetbrains.com/plugin/dev.anntech.studio.flavorize)** — Android Studio plugin for interactive spec sync
|
|
278
|
+
|
|
279
|
+
---
|
|
280
|
+
|
|
281
|
+
## License
|
|
282
|
+
|
|
283
|
+
[MIT](LICENSE) © [ANN Solutions](https://github.com/anntech-dev)
|
data/Rakefile
ADDED
|
@@ -0,0 +1,25 @@
|
|
|
1
|
+
# -*- encoding: utf-8 -*-
|
|
2
|
+
lib = File.expand_path('lib', __dir__)
|
|
3
|
+
$LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
|
|
4
|
+
|
|
5
|
+
require 'ann_flutter_flavor/version'
|
|
6
|
+
|
|
7
|
+
Gem::Specification.new do |spec|
|
|
8
|
+
spec.name = "ann-flutter-flavor"
|
|
9
|
+
spec.version = AnnFlutterFlavor::VERSION
|
|
10
|
+
spec.authors = ["ANN Solutions"]
|
|
11
|
+
spec.email = ["support@annaibrands.com"]
|
|
12
|
+
spec.summary = "A fastlane plugin to manage Flutter build flavors and shared setup."
|
|
13
|
+
spec.homepage = "https://github.com/anntech-dev"
|
|
14
|
+
spec.license = "MIT"
|
|
15
|
+
|
|
16
|
+
spec.files = `git ls-files -z`.split("\x0").reject { |f| f.match(%r{^(test|spec|features)/}) }
|
|
17
|
+
spec.bindir = "exe"
|
|
18
|
+
spec.executables = spec.files.grep(%r{^exe/}) { |f| File.basename(f) }
|
|
19
|
+
spec.require_paths = ["lib"]
|
|
20
|
+
|
|
21
|
+
# Defines the fastlane dependency
|
|
22
|
+
spec.add_dependency "fastlane", ">= 2.232.2"
|
|
23
|
+
spec.add_development_dependency 'pry'
|
|
24
|
+
spec.add_development_dependency 'rspec', '~> 3.4.0'
|
|
25
|
+
end
|
|
@@ -0,0 +1,10 @@
|
|
|
1
|
+
# This file is loaded by require 'annai-flutter-flavor'
|
|
2
|
+
|
|
3
|
+
# Load the version (Good Practice)
|
|
4
|
+
require 'ann_flutter_flavor/version'
|
|
5
|
+
|
|
6
|
+
require 'fastlane'
|
|
7
|
+
|
|
8
|
+
# Load the Fastlane plugin structure (which defines the Plugin class)
|
|
9
|
+
require 'fastlane/plugin/ann_flutter_flavor'
|
|
10
|
+
|