From c011fd4e60ef7ec60c2ab417786702b8635e2d8f Mon Sep 17 00:00:00 2001 From: Dennis Guse Date: Wed, 25 Dec 2024 17:43:41 +0100 Subject: [PATCH] Reproducible build: F-Droid needs build flavors (not build types). Part of #418. --- .github/workflows/build_apk.yml | 2 +- build.gradle | 51 ++++++++++++++++++--------------- 2 files changed, 29 insertions(+), 24 deletions(-) diff --git a/.github/workflows/build_apk.yml b/.github/workflows/build_apk.yml index f654436ee..a70e1e442 100644 --- a/.github/workflows/build_apk.yml +++ b/.github/workflows/build_apk.yml @@ -22,7 +22,7 @@ jobs: shell: bash run: | echo ${NIGHTLY_STORE_FILE} | base64 -d > KEY_NIGHTLY.jks - ./gradlew assembleNightly -Dnightly_store_file=KEY_NIGHTLY.jks -Dnightly_store_password="${NIGHTLY_STORE_PASSWORD}" -Dnightly_key_alias="${NIGHTLY_KEY_ALIAS}" -Dnightly_key_password="${NIGHTLY_STORE_PASSWORD}" + ./gradlew assembleNightlyRelease -Dnightly_store_file=KEY_NIGHTLY.jks -Dnightly_store_password="${NIGHTLY_STORE_PASSWORD}" -Dnightly_key_alias="${NIGHTLY_KEY_ALIAS}" -Dnightly_key_password="${NIGHTLY_STORE_PASSWORD}" env: NIGHTLY_STORE_FILE: ${{ secrets.NIGHTLY_STORE_FILE }} NIGHTLY_STORE_PASSWORD: ${{ secrets.NIGHTLY_STORE_PASSWORD }} diff --git a/build.gradle b/build.gradle index 128a80655..5699d71ca 100644 --- a/build.gradle +++ b/build.gradle @@ -63,7 +63,7 @@ android { } defaultConfig { - applicationId "de.dennisguse.opentracks" + applicationId 'de.dennisguse.opentracks' versionCode 5978 versionName "v4.17.1" @@ -72,16 +72,16 @@ android { minSdk 26 targetSdk 35 - testInstrumentationRunner "de.dennisguse.opentracks.TestRunner" + testInstrumentationRunner 'de.dennisguse.opentracks.TestRunner' testInstrumentationRunnerArguments clearPackageData: 'true' } signingConfigs { nightly { - if (System.getProperty("nightly_store_file") != null) { - storeFile file(System.getProperty("nightly_store_file")) - storePassword System.getProperty("nightly_store_password") - keyAlias System.getProperty("nightly_key_alias") - keyPassword System.getProperty("nightly_key_password") + if (System.getProperty('nightly_store_file') != null) { + storeFile file(System.getProperty('nightly_store_file')) + storePassword System.getProperty('nightly_store_password') + keyAlias System.getProperty('nightly_key_alias') + keyPassword System.getProperty('nightly_key_password') } } } @@ -90,41 +90,46 @@ android { buildTypes { debug { - applicationIdSuffix ".debug" - versionNameSuffix "-debug" + applicationIdSuffix '.debug' + versionNameSuffix '-debug' } + release { + crunchPngs false + minifyEnabled false + } + } + + flavorDimensions 'version' + productFlavors { nightly { - applicationIdSuffix ".nightly" + dimension 'version' + applicationIdSuffix '.nightly' signingConfig signingConfigs.nightly } - - release { + irreproducible { // Non-reproducible: https://f-droid.org/de/packages/de.dennisguse.opentracks/ - crunchPngs false - minifyEnabled false - versionNameSuffix "irreproducible" + dimension 'version' + applicationId 'de.dennisguse.opentracks' + versionNameSuffix 'irreproducible' } - 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 - applicationIdSuffix ".playstore" - - crunchPngs false - minifyEnabled false + dimension 'version' + applicationId 'de.dennisguse.opentracks.playstore' } } applicationVariants.configureEach { variant -> - variant.resValue "string", "applicationId", variant.applicationId + variant.resValue 'string', 'applicationId', variant.applicationId variant.outputs.configureEach { if (variant.buildType.name == 'reproducible') { - outputFileName = "${applicationId}_${variant.buildType.name}_${variant.versionName}.apk" + outputFileName = '${applicationId}_${variant.buildType.name}_${variant.versionName}.apk' } else { - outputFileName = "${applicationId}_${variant.buildType.name}_${variant.versionCode}.apk" + outputFileName = '${applicationId}_${variant.buildType.name}_${variant.versionCode}.apk' } if (variant.buildType.name == 'nightly') {