Skip to content

Commit d12dd86

Browse files
committed
fix(ci): stabilize lint and release workflows
Add explicit androidx.fragment:fragment-ktx dependency to satisfy ActivityResult lint requirements in CI. Upgrade GitHub Actions versions to Node24-compatible releases and align CI/release JDK setup to Java 21. Replace deprecated sign-android-release action with explicit zipalign/apksigner signing to avoid build-tools path failures.
1 parent 30aaffe commit d12dd86

4 files changed

Lines changed: 44 additions & 22 deletions

File tree

.github/workflows/ci.yml

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -18,22 +18,22 @@ jobs:
1818

1919
steps:
2020
- name: Checkout
21-
uses: actions/checkout@v5
21+
uses: actions/checkout@v6
2222

2323
- name: Validate Gradle Wrapper
24-
uses: gradle/actions/wrapper-validation@v4
24+
uses: gradle/actions/wrapper-validation@v5
2525

26-
- name: Set up JDK 17
26+
- name: Set up JDK 21
2727
uses: actions/setup-java@v5
2828
with:
2929
distribution: temurin
30-
java-version: "17"
30+
java-version: "21"
3131

3232
- name: Set up Gradle
33-
uses: gradle/actions/setup-gradle@v4
33+
uses: gradle/actions/setup-gradle@v5
3434

3535
- name: Set up Android SDK
36-
uses: android-actions/setup-android@v3
36+
uses: android-actions/setup-android@v4
3737

3838
- name: Install Android SDK packages
3939
run: |

.github/workflows/release.yml

Lines changed: 35 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -17,24 +17,24 @@ jobs:
1717

1818
steps:
1919
- name: Checkout
20-
uses: actions/checkout@v5
20+
uses: actions/checkout@v6
2121
with:
2222
fetch-depth: 0
2323

2424
- name: Validate Gradle Wrapper
25-
uses: gradle/actions/wrapper-validation@v4
25+
uses: gradle/actions/wrapper-validation@v5
2626

27-
- name: Set up JDK 17
27+
- name: Set up JDK 21
2828
uses: actions/setup-java@v5
2929
with:
3030
distribution: temurin
31-
java-version: "17"
31+
java-version: "21"
3232

3333
- name: Set up Gradle
34-
uses: gradle/actions/setup-gradle@v4
34+
uses: gradle/actions/setup-gradle@v5
3535

3636
- name: Set up Android SDK
37-
uses: android-actions/setup-android@v3
37+
uses: android-actions/setup-android@v4
3838

