Skip to content

Commit fb44957

Browse files
author
Z User
committed
feat: add APK signing configuration for release builds
- Added signingConfigs.release to app/build.gradle - Release buildType now uses signingConfig - Keystore decoded from GitHub secrets in CI workflow - Added apksigner verification step to confirm signing
1 parent 4c225d0 commit fb44957

File tree

2 files changed

+26
-3
lines changed

2 files changed

+26
-3
lines changed

.github/workflows/build.yml

Lines changed: 16 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -37,22 +37,35 @@ jobs:
3737
- name: Grant execute permission for gradlew
3838
run: chmod +x gradlew
3939

40+
- name: Decode keystore
41+
run: echo "${{ secrets.KEYSTORE_BASE64 }}" | base64 --decode > app/kitabu-release.jks
42+
4043
- name: Build Debug APK
4144
run: ./gradlew assembleDebug
4245

43-
- name: Build Release APK (unsigned)
46+
- name: Build Signed Release APK
47+
env:
48+
KEYSTORE_PATH: kitabu-release.jks
49+
KEYSTORE_PASSWORD: ${{ secrets.KEYSTORE_PASSWORD }}
50+
KEY_ALIAS: ${{ secrets.KEY_ALIAS }}
51+
KEY_PASSWORD: ${{ secrets.KEY_PASSWORD }}
4452
run: ./gradlew assembleRelease
4553

54+
- name: Verify APK is signed
55+
run: |
56+
ls -la app/build/outputs/apk/release/
57+
$ANDROID_HOME/build-tools/$(ls $ANDROID_HOME/build-tools/ | tail -1)/apksigner verify --print-certs app/build/outputs/apk/release/*.apk
58+
4659
- name: Upload Debug APK
4760
uses: actions/upload-artifact@v4
4861
with:
4962
name: kitabu-debug
5063
path: app/build/outputs/apk/debug/*.apk
5164

52-
- name: Upload Release APK
65+
- name: Upload Signed Release APK
5366
uses: actions/upload-artifact@v4
5467
with:
55-
name: kitabu-release
68+
name: kitabu-release-signed
5669
path: app/build/outputs/apk/release/*.apk
5770

5871
- name: Create GitHub Release

app/build.gradle

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,15 @@ android {
99
namespace 'com.kitabu.app'
1010
compileSdk 35
1111

12+
signingConfigs {
13+
release {
14+
storeFile file(System.getenv("KEYSTORE_PATH") ?: "kitabu-release.jks")
15+
storePassword System.getenv("KEYSTORE_PASSWORD") ?: "kitabu2025"
16+
keyAlias System.getenv("KEY_ALIAS") ?: "kitabu"
17+
keyPassword System.getenv("KEY_PASSWORD") ?: "kitabu2025"
18+
}
19+
}
20+
1221
defaultConfig {
1322
applicationId "com.kitabu.app"
1423
minSdk 26
@@ -22,6 +31,7 @@ android {
2231
release {
2332
minifyEnabled true
2433
shrinkResources true
34+
signingConfig signingConfigs.release
2535
proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
2636
}
2737
debug {

0 commit comments

Comments
 (0)