diff --git a/.github/workflows/android.yml b/.github/workflows/android.yml index e63265a..4e70590 100644 --- a/.github/workflows/android.yml +++ b/.github/workflows/android.yml @@ -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-powerbar/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,19 @@ 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-reminder.png, reminder.png, detail.png, list.png + draft: false + generate_release_notes: true + make_latest: true + files: | + app/build/outputs/apk/release/app-release.apk + app/manifest.json + app/karoo-reminder.png + reminder.png + detail.png + list.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 0aa583e..1a9d8e3 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -1,3 +1,4 @@ +import com.android.build.gradle.tasks.ProcessApplicationManifest import org.jose4j.base64url.Base64 plugins { @@ -61,27 +62,36 @@ tasks.register("generateManifest") { group = "build" doLast { + val baseUrl = System.getenv("BASE_URL") ?: "https://github.com/timklge/karoo-reminder/releases/latest/download" val manifestFile = file("$projectDir/manifest.json") val manifest = mapOf( "label" to "Reminder", "packageName" to "de.timklge.karooreminder", - "iconUrl" to "https://github.com/timklge/karoo-reminder/releases/latest/download/karoo-reminder.png", - "latestApkUrl" to "https://github.com/timklge/karoo-reminder/releases/latest/download/app-release.apk", + "iconUrl" to "$baseUrl/karoo-reminder.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 shows in-ride alerts after a given time interval has passed, distance has been traveled or HR / power / speed / cadence range is exceeded", "releaseNotes" to "* Add rolling average setting for power triggers", "screenshotUrls" to listOf( - "https://github.com/timklge/karoo-reminder/releases/latest/download/reminder.png", - "https://github.com/timklge/karoo-reminder/releases/latest/download/list.png", - "https://github.com/timklge/karoo-reminder/releases/latest/download/detail.png", + "$baseUrl/reminder.png", + "$baseUrl/list.png", + "$baseUrl/detail.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") + } } } @@ -89,6 +99,12 @@ tasks.named("assemble") { dependsOn("generateManifest") } +tasks.withType().configureEach { + if (name == "processDebugMainManifest" || name == "processReleaseMainManifest") { + dependsOn(tasks.named("generateManifest")) + } +} + dependencies { implementation(libs.hammerhead.karoo.ext) implementation(libs.androidx.core.ktx) diff --git a/app/src/main/AndroidManifest.xml b/app/src/main/AndroidManifest.xml index 7dcd106..d3b6f58 100644 --- a/app/src/main/AndroidManifest.xml +++ b/app/src/main/AndroidManifest.xml @@ -34,7 +34,7 @@ + android:value="$BASE_URL$/manifest.json" /> \ No newline at end of file