接入Zoom后Flutter APK体积大幅上涨,如何有效降低应用包体积?
Flutter集成flutter_zoom_sdk后APK体积优化方案
- 拆分架构构建单独包
你当前打的是包含arm64-v8a、armeabi-v7a两个架构的通用APK,两个架构的so库都会被打包进去。可使用--split-per-abi参数拆分构建每个架构的独立APK,单架构APK体积可下降30%左右:
若上架Google Play,优先使用App Bundle(AAB)格式构建,用户从应用商店下载时只会获取对应设备架构的资源,实际下载体积比通用APK小很多:flutter build apk --release --split-per-abiflutter build appbundle --release - 开启代码混淆与资源压缩
在android/app/build.gradle的release构建配置中开启R8混淆与无用资源剔除,注意需要额外添加Zoom SDK的混淆规则避免功能异常:
在android/app/proguard-rules.pro文件中添加Zoom保留规则:buildTypes { release { signingConfig signingConfigs.release minifyEnabled true // 开启代码混淆 shrinkResources true // 剔除无用资源 ndk { abiFilters "arm64-v8a", "armeabi-v7a" } proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' } }-keep class us.zoom.** {*;} -keep class com.zipow.** {*;} -keep class org.webrtc.** {*;} - 裁剪冗余资源与调试信息
打包时添加混淆与拆分调试信息参数,移除Flutter侧的调试符号:
同时可在build.gradle的defaultConfig中配置resConfigs只保留应用需要的语言,剔除Zoom SDK中多余的多语言资源:flutter build apk --release --split-per-abi --obfuscate --split-debug-info=./debug_symbolsandroid { defaultConfig { // 仅保留应用需要的语言资源,按需修改即可 resConfigs "zh", "en" } } - 剔除Zoom SDK不必要的功能模块
Zoom原生SDK默认包含完整功能模块,若你不需要虚拟背景、白板、直播等非核心功能,可在android/app/build.gradle的dependencies中排除不需要的模块:dependencies { implementation('com.zoom.sdk:zoom-sdk-android:对应依赖版本号') { exclude group: 'us.zoom', module: 'virtualbackground' exclude group: 'us.zoom', module: 'whiteboard' exclude group: 'us.zoom', module: 'livestreaming' } }
内容的提问来源于stack exchange,提问作者Gaurav Sharma
相关产品推荐
相关产品推荐

