-
Notifications
You must be signed in to change notification settings - Fork 10
/
cheat_sheet.txt
251 lines (216 loc) · 10.2 KB
/
cheat_sheet.txt
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
228
229
230
231
232
233
234
235
236
237
238
239
240
241
242
243
244
245
246
247
248
249
250
251
==============================
Android Release Build command:
flutter build appbundle --release --target-platform android-arm,android-arm64
==============================
Format code:
Activation of dart format:
flutter pub global activate dart_style
dart format lib -l 120
==============================
Build Checklist
- Crowdin translations: crowdin download
- Project explorer, project root, right click -> Optimize Imports
- Format code: dart format lib -l 120
- flutter upgrade
- flutter pub get
- Build
==============================
Release Checklist
Meta:
- Write Changelog: Check closed PRs and commit history for new features, big fixes or changes
- Write changelog string as late as possible because the translations shouldn't get outdated if something will be added
- Wait for translators for translating the changelog; you gonna need them for the app stores
- Hide old changelog strings in Crowdin, it's not necessary to translate them furtherly
- In changelogs.dart add new version and probable release date
- In Crowdin check percentages for languages and put them into supported_locales.dart
- Update Flutter last time before final internal testing on both, your Android and your iOS machine
- If new Flutter version will be published later, it should be ignored since you are not able to test possible impacts anymore
- Same for Dependencies: Last check for outdated packages and upgrading to latest possible without risking too big changes
- Update the dependencies in the licenses.dart (remove or add new, check for their licenses)
- Update about.dart for contributors and relevant translators (and maybe team member changes)
- Check mails, forums and social media and whatever for bug reporters or relevant feature requests to add these people to "Testers" in about.dart
- Check if you want to update the README.md
- App Stores:
- iOS: Prepare new version:
- Add new language page if one new translation was added
- Normal Version:
- Add Short Description
- only <X> characters
- Add Long Description:
- Country flag symbols make problems. Remove them
- Check for automatically included empty lines and remove them if necessary
- only 4000 characters
- Optional: Screenshots in that language
- Gold Version:
- Generally the same but different Short text and add the "Gold Long Description" part in front of normal Long Description Text (both, short and long part explain that this is pure donation, no additional features)
- Add changelog all languages (when and if translated! EN is default otherwise)
- Save and Send To Review
- Android:
- Pretty the same for new languages: Create a new language and add short and long descriptions for Normal and Gold. Remember 500 character limitations per language
- Currently no "bad" characters known
- Changelogs can only be added on real release, e.g. internal or beta test
- Check legal websites:
- cookie_policy.html contains a list of cookies. Every "Pref" used in the code will be stored as a cookie. So if you added some in the new version, you need to add them in the websites
- privacy_police.html contains the permissions the app needs, like localisation or file access. It also lists the destinations of third party web links like OpenStreetMap or the Dow Jones API Check if the list is still up-to-date
- impressum.html: Your contact data is still up-to-date?
- Don't forget to update the "Last updated" section of the files
- Remember: For privacy reasons, the legal websites are not part of the public GitHub repository. So ensure to make the changes also in your back-up
- Prepare blog post for new version in EN and DE
- Hopefully everything works fine. But prepare yourself for nasty issues like unsupported XCode or POD versions, new App/PlayStore restrictions, review denies, ...
Actual Release:
- Check new version (incl. build number) in Pubspec.yaml
- Check correct name in android/app/src/main/AndroidManifest.xml
- on final version release, don't forget to "optimize imports" and format code (see Build Checklist)
Release internal test:
- Build Android version
- load to Internal Test in Google Play Console
- Set Release Version to <new version>, e.g. 5.2.0
- Optional: Add changelogs in translated and supported languages
- Becomes mandatory for at least Beta version!
- usually you need to shorten them because of too few characters; start with removing the "Thanks" parts
- Save -> Start roll-out
- Build iOS version on Mac
- build on console
- open built app in XCode via ios/Runner.xcworkspace
- check correct version and build number for the Runner Target (General/Identity)
- bundle for all iOS devices (Product/Build For/Destinations/)
- archive bundle (takes some time, even if no progress visible) (Product/Archive)
- Distribute to Apple App Store / Testflight
- on AppStore/TestFlight website: wait for processing (takes ca. 30 min)
- check "No Encryption Algorithms" (or similar)
- Build Web version
- Load to /app_test/
- Final test should take 1-2 weeks
Release beta:
- Android:
- Promote internal test version to Closed and Open Testing (Alpha / Beta)
- Insert new changelogs for all supported languages
- If already done on a previous release you can select "Copy from previous release"
- Save -> Send for review -> Start roll-out
- iOS:
- Simply add "GCWizard Testers" as users to test version
- Insert new changelogs for EN and DE
- Release blog post for new version
- Propagate in social media
- Beta test should take 1-2 weeks (usually no registered user will ever report anything)
Release public:
- Android:
- Promote open test version to public
- Save -> Send for review -> Start roll-out
- Update Rollout Settings from 20 to 100%
- Reviewing may take a few days
- iOS:
- Go to normal AppStore
- Create new version with correct version number
- Add changelogs for all supported languages
- If changelog translation in a supported language is not provided, add EN changelog manually
- Add Build Version (from TestFlight)
- Save/Send to Review -> now it's only on status "Ready for review"
- Menu/General/App Reviews -> Transmit to Review
- Reviewing may take a few days
- Repeat with Gold Versions:
- Recommendation: Wait until Normal versions really passed the official reviews to be sure that nothing went wrong
- Android:
- Replace normal icons in android/app/src/main/res with android/app/src/main/res/icons_gold
- change package name to gc_wizard_gold:
- in file: android/app/src/main/AndroidManifest.xml (and application/android:label to "GC Wizard Gold", too)
- in file: android/app/build.gradle -> defaultConfig and android/namespace
- iOS:
- Replace normal icons in ios/Runner/Assets.xcassets/AppIcon.appiconset/ with ios/Runner/Assets.xcassets/AppIcon.appiconset/icons_gold
- change bundle identifier in XCode/Info.plist in ios/Runner to de.sman42.gcWizardGold
- change Display Name to GC Wizard Gold
- Release process same
- Web:
- Rename /app/ directory to /app_<current_version> -- e.g. new version is 5.2.0 and old version was 5.1.4, the new dir would be /app_5.1.4
- Rename /app_test/ to /app/
- Create new empty directory /app_test/
After Release:
- Restore local workspace repos from gold to normal version (git reset --hard)
- Remind the release in forums and social media
- GitHub:
- Merge your version branch onto master branch
- Tag the merge commit with the version number
- Remove feature branches
- Maybe remove older version branches
- Create next main version branch and next bugfix branch on this commit (if new version is 5.2.0, create 5.3.0 - or 6.0.0 for major plans - and 5.2.1)
- Currently the next version branch is main branch on Github because most contributors don't check the destination branch for a PR and the reviewer misses this as well regularly ;) So, if this practise should be continued:
- Go to GitHub settings and set relevant branch as main branch instead of master
- Propagate new status to developers
- Crowdin: Hide last "changelog" string (Past changelog don't need to be translated)
==============================
Common Build Error Fixes:
flutter upgrade --force
flutter pub cache repair
flutter clean
Caches to clean:
Gradle (Windows: users/.gradle)
Pub cache (Windows: users/appdata/local/pub)
Android Studio
Windows:
users/.android
users/appdata/local/google/androidstudioX
caches
compiler
compiler-server
conversion
external-build-system
frameworks
gradle
resource-folder-cache
IntelliJ (Project Path ./.idea)
Build Path (Project Path ./build)
==============================
Web Build:
First time:
flutter config --enable-web
flutter create .
Else:
flutter build web
2021/02: Currently problems with HTML objects: Please uncomment lines in lib\widgets\utils\file_utils.dart
===============================
Icons:
Android: android/app/src/main/res/mipmap-*/ic_launcher.png
iOS: ios/Runner/Assets.xcassets/AppIcon.appiconset/
/*** Troubleshooting on compiling ***/
-----------
Execution failed for task ':app:compileFlutterBuildDebug' Issue
->
flutter channel stable
flutter upgrade --force
flutter pub cache repair
cd <YOUR APP FOLDER>
flutter clean
-----------
iOS build: GeneratedPluginRegistrant.m Module not found.
-> Open XCode with .xcworkspace file instead of .xcodeproj
---------------
Xcode 10: unable to attach DB error
-> Delete /users/.../Library/Developer/Xcode/DerivedData directory
--------------
Could not find a file named"pubspec.yaml"in
-> dart pub get
--------------
Xcode 14 beta error: Stored properties cannot be marked potentially unavailable with '@available'
-> Navigate to ios folder and run following commands:
-> pod install
-> pod update
Xcode: Command PhaseScriptExecution failed with a nonzero exit code
->
flutter clean
flutter pub get
flutter pub upgrade
cd iOS
pod install
pod update
XCode No access to accounts:
Restart XCode or restart entire macOS
========
Crowdin Script, install jq using Scoop.sh:
Windows/Powershell
Set-ExecutionPolicy RemoteSigned -scope CurrentUser
iwr -useb get.scoop.sh | iex
scoop bucket add extras
scoop install jq
Run Scripts in external_helpers/crowdin using the GitBash
Crowdin Upload: crowdin upload sources
Crowdin Download: crowdin download