mirror of
https://codeberg.org/OpenTracksApp/OpenTracks.git
synced 2026-10-02 09:33:06 +02:00
Compare commits
9 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| 5857c0032e | |||
| d086aa3c06 | |||
| fba09bcc3a | |||
| 3ce0e2cede | |||
| df0d3ce600 | |||
| c05cbc2fa6 | |||
| 2f07208d9d | |||
| ded98eddb5 | |||
| 45732735d4 |
+19
-27
@@ -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
|
||||
Executable
+28
@@ -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
@@ -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
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user