ขนาดดาวน์โหลดของแอปของฉันใน Google PlayStore มีขนาดประมาณ23 MB :
แต่ทำไมหลังจากติดตั้งแล้วขนาดของแอปในดิสก์จะเพิ่มขึ้นอย่างมากถึง83 MB :
ความคิดใด ๆ ว่าทำไมสิ่งนี้ถึงเกิดขึ้นเพราะ:
1) ไฟล์สินทรัพย์ของ Flutter (รูปภาพเสียงและแบบอักษร) ในโครงการขนาดประมาณ11 MB
2) ขนาดของ Flutter Source Code (.dart) บนดิสก์เพียง1.4 MB
3) ทรัพยากร / ไอคอน Android ดั้งเดิม (Res) ประมาณ800 KBเท่านั้น
เกี่ยวกับปลั๊กอินของ flutter ฉันใช้ด้านล่าง:
dependencies:
flutter:
sdk: flutter
flutter_localizations:
sdk: flutter
angles: ^1.0.1
app_settings: ^1.0.5
archive: ^2.0.8
cached_network_image: ^1.1.1
carousel_slider: ^1.3.0
cron: ^0.2.1
crypto: ^2.0.6
cupertino_icons: ^0.1.2
date_format: ^1.0.5
device_id: ^0.1.3
dio: ^2.0.0
easy_alert: ^0.0.2
localstorage: ^2.0.0
audioplayers: ^0.13.1
path_provider: ^1.1.0
esys_flutter_share: ^1.0.2
flutter_compass: ^0.3.2
flutter_html: ^0.9.6
flutter_local_notifications: ^0.8.2
flutter_offline: ^0.2.4+1
flutter_swiper: ^1.1.6
flutter_xlider: ^2.4.5
font_awesome_flutter: ^8.2.0
geolocator: ^5.0.1
google_maps_flutter: ^0.2.0
google_sign_in: ^4.0.1+1
http: ^0.12.0+2
libcalendar: ^0.2.0
location : ^2.3.0
numberpicker: ^1.0.0
pigment: ^1.0.3
rxdart: ^0.21.0
shared_preferences: ^0.5.1+1
shimmer: ^1.0.0
unicode: ^0.1.0
url_launcher: ^5.0.2
validate: ^1.6.0
vibrate: ^0.0.4
after_layout: ^1.0.7+2
draggable_scrollbar: ^0.0.4
flutter_web_browser: ^0.11.0
flutter_youtube: ^1.1.6
google_api_availability: ^2.0.1
indexed_list_view: ^0.0.5
permission_handler: ^3.1.0
queries: ^0.1.4
rect_getter: ^0.0.1
scroll_to_index: any
sqflite: ^1.1.5
tuple: ^1.0.2
xml2json: ^3.0.3
firebase_messaging: ^5.1.6
firebase_analytics: ^3.0.2
firebase_core: ^0.4.0+3
firebase_auth: ^0.11.1+6
firebase_admob: ^0.9.0+1
firebase_in_app_messaging: ^0.0.1+3
superellipse_shape: ^0.1.5
device_info: ^0.4.0+2
in_app_purchase: ^0.2.0+6
sentry: any
system_info: ^0.1.1
highlighter_coachmark: ^0.0.3
volume: ^0.1.0
admob_flutter: ^0.3.2
bubble_tab_indicator: "^0.1.4"
material_design_icons_flutter: ^3.0.3289
scoped_model: ^1.0.1
flutter_slidable: ^0.4.9
kiwi: ^0.1.0
flutter_markdown: ^0.2.0
flutter_downloader: ^1.2.1
native_ads: ^0.2.0
onesignal_flutter: ^2.0.0
ความคิดใด ๆ วิธีการลดApp บนขนาด ?
ขอบคุณล่วงหน้า...
UPDATE
ถ้าฉันตั้งค่าminifyEnabled = true
และshrinkResources = true
( ตามที่ Ravinder Kumar ) แนะนำไว้ฉันbuild.gradle
จะสร้างข้อผิดพลาดที่ยาวมากนี่คือบันทึก:
== อาคารสำหรับ Android ==
... (ฉันตัดบันทึกข้อผิดพลาดเนื่องจากมีความยาวมาก แต่บันทึกแบบเต็มสามารถดูได้ที่นี่: https://www.dropbox.com/s/jy92d1lmj9pgb6d/full_flutter_error_log.txt?dl=0 )
หมายเหตุ: การกำหนดค่าจะเก็บจุดเข้าใช้งาน 'io.flutter.plugins.googlesignin.GoogleSignInPlugin $ Delegate $ 3 {void onComplete (com.google.android.gms.tasks.Task); } 'แต่ไม่ใช่คลาสตัวอธิบาย' com.google.android.gms.tasks.Task '
หมายเหตุ: การกำหนดค่าจะเก็บจุดเข้าใช้งาน 'io.flutter.plugins.inapppurchase.Translator {java.util.HashMap จากSkuDetail (com.android.billingclient.api.SkuDetails); } 'แต่ไม่ใช่คลาสตัวอธิบาย' com.android.billingclient.api.SkuDetails '
หมายเหตุ: การกำหนดค่าจะเก็บจุดเข้าใช้งาน 'io.flutter.plugins.inapppurchase.Translator {java.util.HashMap จากPurchase (com.android.billingclient.api.Purchase); } 'แต่ไม่ใช่คลาสตัวอธิบาย' com.android.billingclient.api.Purchase '
หมายเหตุ: การกำหนดค่าจะเก็บจุดเข้าใช้งาน 'io.flutter.plugins.inapppurchase.Translator {java.util.HashMap จากPurchasesResult (com.android.billingclient.api.Purchase $ PurchasesResult); } ', แต่ไม่ใช่คลาสตัวอธิบาย' com.android.billingclient.api.Purchase $ PurchasesResult '
หมายเหตุ: มีการอ้างอิงถึง 7 คลาสที่ไม่รู้จัก
You should check your configuration for typos. (http://proguard.sourceforge.net/manual/troubleshooting.html#unknownclass)
หมายเหตุ: มีการอ้างอิง 3 ครั้งสำหรับสมาชิกคลาสที่ไม่รู้จัก
You should check your configuration for typos.
หมายเหตุ: มี 242 คลาส descriptor unkept ในสมาชิกคลาสที่เก็บไว้
You should consider explicitly keeping the mentioned classes (using '-keep'). (http://proguard.sourceforge.net/manual/troubleshooting.html#descriptorclass)
หมายเหตุ: มี 68 การอ้างอิงแบบไดนามิกที่ไม่ได้รับการแก้ไขไปยังคลาสหรืออินเทอร์เฟซ
You should check if you need to specify additional program jars. (http://proguard.sourceforge.net/manual/troubleshooting.html#dynamicalclass)
คำเตือน: มีการอ้างอิง 25 คลาสหรืออินเตอร์เฟสที่ไม่ได้รับการแก้ไข
You may need to add missing library jars or update their versions. If your code works fine without the missing classes, you can suppress the warnings with '-dontwarn' options. (http://proguard.sourceforge.net/manual/troubleshooting.html#unresolvedclass)
คำเตือน: มี 2 การอ้างอิงที่ยังไม่ได้แก้ไขกับสมาชิกคลาสไลบรารี
You probably need to update the library versions. (http://proguard.sourceforge.net/manual/troubleshooting.html#unresolvedlibraryclassmember)
คำเตือน: ข้อยกเว้นขณะประมวลผลงาน java.io.IOException: โปรดแก้ไขคำเตือนข้างต้นก่อน
หัวข้อ (งาน Limiter_1): การทำลายการเรียกใช้งาน Gradle 'bundleRelease' ... 690.7s (!)
************************************************** **********************> ********************* ความล้มเหลวของการไล่ระดับสีอาจเป็นเพราะ AndroidX> ความเข้ากันไม่ได้ในแอพ Flutter นี้ ดู "https: //goo.gl / CP92wY" สำหรับข้อมูลเพิ่มเติมเกี่ยวกับปัญหาและ> วิธีแก้ไข ************************************************** **********************> ********************* บันเดิลภารกิจ gradleRelease ล้มเหลวด้วยรหัสออก 1
การสร้างล้มเหลว: | ไม่สามารถสร้างสำหรับ Android
btw ด้านล่างเป็นของฉัน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.baseflow.** { *; }
#-keep class com.chartboost.** { *; }
-dontwarn com.google.common.base.**
-keep class com.google.common.base.** {*;}
-dontwarn com.google.errorprone.annotations.**
-keep class com.google.errorprone.annotations.** {*;}
-dontwarn com.google.j2objc.annotations.**
-keep class com.google.j2objc.annotations.** { *; }
-dontwarn java.lang.ClassValue
-keep class java.lang.ClassValue { *; }
-dontwarn org.codehaus.mojo.animal_sniffer.IgnoreJRERequirement
-keep class org.codehaus.mojo.animal_sniffer.IgnoreJRERequirement { *; }