3939
- name: Install Android SDK packages
4040
run: |
@@ -70,24 +70,43 @@ jobs:
7070
- name: Sign release APK (optional)
7171
id: sign_release
7272
if: steps.detect.outputs.unsigned_exists == 'true' && steps.signing_ready.outputs.enabled == 'true'
73-
uses: r0adkll/sign-android-release@v1
74-
with:
75-
releaseDirectory: app/build/outputs/apk/release
76-
signingKeyBase64: ${{ secrets.ANDROID_SIGNING_KEY_BASE64 }}
77-
alias: ${{ secrets.ANDROID_ALIAS }}
78-
keyStorePassword: ${{ secrets.ANDROID_KEYSTORE_PASSWORD }}
79-
keyPassword: ${{ secrets.ANDROID_KEY_PASSWORD }}
8073
env:
81-
BUILD_TOOLS_VERSION: "36.0.0"
74+
KEY_B64: ${{ secrets.ANDROID_SIGNING_KEY_BASE64 }}
75+
KEY_ALIAS: ${{ secrets.ANDROID_ALIAS }}
76+
STORE_PASS: ${{ secrets.ANDROID_KEYSTORE_PASSWORD }}
77+
KEY_PASS: ${{ secrets.ANDROID_KEY_PASSWORD }}
78+
run: |
79+
set -euo pipefail
80+
UNSIGNED_APK="app/build/outputs/apk/release/app-release-unsigned.apk"
81+
ALIGNED_APK="app/build/outputs/apk/release/app-release-aligned.apk"
82+
SIGNED_APK="app/build/outputs/apk/release/app-release-signed.apk"
83+
KEYSTORE_PATH="$RUNNER_TEMP/release-keystore.jks"
84+
ZIPALIGN="${ANDROID_SDK_ROOT}/build-tools/36.0.0/zipalign"
85+
APKSIGNER="${ANDROID_SDK_ROOT}/build-tools/36.0.0/apksigner"
86+
87+
echo "$KEY_B64" | base64 --decode > "$KEYSTORE_PATH"
88+
89+
"$ZIPALIGN" -f -p 4 "$UNSIGNED_APK" "$ALIGNED_APK"
90+
"$APKSIGNER" sign \
91+
--ks "$KEYSTORE_PATH" \
92+
--ks-key-alias "$KEY_ALIAS" \
93+
--ks-pass "pass:${STORE_PASS}" \
94+
--key-pass "pass:${KEY_PASS}" \
95+
--out "$SIGNED_APK" \
96+
"$ALIGNED_APK"
97+
"$APKSIGNER" verify "$SIGNED_APK"
98+
99+
rm -f "$KEYSTORE_PATH"
100+
echo "signed_release_file=$SIGNED_APK" >> "$GITHUB_OUTPUT"
82101
83102
- name: Prepare release assets
84103
run: |
85104
set -euo pipefail
86105
mkdir -p dist
87106
cp app/build/outputs/apk/debug/app-debug.apk dist/weavelet-debug.apk
88107
89-
if [ -n "${{ steps.sign_release.outputs.signedReleaseFile }}" ] && [ -f "${{ steps.sign_release.outputs.signedReleaseFile }}" ]; then
90-
cp "${{ steps.sign_release.outputs.signedReleaseFile }}" dist/weavelet-release-signed.apk
108+
if [ -n "${{ steps.sign_release.outputs.signed_release_file }}" ] && [ -f "${{ steps.sign_release.outputs.signed_release_file }}" ]; then
109+
cp "${{ steps.sign_release.outputs.signed_release_file }}" dist/weavelet-release-signed.apk
91110
elif [ -f "app/build/outputs/apk/release/app-release.apk" ]; then
92111
cp app/build/outputs/apk/release/app-release.apk dist/weavelet-release.apk
93112
elif [ -f "app/build/outputs/apk/release/app-release-unsigned.apk" ]; then

app/build.gradle.kts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,7 @@ dependencies {
6363
implementation(libs.wear.tooling.preview)
6464
implementation(libs.activity.compose)
6565
implementation(libs.core.splashscreen)
66+
implementation(libs.androidx.fragment.ktx)
6667

6768
implementation(libs.wear.tiles)
6869
implementation(libs.wear.protolayout)

gradle/libs.versions.toml

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -17,6 +17,7 @@ playServicesWearable = "19.0.0"
1717
wearToolingPreview = "1.0.0"
1818
activityCompose = "1.13.0"
1919
coreSplashscreen = "1.2.0"
20+
fragment = "1.8.9"
2021
tilesTooling = "1.5.0"
2122
compose = "1.7.8"
2223
wearComposeFoundation = "1.5.6"
@@ -51,6 +52,7 @@ ui-test-junit4 = { group = "androidx.compose.ui", name = "ui-test-junit4", versi
5152
wear-tooling-preview = { group = "androidx.wear", name = "wear-tooling-preview", version.ref = "wearToolingPreview" }
5253
activity-compose = { group = "androidx.activity", name = "activity-compose", version.ref = "activityCompose" }
5354
core-splashscreen = { group = "androidx.core", name = "core-splashscreen", version.ref = "coreSplashscreen" }
55+
androidx-fragment-ktx = { group = "androidx.fragment", name = "fragment-ktx", version.ref = "fragment" }
5456
tiles-tooling = { group = "androidx.wear.tiles", name = "tiles-tooling", version.ref = "tilesTooling" }
5557
wear-compose-foundation = { group = "androidx.wear.compose", name = "compose-foundation", version.ref = "wearComposeFoundation" }
5658
wear-compose-material3 = { group = "androidx.wear.compose", name = "compose-material3", version.ref = "wearComposeMaterial3" }

0 commit comments

Comments
 (0)