Skip to content

Commit 74029b4

Browse files
perf(android): reduce APK size with ABI splitting, R8, and lib exclusions (#2)
- Split release APK per ABI (arm64 + x64 only), dropping universal fat build - Enable R8 minification and resource shrinking for release builds - Exclude Vulkan debug validation layer from release packaging - Exclude unused MediaPipe image generation libs from release packaging
1 parent 6f533bc commit 74029b4

2 files changed

Lines changed: 17 additions & 5 deletions

File tree

.github/workflows/release.yml

Lines changed: 7 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -35,18 +35,20 @@ jobs:
3535
run: dart run build_runner build --delete-conflicting-outputs
3636

3737
- name: Build release APK
38-
run: flutter build apk --release
38+
run: flutter build apk --release --split-per-abi --target-platform android-arm64,android-x64
3939

40-
- name: Rename APK with version
40+
- name: Rename APKs with version
4141
run: |
42-
mv build/app/outputs/flutter-apk/app-release.apk \
43-
build/app/outputs/flutter-apk/koshika-${{ github.ref_name }}.apk
42+
cd build/app/outputs/flutter-apk
43+
for apk in app-*-release.apk; do
44+
mv "$apk" "koshika-${{ github.ref_name }}-${apk#app-}"
45+
done
4446
4547
- name: Create GitHub Release
4648
uses: softprops/action-gh-release@v2
4749
with:
4850
name: ${{ github.ref_name }}
49-
files: build/app/outputs/flutter-apk/koshika-${{ github.ref_name }}.apk
51+
files: build/app/outputs/flutter-apk/koshika-${{ github.ref_name }}-*.apk
5052
generate_release_notes: true
5153
draft: false
5254
prerelease: ${{ contains(github.ref_name, '-') }}

android/app/build.gradle.kts

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -35,9 +35,19 @@ android {
3535
// TODO: Add your own signing config for the release build.
3636
// Signing with the debug keys for now, so `flutter run --release` works.
3737
signingConfig = signingConfigs.getByName("debug")
38+
isMinifyEnabled = true
39+
isShrinkResources = true
3840
proguardFiles(getDefaultProguardFile("proguard-android-optimize.txt"), "proguard-rules.pro")
3941
}
4042
}
43+
44+
packaging {
45+
jniLibs {
46+
excludes += "**/libVkLayer_khronos_validation.so"
47+
excludes += "**/libmediapipe_tasks_vision_image_generator_jni.so"
48+
excludes += "**/libimagegenerator_gpu.so"
49+
}
50+
}
4151
}
4252

4353
flutter {

0 commit comments

Comments
 (0)