11name : Build Android APK
22
33on :
4- push :
5- branches :
6- - main
4+ workflow_dispatch :
75
86jobs :
97 build :
108 runs-on : ubuntu-latest
119
10+ env :
11+ FORCE_JAVASCRIPT_ACTIONS_TO_NODE24 : true
12+
1213 steps :
1314 - name : Checkout Repository
1415 uses : actions/checkout@v4
1516
1617 - name : Setup Node.js
1718 uses : actions/setup-node@v4
1819 with :
19- node-version : 20
20+ node-version : 22
2021
2122 - name : Setup Java 17
2223 uses : actions/setup-java@v4
@@ -31,72 +32,61 @@ jobs:
3132 run : npm run build
3233
3334 - name : Export Static Files
34- run : |
35- npx next export || true
35+ run : npx next export
3636
37- - name : Install Capacitor v6
37+ - name : Install Capacitor + Filesystem Plugin
3838 run : |
39- npm install @capacitor/core@6.1.2
40- npm install @capacitor/cli@6.1.2
41- npm install @capacitor/android@6.1.2
39+ npm install @capacitor/core @capacitor/cli @capacitor/android @capacitor/filesystem
4240
4341 - name : Create Android Project
4442 run : |
45- npx cap add android || true
46-
47- - name : Sync Capacitor
48- run : |
49- npx cap sync android
50-
51- - name : Install Capacitor Assets
52- run : |
53- npm install -g @capacitor/assets
43+ npx cap add android
5444
55- - name : Generate Android Icons
45+ - name : Add Android Permissions
5646 run : |
57- capacitor-assets generate --android
47+ sed -i '/<manifest/a\
48+ <uses-permission android:name="android.permission.INTERNET" />\
49+ <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />\
50+ <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />\
51+ <uses-permission android:name="android.permission.MANAGE_EXTERNAL_STORAGE" />' android/app/src/main/AndroidManifest.xml
5852
59- - name : Inject Kotlin Native Files
53+ - name : Add Launcher Activity
6054 run : |
61- mkdir -p android/app/src/main/java/com/byteswave/kirijo
62- cp kotlin-native/*.kt android/app/src/main/java/com/byteswave/kirijo/ || true
55+ sed -i '/<activity/a\
56+ <intent-filter>\
57+ <action android:name="android.intent.action.MAIN" />\
58+ <category android:name="android.intent.category.LAUNCHER" />\
59+ </intent-filter>' android/app/src/main/AndroidManifest.xml
6360
64- - name : Create Android Manifest
61+ - name : Sync Capacitor
6562 run : |
66- mkdir -p android/app/src/main
67-
68- cat <<'EOF' > android/app/src/main/AndroidManifest.xml
69- <?xml version="1.0" encoding="utf-8"?>
70- <manifest xmlns:android="http://schemas.android.com/apk/res/android">
71-
72- <uses-permission android:name="android.permission.POST_NOTIFICATIONS"/>
73- <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE"/>
74- <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE"/>
75-
76- <application
77- android:allowBackup="true"
78- android:label="Kirijo"
79- android:supportsRtl="true">
80- </application>
81-
82- </manifest>
83- EOF
63+ npx cap sync android
8464
8565 - name : Force Java 17 Compatibility
8666 run : |
87- sed -i 's/VERSION_21/VERSION_17/g' android/**/*.gradle || true
88- sed -i 's/jvmTarget = "21"/jvmTarget = "17"/g' android/**/*.gradle || true
89- sed -i 's/sourceCompatibility = JavaVersion.VERSION_21/sourceCompatibility = JavaVersion.VERSION_17/g' android/**/*.gradle || true
90- sed -i 's/targetCompatibility = JavaVersion.VERSION_21/targetCompatibility = JavaVersion.VERSION_17/g' android/**/*.gradle || true
67+ echo '
68+ android {
69+ compileOptions {
70+ sourceCompatibility JavaVersion.VERSION_17
71+ targetCompatibility JavaVersion.VERSION_17
72+ }
73+ }
74+
75+ tasks.withType(org.jetbrains.kotlin.gradle.tasks.KotlinCompile).configureEach {
76+ kotlinOptions {
77+ jvmTarget = "17"
78+ }
79+ }
80+ ' >> android/app/build.gradle
9181
9282 - name : Build Release APK
9383 run : |
9484 cd android
9585 chmod +x gradlew
96- ./gradlew clean assembleRelease --stacktrace
86+ ./gradlew assembleRelease
9787
9888 - name : Upload APK Artifact
9989 uses : actions/upload-artifact@v4
10090 with :
10191 name : kirijo-release-apk
102- path : android/app/build/outputs/apk/release/*.apk
92+ path : path: android/app/build/outputs/apk/release/*.apk
0 commit comments