如何在使用Agora RTC引擎和Agora UIKit时减小Flutter应用APK大小

huangapple go评论177阅读模式
英文:

How to reduce flutter app apk size when using agora rtc engine and agora uikit

问题

构建一个使用Agora库的Flutter约会网站。

Flutter版本3.10.5
JDK 18
Gradle 7.5 (Gradle属性)

应用Gradle依赖项如下:

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"
    }
}

以下是Flutter依赖项列表:

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

当我使用以下命令构建APK时:

flutter build apk --target-platform android-arm64 --analyze-size  --release

输出如下:

app-arm64-v8a-release.apk (总压缩大小) 53 MB

尝试使用DevTools查找每个库实际占用的大小,输出如下:

如何在使用Agora RTC引擎和Agora UIKit时减小Flutter应用APK大小

你可以看到arm64-v8a占用的空间要大得多。请问我如何能够减小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:
如何在使用Agora RTC引擎和Agora UIKit时减小Flutter应用APK大小

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 Store将仅向交付的应用程序添加必要的库,始终确保尽可能小的大小(尽管捆绑包本身有时可能较大)。

如果您被迫使用APK,因为您通过Play Store以外的渠道分发您的应用程序(例如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=&quot;true&quot;.

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.

&lt;application
    android:label=&quot;Welcome+&quot;
    android:icon=&quot;@mipmap/ic_launcher&quot;
    android:extractNativeLibs=&quot;true&quot;&gt;

huangapple
  • 本文由 发表于 2023年8月9日 14:22:43
  • 转载请务必保留本文链接:https://go.coder-hub.com/76865076-2.html
匿名

发表评论

匿名网友

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen:

确定