A new release is a good time to check if all dependencies are still up to date.
- Update outdated dependencies as indicated by Android Studio in the
build.gradle
. For each to-be-updated dependency, review the changelog (see release notes for androidx libraries) - are there any (breaking) changes that may affect us? Test it. - Update available languages. Check on POEditor if any translation not included yet reached a certain threshold of completion (~80%) to be included or if any already included translation has been abandoned (only ~50% translated). If necessary, adapt
bcp47ExportLanguages
inapp/build.gradle.kts
and mention the change in the changelog. - Update presets version. Check if
presetsVersion
andnsiVersion
in thebuild.gradle
still point to the latest version of the iD presets and name suggestion index respectively, check if the schema has any incompatible changes and update. - Update main contributor listing and other manual credit handling. In general credits are updated automatically (see below), but main contributors and list of ignored commits (
skipCommit
) are handled manually.
This is done by executing the updateStreetCompleteData
gradle task. However, some subtasks need setting up first before they are run.
For app:updateTranslatorCredits
:
- (one-time:) Get a POEditor API token and put it in your
<user home>/.gradle/gradle.properties
asPOEditorAPIToken=<the api token>
- (every time:) Login to POEditor, press F12 to bring up the developer tools, reload the page and copy from the request cookies sent in displaying the page the
login
and thePHPSESSID
cookie. Paste it into your<user home>/.gradle/gradle.properties
asPOEditorCookie=<your login cookie>
andPOEditorPHPSESSID=<your PHPSESSID>
For app:updateTranslations
: one-time setup of POEditor API token as described above.
For updateContributorStatistics
:
- (one-time:) Create a GitHub personal access token (no permissions required) and put it in your
<user home>/.gradle/gradle.properties
asGithubApiToken=<the api token>
After executing updateStreetCompleteData
, let Android Studio check this by running Analyze -> Run inspection by name , type "Invalid format string". Translators often make the mistake to not correctly write the placeholders (%s
, %1$s
, %2%d
etc.) in their translations. This can lead to a crash when the string is displayed.
Correct any mistakes found by the inspection directly in POEditor if possible (otherwise delete the offending string) and re-import the translations again (gradle task app:updateTranslations
) until the inspections come out clean.
- Go through the git history since the last release and update
CHANGELOG.md
. Make sure to credit everyone (use "by ..." if something was contributed by a person and "thanks ..." if that person helped but did not do it (all) himself) and reference the related pull requests and issues. - In the
build.gradle
, increase theversionCode
and theversionName
. - Run the gradle task
app:installRelease
to deploy the release on your smartphone. - Test if all works as expected. At least look at the changelog and download quests.
- Commit and push.
- In Android Studio, select Build -> Generate Signed Bundle / APK. You need both. You should first create the APK, then the bundle, because the build process for the APK clears the directory in which the Bundle/APK is placed. Rename the created files to match the release name, e.g. "StreetComplete-v99.0-beta9.apk". Build the bundle with the
releaseGooglePlay
config.
- On GitHub, create a new release.
- Create a new tag by tapping on Choose a tag, type the name, e.g. "v99.0-beta9" and press Create new tag: v99.0-beta9 on publish
- Select the branch you built the APK on. Usually it is master.
- Copy&paste the text from the
changelog.yml
into the textbox - Attach the APK.
- If it is a beta, check the This is a pre-release box. For major releases, you may want to check the box to create a discussion.
- Double-check you really committed and pushed the release before publishing.
- In the Google Play Console, select Production to release a public release or select Testing -> Open Testing to release a beta release.
- Tap Create New Release in the upper right corner.
- Upload the bundle
- In the field Release name, just input the version name, e.g. "v99.0-beta9". In the Release notes, we just refer to the changelog on GitHub (e.g.
<en-US>https://github.com/streetcomplete/StreetComplete/releases/tag/v99.0-beta9</en-US>
) because the character limit is too short for a proper changelog. - Finally, press on Save, then Review release. Review the release.
There might be bug fixes for the latest release that should be published as a minor version (before any new major version). If there are already changes for the next major version in the master
branch then, create a release branch from the latest tag: E.g. for tag v99.0
, create branch 99
with git checkout -b 99 v99.0
. Then fix the bugs in the master
branch and cherry-pick them to the release branch. The release branch can be deleted once the next major version is published.