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
我最近从 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