diff --git a/.github/workflows/android.yml b/.github/workflows/android.yml index e75a473..3c06f36 100644 --- a/.github/workflows/android.yml +++ b/.github/workflows/android.yml @@ -3,10 +3,10 @@ name: Build on: workflow_dispatch: push: - branches: [ "master" ] + branches: [ "**" ] tags: [ "*" ] pull_request: - branches: [ "master" ] + branches: [ "**" ] jobs: build: @@ -19,13 +19,14 @@ jobs: run: echo "RELEASE_VERSION=${GITHUB_REF#refs/tags/}" >> $GITHUB_ENV - name: Set up environment variables run: | - echo "GPR_USER=${{ github.actor }}" >> $GITHUB_ENV - echo "GPR_KEY=${{ secrets.GITHUB_TOKEN }}" >> $GITHUB_ENV + echo "GPR_USER=${{ secrets.GHUB_USER || github.actor }}" >> $GITHUB_ENV + echo "GPR_KEY=${{ secrets.GHUB_TOKEN || secrets.GITHUB_TOKEN }}" >> $GITHUB_ENV echo "KEY_ALIAS=${{ secrets.KEY_ALIAS }}" >> $GITHUB_ENV echo "KEY_PASSWORD=${{ secrets.KEY_PASSWORD }}" >> $GITHUB_ENV echo "KEYSTORE_PASSWORD=${{ secrets.KEYSTORE_PASSWORD }}" >> $GITHUB_ENV echo "KEYSTORE_BASE64=${{ secrets.KEYSTORE_BASE64 }}" >> $GITHUB_ENV echo "BUILD_NUMBER=${{ github.run_number }}" >> $GITHUB_ENV + echo "BASE_URL=${{ secrets.BASE_URL || 'https://github.com/timklge/karoo-headwind/releases/latest/download' }}" >> $GITHUB_ENV - uses: actions/checkout@v4 - name: set up JDK 17 uses: actions/setup-java@v4 @@ -34,6 +35,9 @@ jobs: distribution: 'temurin' cache: gradle + - name: Setup Android SDK + uses: android-actions/setup-android@v3 + - name: Grant execute permission for gradlew run: chmod +x gradlew - name: Build with Gradle @@ -47,12 +51,20 @@ jobs: - name: Create Release id: create_release - uses: ncipollo/release-action@v1 + uses: softprops/action-gh-release@v2 if: startsWith(github.ref, 'refs/tags/') with: name: ${{ github.ref_name }} - prerelease: false - generateReleaseNotes: true - artifacts: app/build/outputs/apk/release/app-release.apk, app/manifest.json, app/karoo-headwind.png, preview0.png, preview1.png, preview2.png, preview3.png + draft: false + generate_release_notes: true + make_latest: true + files: | + app/build/outputs/apk/release/app-release.apk + app/manifest.json + app/karoo-headwind.png + preview0.png + preview1.png + preview2.png + preview3.png env: GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} \ No newline at end of file diff --git a/.gitignore b/.gitignore index 43ebc8c..4523740 100644 --- a/.gitignore +++ b/.gitignore @@ -9,3 +9,4 @@ .cxx local.properties /app/release +app/manifest.json \ No newline at end of file diff --git a/app/build.gradle.kts b/app/build.gradle.kts index 466f95a..deb1185 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -1,3 +1,4 @@ +import com.android.build.gradle.tasks.ProcessApplicationManifest import java.util.Base64 plugins { @@ -60,29 +61,38 @@ tasks.register("generateManifest") { group = "build" doLast { + val baseUrl = System.getenv("BASE_URL") ?: "https://github.com/timklge/karoo-headwind/releases/latest/download" val manifestFile = file("$projectDir/manifest.json") val manifest = mapOf( "label" to "Headwind", "packageName" to "de.timklge.karooheadwind", - "iconUrl" to "https://github.com/timklge/karoo-headwind/releases/latest/download/karoo-headwind.png", - "latestApkUrl" to "https://github.com/timklge/karoo-headwind/releases/latest/download/app-release.apk", + "iconUrl" to "$baseUrl/karoo-headwind.png", + "latestApkUrl" to "$baseUrl/app-release.apk", "latestVersion" to android.defaultConfig.versionName, "latestVersionCode" to android.defaultConfig.versionCode, "developer" to "github.com/timklge", "description" to "Open-source extension that provides headwind direction, wind speed, forecast and other weather data fields.", - "releaseNotes" to "* Remove crashlytics\n" + + "releaseNotes" to "* Refactor unit conversions\n* Remove crashlytics\n" + "* Reduce refresh rate on K2, add refresh rate setting\n" + "screenshotUrls" to listOf( - "https://github.com/timklge/karoo-headwind/releases/latest/download/preview1.png", - "https://github.com/timklge/karoo-headwind/releases/latest/download/preview3.png", - "https://github.com/timklge/karoo-headwind/releases/latest/download/preview2.png", - "https://github.com/timklge/karoo-headwind/releases/latest/download/preview0.png", + "$baseUrl/preview1.png", + "$baseUrl/preview3.png", + "$baseUrl/preview2.png", + "$baseUrl/preview0.png", ) ) val gson = groovy.json.JsonBuilder(manifest).toPrettyString() manifestFile.writeText(gson) println("Generated manifest.json with version ${android.defaultConfig.versionName} (${android.defaultConfig.versionCode})") + + if (System.getenv()["BASE_URL"] != null){ + val androidManifestFile = file("$projectDir/src/main/AndroidManifest.xml") + var androidManifestContent = androidManifestFile.readText() + androidManifestContent = androidManifestContent.replace("\$BASE_URL\$", baseUrl) + androidManifestFile.writeText(androidManifestContent) + println("Replaced \$BASE_URL$ in AndroidManifest.xml") + } } } @@ -90,6 +100,12 @@ tasks.named("assemble") { dependsOn("generateManifest") } +tasks.withType().configureEach { + if (name == "processDebugMainManifest" || name == "processReleaseMainManifest") { + dependsOn(tasks.named("generateManifest")) + } +} + dependencies { implementation(libs.mapbox.sdk.turf) implementation(libs.hammerhead.karoo.ext) diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 15236d9..c218a2c 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -32,6 +32,6 @@ + android:value="$BASE_URL$/manifest.json" /> \ No newline at end of file