英文:
How to reduce flutter app apk size when using agora rtc engine and agora uikit
问题
你好!根据你提供的信息,你想要构建一个使用Agora库的Flutter约会应用程序。你还提供了Flutter和Gradle的版本信息以及依赖列表。你想知道如何减小APK文件的大小。
要减小APK文件的大小,你可以考虑以下几个方面:
-
移除未使用的依赖项:检查你的依赖列表,确保只包含你实际使用的库。移除未使用的库可以减小APK文件的大小。
-
优化资源文件:检查你的资源文件,如图片、音频等,确保它们被适当地压缩和优化。你可以使用工具来压缩图片,如TinyPNG,以减小图片文件的大小。
-
使用混淆和压缩:在构建APK文件时,启用混淆和压缩选项可以减小代码的大小。混淆可以使代码变得更难阅读和理解,从而减小APK文件的大小。压缩可以进一步减小代码的大小,提高应用程序的性能。
-
移除调试信息:在构建发布版本的APK时,确保移除所有的调试信息。调试信息会增加APK文件的大小,但在发布应用程序时并不需要它们。
-
使用动态链接库(NDK):如果你的应用程序使用了大量的本机代码,考虑使用动态链接库(NDK)来减小APK文件的大小。将本机代码打包到动态链接库中,可以减小APK文件的大小,并在应用程序运行时动态加载本机代码。
希望这些建议对你有帮助!如果你有任何其他问题,请随时问我。
英文:
building a dating site in flutter which is using agora libraries
flutter version 3.10.5
jdk 18
gradle 7.5 (gradle properties)
app gradele dependecies are
buildscript {
ext.kotlin_version = '1.8.21'
repositories {
google()
mavenCentral()
}
dependencies {
classpath 'com.android.tools.build:gradle:7.2.0'
classpath 'com.google.gms:google-services:4.3.10'
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
}
here are flutter dependancy list
dependencies:
agora_rtc_engine: ^6.1.1
agora_uikit: ^1.3.3
awesome_snackbar_content: ^0.1.3
cached_network_image: ^3.2.3
cloud_firestore: ^4.5.0
country_code_picker: ^3.0.0
crop_image: ^1.0.5
cupertino_icons: ^1.0.2
easy_localization: ^3.0.1
equatable: ^2.0.5
firebase_auth: ^4.4.0
firebase_core: ^2.4.0
google_sign_in:
firebase_messaging: ^14.1.4
firebase_storage: ^11.1.0
flutter:
sdk: flutter
flutter_bloc: ^8.1.2
flutter_callkit_incoming: ^2.0.0
flutter_facebook_auth: ^5.0.11
flutter_flushbar: ^0.0.2
flutter_geocoder: ^0.2.2-nullsafety
flutter_image_compress: ^1.1.3
flutter_mapbox_autocomplete: ^2.0.0
flutter_ringtone_player: ^3.2.0
flutter_swiper_null_safety: ^1.0.2
fluttertoast: ^8.2.1
font_awesome_flutter: ^10.4.0
google_mobile_ads: ^3.0.0
http: ^0.13.5
image: ^4.0.16
image_cropper: ^3.0.2
image_picker: ^0.8.7+3
in_app_purchase: 3.1.5
location: ^4.4.0
path_provider: ^2.0.14
permission_handler: ^10.2.0
pin_code_fields: ^7.4.0
provider: ^6.0.5
rflutter_alert: ^2.0.4
share_plus: ^6.3.2
shimmer: ^2.0.0
swipable_stack: ^2.0.0
url_launcher: ^6.1.10
uuid: ^3.0.7
**when i build apk with **
flutter build apk --target-platform android-arm64 --analyze-size --release
the output comes:
app-arm64-v8a-release.apk (total compressed) 53 MB
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
META-INF/
CERT.SF 49 KB
CERT.RSA 1018 B
MANIFEST.MF 44 KB
assets/
dexopt 2 KB
flutter_assets 1 MB
classes.dex 3 MB
classes2.dex 3 MB
lib/
arm64-v8a 43 MB
Dart AOT symbols accounted decompressed size 9 MB
package:flutter 4 MB
package:image 778 KB
package:hookup4u2 423 KB
dart:core 326 KB
dart:ui 277 KB
package:agora_rtc_engine 255 KB
dart:typed_data 215 KB
package:vector_graphics_compiler 170 KB
dart:io 170 KB
dart:collection 158 KB
dart:async 148 KB
dart:ffi 84 KB
package:petitparser 75 KB
package:collection/
src 63 KB
package:agora_uikit 63 KB
dart:convert 61 KB
package:firebase_auth_platform_interface 58 KB
package:vector_math 55 KB
package:intl 49 KB
package:google_mobile_ads 48 KB
AndroidManifest.xml 8 KB
res/
04.png 2 KB
1Q.xml 1 KB
1k.png 126 KB
1r.png 126 KB
27.png 2 KB
33.9.png 2 KB
4F.png 126 KB
51.9.png 2 KB
5V.png 2 KB
7r.png 1 KB
Aj.xml 1 KB
CG.png 13 KB
D2.png 9 KB
D4.png 2 KB
E9.png 9 KB
EA.png 126 KB
EL.png 1 KB
ER.9.png 2 KB
EW.xml 1 KB
FM.9.png 1 KB
FU.png 1 KB
Fc.png 3 KB
Fo.png 126 KB
GY.png 5 KB
Gr.png 28 KB
Hg.png 2 KB
J6.9.png 2 KB
JQ.png 3 KB
Ji.png 149 KB
L1.png 149 KB
LN.xml 1 KB
LY.png 149 KB
Mr.9.png 1 KB
Mt.xml 1 KB
Ov.png 2 KB
Pi.9.png 3 KB
Q11.9.png 3 KB
Q2.png 8 KB
Rg.xml 1 KB
SD.png 3 KB
Tx.9.png 1 KB
VN.png 18 KB
Vq.png 1 KB
YM.9.png 1 KB
_R.png 7 KB
_c.png 1 KB
aO.9.png 1 KB
b8.png 11 KB
cQ.png 149 KB
color-v23 2 KB
color 5 KB
d4.png 1 KB
e1.xml 1 KB
eB.9.png 2 KB
eh.png 5 KB
g-.png 11 KB
gA.xml 2 KB
gV.9.png 1 KB
hI.mp3 166 KB
jZ.9.png 1 KB
jy.png 5 KB
kX.png 26 KB
le.png 2 KB
m3.9.png 1 KB
oL.png 6 KB
p4.png 4 KB
ra.png 149 KB
rc.png 1 KB
sB.png 126 KB
tI.png 1 KB
tj.9.png 2 KB
u3.png 2 KB
wi.9.png 2 KB
wi1.9.png 1 KB
y6.png 1 KB
yB.xml 1 KB
tried to find the actual size occupied by each library with running devtools
output:
you can see arm64-v8a is much bigger
could you please suggest me how can i reduce the apk size overall
thanks in advance
[sorry for my bad english]
答案1
得分: 1
所以,最好的方法是使用Android App Bundle而不是APK来交付您的应用程序。这样,Play商店将仅向交付的应用程序添加必要的库,始终确保尽可能小的大小(尽管捆绑包本身有时可能较大)。
如果您被迫使用APK,因为您正在通过Play商店以外的渠道分发您的应用程序(例如Firebase分发或App Center),那么您可以尝试在应用程序清单的应用程序标签中添加属性android:extractNativeLibs="true"
。
这将减小您的APK大小,尽管会稍微增加安装后应用程序的大小。将此参数设置为true后,生成的APK将压缩本机库(arm64-v8a
是一个本机库),总大小将减小。
<application
android:label="Welcome+"
android:icon="@mipmap/ic_launcher"
android:extractNativeLibs="true">
英文:
So the best way to go would be to use an Android App Bundle instead of an APK for delivering your application. That way the Play Store will only add the necessaries libraries to the delivered app always ensuring the smallest size as possible (although the bundle itself may be larger sometimes).
If you are forced to use APK because you are distributing your app trough other channels than the Play Store (i.e. Firebase distribution or App Center) than you could try to add, in the application tag of your app manifest, the property android:extractNativeLibs="true"
.
This will reduce the size of your APK although slightly increase the size of the installed app. With this parameter set to true the native libraries (arm64-v8a
is a native lib) will be compressed in the generated APK and the total size will be reduced.
<application
android:label="Welcome+"
android:icon="@mipmap/ic_launcher"
android:extractNativeLibs="true">
通过集体智慧和协作来改善编程学习和解决问题的方式。致力于成为全球开发者共同参与的知识库,让每个人都能够通过互相帮助和分享经验来进步。
评论