Ukuran Unduhan Bundel Aplikasi Saya di Google PlayStore sekitar 23 MB :
Tapi Mengapa setelah diinstal, Ukuran Aplikasi pada Disk meningkat secara signifikan menjadi 83 MB :
Gagasan mengapa ini terjadi, karena:
1) File aset Flutter (gambar, suara & font) pada proyek hanya sekitar 11 MB
2) Ukuran Flutter Source Code (.dart) pada disk hanya 1,4 MB
3) Android Native Resource / ikon (Res) hanya sekitar 800 KB
tentang plugin flutter yang saya gunakan di bawah:
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
Any Idea Bagaimana mengurangi Ukuran App On ?
Terima kasih sebelumnya...
MEMPERBARUI
Jika saya mengatur minifyEnabled = true
dan shrinkResources = true
( seperti yang disarankan oleh Ravinder Kumar ) di saya build.gradle
maka itu akan menghasilkan kesalahan yang sangat panjang, inilah lognya:
== Membangun untuk Android ==
... (Saya memotong log kesalahan karena sangat panjang, tetapi log lengkap dapat dilihat di sini: https://www.dropbox.com/s/jy92d1lmj9pgb6d/full_flutter_error_log.txt?dl=0 )
Catatan: konfigurasi membuat titik entri 'io.flutter.plugins.googlesignin.GoogleSignInPlugin $ Delegasi $ 3 {batal onComplete (com.google.android.gms.tasks.Task); } ', tetapi bukan kelas deskriptor' com.google.android.gms.tasks.Task '
Catatan: konfigurasi membuat entry point 'io.flutter.plugins.inapppurchase.Translator {java.util.HashMap fromSkuDetail (com.android.billingclient.api.SkuDetails); } ', tetapi bukan kelas deskriptor' com.android.billingclient.api.SkuDetails '
Catatan: konfigurasi membuat entry point 'io.flutter.plugins.inapppurchase.Translator {java.util.HashMap fromPurchase (com.android.billingclient.api.Purchase); } ', tetapi bukan kelas deskriptor' com.android.billingclient.api.Pembelian '
Catatan: konfigurasi membuat titik entri 'io.flutter.plugins.inapppurchase.Translator {java.util.HashMap fromPurchasesResult (com.android.billingclient.api.Purchase $ PurchasesResult); } ', tetapi bukan kelas deskriptor' com.android.billingclient.api.Pembelian $ PurchasesResult '
Catatan: ada 7 referensi ke kelas yang tidak diketahui.
You should check your configuration for typos. (http://proguard.sourceforge.net/manual/troubleshooting.html#unknownclass)
Catatan: ada 3 referensi untuk anggota kelas yang tidak dikenal.
You should check your configuration for typos.
Catatan: ada 242 kelas deskriptor yang tidak diurus di anggota kelas yang disimpan.
You should consider explicitly keeping the mentioned classes (using '-keep'). (http://proguard.sourceforge.net/manual/troubleshooting.html#descriptorclass)
Catatan: ada 68 referensi dinamis yang tidak terselesaikan untuk kelas atau antarmuka.
You should check if you need to specify additional program jars. (http://proguard.sourceforge.net/manual/troubleshooting.html#dynamicalclass)
Peringatan: ada 25 referensi yang tidak terselesaikan untuk kelas atau antarmuka.
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)
Peringatan: ada 2 referensi yang tidak terselesaikan untuk anggota kelas perpustakaan.
You probably need to update the library versions. (http://proguard.sourceforge.net/manual/troubleshooting.html#unresolvedlibraryclassmember)
Peringatan: Pengecualian saat memproses tugas java.io.IOException: Harap perbaiki peringatan di atas terlebih dahulu.
Utas (Tugas limiter_1): penghancuran Menjalankan tugas Gradle 'bundleRelease' ... 690.7d (!)
************************************************ **********************> ******************* Kegagalan Gradle mungkin karena AndroidX> tidak kompatibel dalam aplikasi Flutter ini. Lihat "https: //goo.gl / CP92wY" untuk informasi lebih lanjut tentang masalah dan> cara memperbaikinya. ************************************************ **********************> ******************* Tugas bundle kelulusan gagal dengan kode keluar 1
Gagal membangun: | Gagal membangun untuk Android
btw, di bawah ini adalah milik saya 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 { *; }
Jawaban:
Jawaban saya didasarkan pada dokumen resmi ,
Selain itu, Anda harus mengaktifkan proguard untuk mengurangi ukuran apk dan juga mencegah rekayasa balik aplikasi. Dalam Flutter,
Ikuti tautan ini untuk mengaktifkan progaurd di aplikasi Anda,
Langkah 1: Langkah 1 - Konfigurasikan Proguard Buat
/android/app/proguard-rules.pro
file dan tambahkan aturan yang tercantum di bawah ini.Langkah 2: Aktifkan kebingungan dan / atau minifikasi
Catatan: Gunakan Proguard hanya di apk produksi.
Juga, baca Mengapa ukuran aplikasi saya pada perangkat berbeda dari ukuran APK atau Play store
Pertanyaan: Apa pencegahan yang mungkin dilakukan?
Jawab: Minimalkan penggunaan sumber daya dari perpustakaan
Jika perpustakaan dirancang untuk server atau desktop, perpustakaan dapat menyertakan banyak objek dan metode yang tidak diperlukan aplikasi Anda. Untuk hanya menyertakan bagian perpustakaan yang dibutuhkan aplikasi Anda, Anda dapat mengedit file perpustakaan jika lisensi memungkinkan Anda untuk memodifikasi perpustakaan. Anda juga dapat menggunakan pustaka yang ramah lingkungan untuk menambahkan fungsi spesifik ke aplikasi Anda.
Baca juga Langkah-langkah yang disebutkan di sini
https://developer.android.com/topic/performance/reduce-apk-size#reduce-code
sumber
minifyEnabled = true
danshrinkResources = true
itu akan menghasilkan banyak kesalahanproguard-rules.pro
di bagian bawah ...Bangun aplikasi Anda dengan menggunakan perintah yang disebutkan di bawah ini:
atau
sumber
App Size
setelah menginstal atauApp Download Size
Hanya?Untuk menghasilkan bundel aplikasi, jalankan:
Pelajari lebih lanjut tentang: https://developer.android.com/guide/app-bundle
Untuk membagi APK per ABI, jalankan:
Pelajari lebih lanjut tentang: https://developer.android.com/studio/build/configure-apk-splits#configure-abi-split
sumber