Compare commits

...

9 Commits

Author SHA1 Message Date
Dennis Guse 5857c0032e Release: v4.17.5 2024-12-27 17:45:14 +01:00
Dennis Guse d086aa3c06 Reproducible build: we should use the alternative (PlayStore) icon.
Part of #418.
2024-12-27 17:20:35 +01:00
Dennis Guse fba09bcc3a Reproducible build: we also need a build script.
Part of #418.
2024-12-27 17:20:15 +01:00
Dennis Guse 3ce0e2cede Reproducible build: update release documentation.
Part of #418.
2024-12-27 16:31:58 +01:00
Dennis Guse df0d3ce600 Release: v4.17.4 2024-12-27 09:58:58 +01:00
Dennis Guse c05cbc2fa6 Reproducible build: remove dependenciesInfo.
Part of #418.
2024-12-27 09:58:13 +01:00
Dennis Guse 2f07208d9d Release: v4.17.3 2024-12-25 23:31:22 +01:00
Dennis Guse ded98eddb5 Reproducible build: use a proper file name for the apk (again).
Part of #418.
2024-12-25 23:30:06 +01:00
Dennis Guse 45732735d4 Reproducible build: use a proper file name for the apk.
Part of #418.
2024-12-25 19:56:54 +01:00
11 changed files with 100 additions and 36 deletions
+19 -27
View File
@@ -2,39 +2,31 @@
## Craft new releases
1. Get next _version code_ (main): `git rev-list HEAD --count main`
2. Decide on _version name_ (semantic versioning)
3. Manually update _version code_ and _version name_ in `build.gradle`
4. Create changelog (`_version code_.txt`)
5. Create commit with all changes
6. Tag newly create commit with _version name_ (e.g., v3.2.1)
7. Push commits and tags to public repository
8. Add changelog to tag (Github releases)
1. Execute use `RELEASE.sh`.
2. Push to Github
3. Create release on Github (incl. changelog)
This actually creates a tag that is later used by F-Droid
4. Pull from Github
5. Build reproducible release and attach to release
6. ... wait until reproducibility is verified by F-Droid
## F-Droid
Application id: de.dennisguse.opentracks
Two releases will be created:
* Application id: `de.dennisguse.opentracks` (irreproducible)
* Application id: `de.dennisguse.opentracks.playstore` (reproducible)
It if it properly tagged F-Droid takes care of building the app and publishing.
Usually, it takes two days before the update is published (build, signed, and published).
For F-Droid the build status can be found [here](https://monitor.f-droid.org/builds/build).
The recent build activity can be found [here](https://monitor.f-droid.org/builds/build)
## Reproducible builds
## Google Play Store
Application id: `de.dennisguse.opentracks.playstore`
A lot of detailed information can be found [here](https://f-droid.org/docs/Reproducible_Builds/)
Requirement: `gem install fastlane`
1. Build signed apk
(requires keystore)
2. Upload signed apk to [Google Play Console](https://play.google.com/apps/publish)
3. Update store meta data (e.g., description and screenshots)
`fastlane metadata`
(requires API key configured in `Appfile`)
Supported languages: https://support.google.com/googleplay/android-developer/table/4419860
Technical requirements:
* Must be build using OpenJDK17
## Translations (localization)
Translations of the OpenTracks are handled in
Weblate: [https://hosted.weblate.org/projects/opentracks/](https://hosted.weblate.org/projects/opentracks)
.
Weblate: [https://hosted.weblate.org/projects/opentracks/](https://hosted.weblate.org/projects/opentracks).
## Google Play Store
Supported languages: https://support.google.com/googleplay/android-developer/table/4419860
+28
View File
@@ -0,0 +1,28 @@
#!/bin/bash
set -e
export JAVA_HOME=/usr/lib/jvm/java-17-openjdk-amd64/
JAVA_VERSION=`java --version`
if [[ $JAVA_VERSION != "openjdk 17."* ]]; then
echo "OpenJDK version should be 17.X"
exit -1;
fi
RELEASE_STORE_PASSWORD=
read -s -p "Enter store password: " RELEASE_STORE_PASSWORD
echo ""
read -s -p "Enter key alias: " RELEASE_KEY_ALIAS
echo ""
read -s -p "Enter key password: " RELEASE_KEY_PASSWORD
echo ""
./gradlew --no-configuration-cache \
clean \
assembleReproducibleRelease \
-Drelease_store_file=`ls ../*.jks` \
-Drelease_store_file="../keystore_opentracks.jks" \
-Drelease_store_password="$RELEASE_STORE_PASSWORD" \
-Drelease_key_alias="$RELEASE_KEY_ALIAS" \
-Drelease_key_password="$RELEASE_KEY_PASSWORD"
+25 -8
View File
@@ -64,8 +64,8 @@ android {
defaultConfig {
applicationId 'de.dennisguse.opentracks'
versionCode 5980
versionName "v4.17.2"
versionCode 5989
versionName "v4.17.5"
buildConfigField "String", "VERSION_NAME_FULL", "\"${getVersionName()}\""
@@ -84,6 +84,14 @@ android {
keyPassword System.getProperty('nightly_key_password')
}
}
release {
if (System.getProperty("release_store_file") != null) {
storeFile file(System.getProperty("release_store_file"))
storePassword System.getProperty("release_store_password")
keyAlias System.getProperty("release_key_alias")
keyPassword System.getProperty("release_key_password")
}
}
}
namespace 'de.dennisguse.opentracks'
@@ -104,7 +112,7 @@ android {
productFlavors {
nightly {
dimension 'version'
applicationIdSuffix '.nightly'
applicationId 'de.dennisguse.opentracks.nightly'
signingConfig signingConfigs.nightly
}
irreproducible {
@@ -113,12 +121,13 @@ android {
applicationId 'de.dennisguse.opentracks'
versionNameSuffix 'irreproducible'
}
reproducible {
reproducible {
// Developer Binaries: https://github.com/OpenTracksApp/OSMDashboard/releases/download/v%v/de.dennisguse.opentracks.playstore_%v.apk
// FDroid: https://f-droid.org/de/packages/de.dennisguse.opentracks.playstore
// PlayStore: https://play.google.com/store/apps/details?id=de.dennisguse.opentracks.playstore
dimension 'version'
applicationId 'de.dennisguse.opentracks.playstore'
signingConfig signingConfigs.release
}
}
@@ -126,18 +135,26 @@ android {
variant.resValue 'string', 'applicationId', variant.applicationId
variant.outputs.configureEach {
if (variant.buildType.name == 'reproducible') {
outputFileName = '${applicationId}_${variant.buildType.name}_${variant.versionName}.apk'
if (variant.flavorName == 'reproducible') {
outputFileName = "${applicationId}_${variant.versionName}.apk"
} else {
outputFileName = '${applicationId}_${variant.buildType.name}_${variant.versionCode}.apk'
outputFileName = "${applicationId}_${variant.versionCode}.apk"
}
if (variant.buildType.name == 'nightly') {
if (variant.flavorName == 'nightly') {
setVersionCodeOverride(getVersionCode())
setVersionNameOverride(getVersionName())
}
}
}
dependenciesInfo {
// Disables dependency metadata when building APKs.
includeInApk = false
// Disables dependency metadata when building Android App Bundles.
includeInBundle = false
}
}
dependencies {
@@ -0,0 +1,9 @@
v4.17.3: OpenTracks
Changes:
- Reproducible build: let's see if it works.
Developer:
- Just trying to get the APK filename, right...
@@ -0,0 +1,8 @@
v4.17.4: OpenTracks
Changes:
- Reproducible build: let's see if it works.
Developer:
- Removing DependencyInfo.
@@ -0,0 +1,10 @@
v4.17.5: OpenTracks
Changes:
- Reproducible build: let's see if it works.
Bugfix:
- Reproducible build uses PlayStore icon.
Developer:
- Added RELEASE_BUILD.sh
+1 -1
View File
@@ -1,6 +1,6 @@
distributionBase=GRADLE_USER_HOME
distributionPath=wrapper/dists
distributionUrl=https\://services.gradle.org/distributions/gradle-8.11.1-bin.zip
distributionUrl=https\://services.gradle.org/distributions/gradle-8.12-bin.zip
networkTimeout=10000
validateDistributionUrl=true
zipStoreBase=GRADLE_USER_HOME