Flutter releasebuild bundle 太大了

Flutter releasebuild bundle is too big

我最近从 Android 原生 Java 平台切换到 Flutter。从教程和在线信息中,我了解到 dubug 应用程序的大小可能很大,但发行版不会。

Flutter 发布构建包为 123.7 MB。安装后,应用程序大小会增加到大约 300 到 350 MB。

我的资产中没有媒体。所有 mipmap 和 drawable 都被缩小到总计小于 100 kbs。

我有这个应用程序,我正在使用以下插件:

  cupertino_icons: ^1.0.2
  flutter_native_splash: ^1.2.3
  firebase_core:
  firebase_auth: ^3.1.3
  cloud_firestore: ^2.5.3
  firebase_messaging: ^10.0.8
  firebase_storage: ^10.0.5
  sqflite: ^2.0.0+4
  path_provider: ^2.0.5
  permission_handler: ^8.1.6
  pinput: ^1.2.0
  flutter_launcher_icons: ^0.9.2
  http: ^0.13.3
  flutter_local_notifications: ^8.2.0
  contacts_service: ^0.6.3
  intl: ^0.17.0
  file_picker: ^4.1.4
  cached_network_image: ^3.1.0
  provider: ^6.0.1
  awesome_notifications: any
  flutter_sound: ^8.4.1+1
  stream_transform: ^2.0.0
  jitsi_meet: ^4.0.0
  dio: ^4.0.1
  google_fonts: ^2.1.0
  share_plus: ^3.0.4
  fluttertoast: ^8.0.8
  connectivity_plus: ^2.0.2
  shared_preferences: ^2.0.8
  random_string: ^2.3.1

我在 gradle 中使用 Proguard:

buildTypes {
    release {
        signingConfig signingConfigs.release
        minifyEnabled true
        shrinkResources true
        useProguard true
        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
    }
}

混淆规则文件:

## Flutter wrapper
 -keep class io.flutter.app.** { *; }
 -keep class io.flutter.plugin.** { *; }
 -keep class io.flutter.util.** { *; }
 -keep class io.flutter.view.** { *; }
 -keep class io.flutter.** { *; }
 -keep class io.flutter.plugins.** { *; }
 -keep class com.google.firebase.** { *; }
 -dontwarn io.flutter.embedding.**
 -ignorewarnings

我也试过像下面这样清理和运行构建查询,但没有区别:

flutter clean && flutter build appbundle

如有任何建议和帮助,我们将不胜感激。

更新:

根据 שו אוהב אותך 的建议,问题似乎出在 flutter_sound 插件上。我从 flutter_sound 切换到 flutter_sound_lite 并尝试重建。现在我得到错误。

Attribute receiver#androidx.media.session.MediaButtonReceiver@exported value=(false) from [:awesome_notifications] AndroidManifest.xml:59:13-37 is also present at [com.github.canardoux:flutter_sound_core:8.4.2] AndroidManifest.xml:18:13-36 value=(true). Suggestion: add 'tools:replace="android:exported"' to element at AndroidManifest.xml:57:9-63:20 to override.

清单:

<activity> // Main Activity
    <intent-filter>
        <action android:name="FLUTTER_NOTIFICATION_CLICK" />
        <category android:name="android.intent.category.DEFAULT"/>
    </intent-filter>
</activity>

有什么建议吗?谢谢。

根据 שו אוהב אותך 的建议,问题似乎出在 flutter_sound 插件 上。我从 flutter_sound 切换到 flutter_sound_lite 但问题仍然存在。

所以最后我开发了自己的 Flutter 插件。目前它仅适用于 android,但很快就会适用于 IOS。

现在我的 appbundle 大小已经从 123.6 MB.47.6 MB 减少到 47.6 MB

插件link如果有人有同样的问题,下面给出:

Flutter 音响系统 - Plugin Link