From b90c9e3afa3bd784bb60caafa188f9be8d2d6065 Mon Sep 17 00:00:00 2001 From: kmmiio99o Date: Wed, 26 Nov 2025 16:14:29 +0100 Subject: [PATCH 1/4] Fix signing apks --- .github/workflows/build.yml | 100 ++++++++++++++------------------ .github/workflows/release.yml | 105 ---------------------------------- app/build.gradle.kts | 4 +- 3 files changed, 46 insertions(+), 163 deletions(-) delete mode 100644 .github/workflows/release.yml diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index dc65fa5..17d9faa 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -1,79 +1,67 @@ name: Build APK -on: - push: - branches: ["**"] - pull_request: - -permissions: - contents: read - -env: - JAVA_VERSION: 17 +on: [push] jobs: build: + name: Build and push runs-on: ubuntu-latest + steps: - - name: Checkout - uses: actions/checkout@v4 + - uses: actions/checkout@v4 + with: + fetch-depth: 0 - name: Setup Java uses: actions/setup-java@v4 with: - distribution: temurin - java-version: ${{ env.JAVA_VERSION }} - cache: gradle - - - name: Setup Android SDK - uses: android-actions/setup-android@v2 + distribution: "temurin" + java-version: "17" - name: Make Gradle executable run: chmod +x ./gradlew - - name: Optional Keystore (if provided) - env: - KEYSTORE: ${{ secrets.KEYSTORE }} + - name: Build APKs run: | - if [ -n "$KEYSTORE" ]; then - echo "$KEYSTORE" | base64 -d > signing-key.jks - ls -l signing-key.jks - else - echo "No keystore provided, skipping..." + # Retry the Gradle build up to 3 times to mitigate transient cache/service errors + ATTEMPT=0 + until [ $ATTEMPT -ge 3 ] + do + ./gradlew build --no-daemon --stacktrace && break + ATTEMPT=$((ATTEMPT+1)) + echo "Gradle build failed, retrying ($ATTEMPT/3)..." + sleep 5 + done + if [ $ATTEMPT -ge 3 ]; then + echo "Gradle build failed after 3 attempts" + exit 1 fi - - name: Assemble Debug and Release - env: - KEYSTORE_PASSWORD: ${{ secrets.KEYSTORE_PASSWORD }} - KEY_ALIAS: ${{ secrets.KEY_ALIAS }} - KEY_PASSWORD: ${{ secrets.KEY_PASSWORD }} - GRADLE_OPTS: -Dorg.gradle.daemon=false - run: | - if [ -f signing-key.jks ]; then - ./gradlew assembleDebug assembleRelease \ - -Pandroid.injected.signing.store.file=$GITHUB_WORKSPACE/signing-key.jks \ - -Pandroid.injected.signing.store.password="$KEYSTORE_PASSWORD" \ - -Pandroid.injected.signing.key.alias="$KEY_ALIAS" \ - -Pandroid.injected.signing.key.password="$KEY_PASSWORD" - else - ./gradlew assembleDebug assembleRelease - fi + - name: Setup directories + run: + mkdir -p /tmp/ShiggyXposedbuild/apks + mkdir -p /tmp/ShiggyXposedbuild/tools - - name: Collect APKs - run: | - mkdir -p dist - cp app/build/outputs/apk/debug/*.apk dist/ || true - # Prefer signed release if produced - if ls app/build/outputs/apk/release/*-signed.apk >/dev/null 2>&1; then - cp app/build/outputs/apk/release/*-signed.apk dist/ - else - cp app/build/outputs/apk/release/*.apk dist/ - fi - ls -1 dist + - name: Move debug APK + run: mv ./app/build/outputs/apk/debug/app-debug.apk /tmp/ShiggyXposedbuild/apks + + - name: Download uber-apk-signer + run: wget -nv "https://github.com/patrickfav/uber-apk-signer/releases/download/v1.2.1/uber-apk-signer-1.2.1.jar" -O /tmp/ShiggyXposedbuild/tools/uber-apk-signer.jar + + - name: Sign release APK + run: java -jar /tmp/ShiggyXposedbuild/tools/uber-apk-signer.jar --apks ./app/build/outputs/apk/release/app-release-unsigned.apk --out /tmp/ShiggyXposedbuild/apks/ + + - name: Rename release APK + run: mv /tmp/ShiggyXposedbuild/apks/app-release-aligned-debugSigned.apk /tmp/ShiggyXposedbuild/apks/app-release.apk + + - name: Upload debug APK + uses: actions/upload-artifact@v4 + with: + name: app-debug + path: /tmp/ShiggyXposedbuild/apks/app-debug.apk - name: Upload All APKs uses: actions/upload-artifact@v4 with: - name: apks - path: dist/*.apk - if-no-files-found: error + name: app-release + path: /tmp/ShiggyXposedbuild/apks/app-release.apk \ No newline at end of file diff --git a/.github/workflows/release.yml b/.github/workflows/release.yml deleted file mode 100644 index 9477ef3..0000000 --- a/.github/workflows/release.yml +++ /dev/null @@ -1,105 +0,0 @@ -name: Build Release - -on: - workflow_dispatch: - inputs: - versionName: - required: true - description: This release's version name - default: "1.0.0" - versionCode: - required: true - description: This release's version code - default: "1000" - -permissions: - contents: write - -env: - JAVA_VERSION: 17 - -jobs: - build: - runs-on: ubuntu-latest - steps: - - name: Checkout - uses: actions/checkout@v4 - with: - fetch-depth: 0 - - - name: Setup JDK - uses: actions/setup-java@v4 - with: - java-version: ${{ env.JAVA_VERSION }} - distribution: temurin - cache: gradle - - - name: Setup Android SDK - uses: android-actions/setup-android@v2 - - - name: Set Version - uses: chkfung/android-version-actions@v1.1 - with: - gradlePath: app/build.gradle.kts - versionCode: ${{ github.event.inputs.versionCode }} - versionName: ${{ github.event.inputs.versionName }} - - - name: Commit Version Bump (if changed) - run: | - git config user.email "actions@github.com" - git config user.name "GitHub Actions" - git add app/build.gradle.kts - if git diff --cached --quiet; then - echo "No version change." - else - git commit -m "chore: bump version to ${{ github.event.inputs.versionName }} (${{ github.event.inputs.versionCode }})" - git push - fi - - - name: Prepare Keystore - run: | - echo "${{ secrets.KEYSTORE }}" | base64 -d > signing-key.jks - ls -l signing-key.jks - - - name: Build Universal APKs - env: - KEYSTORE_PASSWORD: ${{ secrets.KEYSTORE_PASSWORD }} - KEY_ALIAS: ${{ secrets.KEY_ALIAS }} - KEY_PASSWORD: ${{ secrets.KEY_PASSWORD }} - GRADLE_OPTS: -Dorg.gradle.daemon=false - run: | - ./gradlew packageDebugUniversalApk packageReleaseUniversalApk \ - -Pandroid.injected.signing.store.file=$GITHUB_WORKSPACE/signing-key.jks \ - -Pandroid.injected.signing.store.password="$KEYSTORE_PASSWORD" \ - -Pandroid.injected.signing.key.alias="$KEY_ALIAS" \ - -Pandroid.injected.signing.key.password="$KEY_PASSWORD" - - - name: Collect APKs - run: | - mkdir dist - mv app/build/outputs/apk_from_bundle/debug/app-debug-universal.apk dist/app-debug.apk - mv app/build/outputs/apk_from_bundle/release/app-release-universal.apk dist/app-release.apk - ls -l dist - - - name: Upload APK Artifacts - uses: actions/upload-artifact@v4 - with: - name: release-apks - path: dist/*.apk - if-no-files-found: error - - - name: Create Tag and Release - env: - GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} - run: | - tag=${{ github.event.inputs.versionCode }} - if git rev-parse -q --verify "refs/tags/$tag" >/dev/null; then - echo "Tag $tag already exists, skipping creation." - else - git tag "$tag" - git push origin "$tag" - fi - gh release view "$tag" >/dev/null 2>&1 || gh release create "$tag" \ - --title "${{ github.event.inputs.versionName }}" \ - --generate-notes \ - dist/app-debug.apk dist/app-release.apk diff --git a/app/build.gradle.kts b/app/build.gradle.kts index a2cc3d0..b86ee1e 100644 --- a/app/build.gradle.kts +++ b/app/build.gradle.kts @@ -12,8 +12,8 @@ android { applicationId = "ShiggyXposed.xposed" minSdk = 24 targetSdk = 36 - versionCode = 1220 - versionName = "1.2.2" + versionCode = 1210 + versionName = "1.2.1" } buildTypes { From bd9fe79f2a3fd12da23570742cb2643fe42c694f Mon Sep 17 00:00:00 2001 From: kmmiio99o Date: Wed, 26 Nov 2025 16:20:02 +0100 Subject: [PATCH 2/4] Fix Fix --- .github/workflows/build.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/build.yml b/.github/workflows/build.yml index 17d9faa..1ceae25 100644 --- a/.github/workflows/build.yml +++ b/.github/workflows/build.yml @@ -37,7 +37,7 @@ jobs: exit 1 fi - - name: Setup directories + - name: Setup directories run: mkdir -p /tmp/ShiggyXposedbuild/apks mkdir -p /tmp/ShiggyXposedbuild/tools From 65c175f97711389539036e8f88d3a0c6112bee3f Mon Sep 17 00:00:00 2001 From: kmmiio99o <164557248+kmmiio99o@users.noreply.github.com> Date: Fri, 28 Nov 2025 17:59:18 +0100 Subject: [PATCH 3/4] Fix linting error Happened without a reason really, but should be working now I think --- .../kotlin/ShiggyXposed/xposed/xposed/modules/LogBoxModule.kt | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/app/src/main/kotlin/ShiggyXposed/xposed/xposed/modules/LogBoxModule.kt b/app/src/main/kotlin/ShiggyXposed/xposed/xposed/modules/LogBoxModule.kt index ad3f9ce..bf34c28 100644 --- a/app/src/main/kotlin/ShiggyXposed/xposed/xposed/modules/LogBoxModule.kt +++ b/app/src/main/kotlin/ShiggyXposed/xposed/xposed/modules/LogBoxModule.kt @@ -465,7 +465,9 @@ object LogBoxModule : Module() { textSize = 14f setTextColor(colors.onSurfaceVariant) setPadding(0, 0, 0, dpToPx(context, 24)) - lineHeight = dpToPx(context, 20) + if (android.os.Build.VERSION.SDK_INT >= android.os.Build.VERSION_CODES.P) { + lineHeight = dpToPx(context, 20) + } } container.addView(messageView) From 74adbf4790436cda507dd23c650e3c29f47ef4f4 Mon Sep 17 00:00:00 2001 From: kmmiio99o <164557248+kmmiio99o@users.noreply.github.com> Date: Fri, 28 Nov 2025 18:09:13 +0100 Subject: [PATCH 4/4] Fix linting V2 --- .../ShiggyXposed/xposed/xposed/modules/LogBoxModule.kt | 5 ++++- 1 file changed, 4 insertions(+), 1 deletion(-) diff --git a/app/src/main/kotlin/ShiggyXposed/xposed/xposed/modules/LogBoxModule.kt b/app/src/main/kotlin/ShiggyXposed/xposed/xposed/modules/LogBoxModule.kt index bf34c28..be94ff0 100644 --- a/app/src/main/kotlin/ShiggyXposed/xposed/xposed/modules/LogBoxModule.kt +++ b/app/src/main/kotlin/ShiggyXposed/xposed/xposed/modules/LogBoxModule.kt @@ -7,6 +7,7 @@ import android.app.AlertDialog import android.content.Context import android.content.res.ColorStateList import android.graphics.Color +import android.os.Build import android.graphics.drawable.GradientDrawable import android.util.TypedValue import android.view.Gravity @@ -1019,7 +1020,9 @@ object LogBoxModule : Module() { textSize = 14f setTextColor(colors.onSurfaceVariant) setPadding(0, 0, 0, dpToPx(context, 24)) - lineHeight = dpToPx(context, 20) + if (Build.VERSION.SDK_INT >= Build.VERSION_CODES.P) { + lineHeight = dpToPx(context, 20) + } } container.addView(messageView)