tejariapp-new-logotejariapp-new-logotejariapp-new-logotejariapp-new-logo
  • صفحه اصلی
  • پروژه ها
    • پروژه طراحی سایت
    • پروژه های اندروید
    • پروژه های تحت ویندوز
    • UI & UX
    • ربات تلگرام
  • سفارش پروژه
    • انجام پروژه اندروید (Android)
    • طراحی و ساخت اپلیکیشن موبایل
    • انجام پروژه طراحی سایت با php
    • انجام پروژه طراحی سایت با Asp.net
    • انجام پروژه سی شارپ
    • فرم سفارش پروژه
  • مدرسه ی تجاری اپ
    • طراحی سایت
    • اندروید
    • سی شارپ
    • آموزش پایگاه داده
    • برنامه های کاربردی
  • لینک های مفید
    • پرداخت آنلاین
    • درباره تجاری اپ
    • تماس با ما
استخدام برنامه نویس متلب
سفارش پروژه
✕
            هیچ نتیجه ای یافت نشدمشاهده همه نتایج

            روش های کاهش حجم فایل APK

            • صفحه نخست
            • مدرسه ی تجاری اپ آموزش اندروید
            • روش های کاهش حجم فایل APK
            سورس کد سایت سیستم هوشمند ارائه دهنده خدمات سلامت با php
            سورس کد سایت سیستم ارائه دهنده خدمات سلامت با php
            14 تیر 1398
            تعریف متغیر در کاتلین - آموزش برنامه نویسی kotlin
            تعریف متغیر در کاتلین – آموزش برنامه نویسی kotlin
            9 شهریور 1398
            منتشر شده توسط مهندس داودی
            روش های کاهش حجم فایل APK

            روش های کاهش حجم فایل APK

            روش های کاهش حجم فایل APK ، وظیفه یک برنامه نویس اندروید صرفا پیاده سازی کدها و کتابخانه ها در سورس نیست فایل خروجی نمایان گر تمام تلاش برنامه نویس است پس علاوه بر عملکرد خوب اپلیکیشن و زیبایی ظاهری آن ، حجم فایل apk (Android Package) ست که عامل تعیین کننده ای برای دانلود کاربر خواهد بود

            طبیعتا زمانی که کاربری ببیند یک اپلیکیشن 30 مگابایت است و اپلیکیشن دیگری مشابه آن 10 مگابایت ، تمایل بیشتری به دانلود اپلیکیشن 10 مگابایتی خواهد داشت چرا که همانطور که گفته شد حجم اپلیکیشن علاوه بر ظاهر و عملکرد خوب تعیین کننده افزایش کاربر اپ خواهد بود.

            چند روش توصیه شده گوگل برای کم کردن حجم فایل APK

            معمولا ما با اپ های زیادی روبرو هستیم که حجم بالایی دارند و این حجم بالا ناشی از موارد زیر خواهد بود

            • ریسورس استفاده شده
            • کتابخانه های تعبیه شده در اپ
            • کدهای بلااستفاده
            • و…

            در این مقاله ما بطور مفصل به تمامی راه های معتبری که پیشنهاد شده خود گوگل برای کاهش حجم فایل APK است می پردازیم تا بتوانید با روش هایم معتبر بدون صدمه زدن به سورس ، حجم اپلیکیشن رو کم کنید.

            آپلود کردن اپلیکیشن بصورت App Bundle یا ( Upload your app with Android App Bundles )

            آپلود کردن فایل در قالب App Bundles یکی از بهترین راه های کاهش حجم فایل APK است.اینکه کلا App Bundle چی هست و چه فلسفه ای داره ما در آموزش های گذشته در تجاری اپ بطور کامل توضیح دادیم پس در این پست تنها اشاره ای کوتاه به App Bundle خواهیم داشت.

            همچنین بخوانید: همه چیز درباره اندروید استودیو 3.3

            اگر بخواهیم App Bundle را کوتاه توضیح دهیم میتونیم بگیم یکی از ساده ترین راه ها برای کاهش حجم فایل APK است بدین صورت که شما میتونید فایل apk خودتون رو در گوگل پلی به عنوان Android App Bundle آپلود کنید.در واقع App Bundle یک فرمت جدید آپلود گوگل پلی است که این امکان را می دهد که اپلیکیشن آپلود شده برای هرکاربر تبدیل به یک اپ کم حجم و کوچک مناسب با کانفیگ موبایل کاربر تبدیل شود تا کاربر بتواند اپ شما را با حجم کم دانلود و نصب کند که البته اپ مناسب کانفیگ گوشی کاربر هم خواهد بود.

            استفاده از پلاگین Android size analyzer برای کاهش حجم فایل APK یا ( Use the Android Size Analyzer )

            استفاده از پلاگین Android Size Analyzer این امکان را به شما میدهد که نقاطی از سورس که حجم زیادی دارند را شناسایی کنید و حتی پیشنهادی برای کم حجم کردن سایز آن قسمت دریافت کنید.برای نصب پلاگین Android Size Analyzer به مسیر زیر بروید:

            File / Setting / plugins

            در تب Marketplace عبارت Android Size Analyzer را جستجو کنید

            روش های کاهش حجم فایل APK
            روش های کاهش حجم فایل APK

            سپس پلاگین رو نصب و اندروید استودیو رو ری استارت کنید.
            برای اجرای پلاگین هم به مسیر زیر بروید

            Analyze / Analyze App Size

            سپس خواهید دید پنجره زیر باز خواهد شد

            روش های کاهش حجم فایل APK
            روش های کاهش حجم فایل APK

            همچنین بخوانید: ایمپورت کردن ماژول در اندروید استودیو

            همچنین میتونید پلاگین Android Size Analyzer رو بصورت کامند هم ران کنید بدین صورت که نسخه آخر پلاگین رو از گیت هاب مربوطه ش دانلود کنید ، بصورت TAR یا ZIP پس از استخراج پلاگین رو در مک یا لینوکس و یاحتی .bat در ویندوز با دستورات زیر اجرا کنید

            ./size-analyzer check-bundle
            ./size-analyzer check-project

            خواهید دید پلاگین Android Size Analyzer پرحجم ترین فایل ها به علاوه یک پیشنهاد به شما ارائه میدهد

            دانستن و آشنایی با ساختار فایل apk یا ( Understand the APK structure )

            بدون دانستن ساختار فایل APK شما عملا دارید به بیراهه میرید !
            مسلما تا چیزی رو نشناسید نمیتونید روی اون کار کنید و بهینه ش کنید.پروسه کم کردن حجم فایل apk ها از این قائده مستثنا نیست. شما ابتدا باید با ساختار فایل apk آشنا باشید سپس راه های کم کردن حجم رو امتحان کنید.
            فایل APK شامل دایرکتوری های زیر است :

            META-INF

            شامل فایل های امضا CERT.SF و CERT.RSA و همچنین MANIFEST.MF فایل منیفست

            assests

            شامل فایل های موجود در دایرکتوری assests است

            res

            شامل تمامی ریسورس هایی ست که در resourse.arsc کامپایل نشده

            lib

            شامل کدهای کامپایل شده ای ست که به لایه نرم افزاری یک پردازنده خاص مرتبط است. این دایرکتوری شامل تعدادی زیر دایرکتوری یا sub directory برای هر پردازنده مانند armeabi, armeabi-v7a, arm64-v8a, x86, x86_64, and mips است.

            resources.arsc

            شامل ریسورس های کامپایل شده است برای مثال تمامی فایل های درون res/values/
            این فایل ها به فرم باینری تبدیل میشوند و محتوی شان آرشیو میشود این محتوی شامل string ها و style هاست و همچنین دایرکتوری که مستقیما در resourse.arsc نیست مثلا layout ها و تصاویر

            classes.dex

            شامل تمامی کلاس های کامپایل شده به فرمت DEX است که توسط ماشین مجازی Dalvik/ART قابل فهم است

            AndroidManifest.xml

            شامل فایل منیفست اصلی ست که تمامی اطلاعات اصلی اپ از جمله نام ، ورژن ، دسترسی ها و رفرنس کتابخانه ها درون اپ را درون خود دارد.فایل manifest هم از فرمت باینری xml استفاده میکند.

            حذف ریسورس های بلااستفاده و کم کردن حجم ریسورس ها ( Reduce resouce count and size )

            کم کردن تعداد ریسورس (از جمله عکس و موزیک و …) و یا کم کردن حجم آنها میتواند خیلی به کم شدن سورس کمک کند.میتونید عکس هایی که دیگر استفاده ای در اپ ندارند را حذف کنید و یا حتی عکس هایی که مجبور به استفاده از آنها هستید را با سایز کمتری در سورس ذخیره کنید.

            در ادامه دو مبحث کم کردن سایز ریسورس و حذف ریسورس های بلا استفاده را با جزییات بیشتری بررسی خواهیم کرد.

            حذف ریسورس های بلااستفاده کاهش حجم فایل APK یا ( Remove unused resources )

            ابزار lint یک ابزار استاتیک درون اندروید استودیو ست که ریسورس های درون دایرکتوری res/ را که درون سورس رفرنسی ندارند یا به عبارت دیگر در جایی از سورس استفاده نشدند را تشخیص میدهد و اگر موفق به تشخیص شد پیغامی مشابه پیغام زیر را به شما میدهد

            res/layout/preferences.xml: Warning: The resource R.layout.preferences appears
            to be unused [UnusedResources]

            نکته :
            ابزار lint دایرکتوری assests/ را اسکن نمیکند و همچنین ریسورس های بلااستفاده را حذف نمیکند بلکه فقط به شما هشدار میدهد!

            کتابخانه هایی که به سورس اضافه میکند ممکن است که ریسورس هایی همراه خود اضافه کنند که هیچگاه استفاده نشوند و فقط به حجم اپ شما اضافه شود ! گردل Gradle میتواند به صورت اتوماتیک ریسورس های بلا استفاده را حذف کند اگر که پراپرتی shrinkResouces را در فایل build.gradle فعال کنید

            android {
                // Other settings
            
                buildTypes {
                    release {
                        minifyEnabled true
                        shrinkResources true
                        proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro'
                    }
                }
            }
            

            همانطور که میبیند ما progaurd رو هم فعال کردیم .درواقع حین پروسه build شدن ProGuard کدهای بلا استفاده را حذف میکند اما ریسورس های بلااستفاده را به shrinkResouce برای بررسی و حذف شدن میسپارد.

            کم کردن ریسورس های استفاده شده کتابخانه ها ( Minimize resource use rom libraries )

            برای توسعه اپ از کتابخانه های زیادی استفاده میشود که اجتناب ناپذیر است اما میتوانیم از کتابخانه ها بصورت ماژول استفاده کنیم (البته آنهایی که لایسنس ندارند و اجازه استفاده بصورت ماژول را به مامیدهند) و ریسورس های بلااستفاده را از آنها حذف کنیم.

            استفاده از عکس با رزولوشن مورد نیاز ( Support only specific densities )

            مسلما اندروید در گوشی و دستگاه ها با انواع سایز ها از کوچک تا خیلی بزرگ اجرا میشود و این بدین معنی ست که تصاویر استفاده شده درون اپلیکیشن نباید در سایزهای مختلف بی کیفیت شود.اندروید از اندروید 4.4 به بعد این امکان را به ما داد که با استفاده از رزولوشن های ldpi, mdpi, tvdpi, hdpi, xhdpi, xxhdpi and xxxhdpi بتوانیم عکس را در هر سایز دیوایس با کیفیت نمایش دهیم و این بدین معنی ست که ما از عکس چندین نسخه در تمام این دایرکتوری ها باید ایجاد کنیم!
            خب طبیعتا این روش به سایز اپلیکیشن حجم زیادی اضافه میکند اما برای برخی تصاویر که مطمئن هستیم در دیوایس سایز بزرگ به مشکل میخورد راهی جز این روش نیست (شاید وکتور جایگزین مناسبی باشد ! ) اما میتوانیم بقیه تصاویر را که پیشبینی می شود نیازی به ساخت چند نسخه ندارد را فقط در یک دایرکتوری (مربوطه) بسازیم.پس الزاما نباید تمامی تصاویر مورد استفاده را در تمام رزولوشن ها پیاده کرد!

            استفاده از آبجکت های drawable یا ( Use drawable objects )

            بعضی از تصاویر نیازی نیست که حتما به صورت استاتیک درون ریسورس ها اضافه شود بلکه میتوان بصورت داینامیک حین اجرا ساخته شود ! آبجکت های Drawable و یا در XML حجم بسیاری کمی دارند که اصلا تاثیری در حجم کلی اپ نخواهند داشت.

            استفاده مجدد از ریسورس ها ( Reuse resources )

            بجای ساخت یک ریسورس جدید مثلا عکس میتوان از ریسورس های موجود بصورت مجدد استفاده کرد (با کمی تغییر بصورت کد) !
            برای مثال میتوان با اعمال چرخش , تغییر رنگ و … از یک تصویر در بخش های مختلفی استفاده کرد.به عنوان مثال اندروید برای نسخه Anroid 5.0 به بالا آپشن android:tint و tintMode رو به شما داده و برای نسخه های پیشین کلاس ColorFilter را میتوان استفاده کرد.برای چرخش تصاویر هم میتوان از کد زیر استفاده کرد:

            <?xml version="1.0" encoding="utf-8"?>
            <rotate xmlns:android="http://schemas.android.com/apk/res/android"
                android:drawable="@drawable/ic_thumb_up"
                android:pivotX="50%"
                android:pivotY="50%"
                android:fromDegrees="180" />
            

            فایل های PNG را Crunch کنید ( Crunch PNG files )

            ابزار aapt میتواند تصاویری که در مسیر res/drawable قرار دارند را بهینه کند بدون کم شدن کیفیت !
            برای مثال ابزار aapt یک عکس PNG با کیفیت اصلی را که تشخیص می دهد نیازی به بیش از 256 رنگ ندارد را به یک عکس PNG با 8 بیت تبدیل میکند بدین ترتیب ما عکس مشابه بدون هیچ تغییر در کیفیت اما با سایز بسیار کمتر خواهیم داشت ! اما نکات زیر را درباره ابزار aapt در نظر بگیرید:
            ابزا aapt عکس های PNG درون دایرکتوری asset/ را بهینه نمیکند.
            تنها عکس هایی که از 256 رنگ یا کمتر استفاده میکنند با aapt بهینه میشوند
            ابزار aapt ممکنه تصاویری که پیش از این بهینه هستند را هم مجدد فشرده میکند که برای جلوگیری از این اتفاق باید از crunchEnable در گردل استفاده کنیم

             aaptOptions {
                cruncherEnabled = false
            }
            

            فشرده سازی فایل های PNG , JPEG یا ( ompress PNG and JPEG files )

            ما میتوانیم بدون کم شدن حتی ذره ای از کیفیت عکس حجم عکس را بطور محسوس کاهش دهیم با ابزارهایی مثل pngcrush , pngquant , zopflipng برای عکس های PNG و برای عکس های JPEG از ابزار های packJPG , guetzli

            استفاده از فایل با فرمت WebP یا ( Use WebP file format )

            بجای استفاده از PNG , JPEG میتوانید از WebP استفاده کنید.فایل ها با فرمت WebP از فشرده سازی کمی مثل JPEG و از شفافیت (transparency) خوبی مثل PNG پشتیبانی میکنند.شما میتوانید فایل های BMP , JPG , PNG و حتی GIF های استاتیک را به WebP تبدیل کنید

            نکته:‌
            توجه کنید که فایل launcher برنامه حتما باید PNG باشد.

            استفاده از وکتور ( Use vector graphics )

            شما میتوانید از وکتور (VectorDrawable) بجای عکس های سنگین استفاده کنید که حجم اپلیکیشن را بطور محسوسی کاهش میدهد و در سایز های مختلف دیوایس هم کیفیت خود را حفظ میکند.

            استفاده از وکتور برای تصاویر انیمیشنی ( Use vector graphics for animated images )

            میتوان بجای استفاده از AnimatedDrawable که از چندین bitmap برای فریم به فریم انیمیشن استفاده میکنند از AnimatedVectorDrawableCompat برای ساخت وکتور های انیمیشنی (animated vector drawables) استفاده کرد.

            همچنین بخوانید: رتروفیت | آموزش Retrofit همراه با مثال

            امیدوارم این آموزش برای شما مفید بوده باشد…

            اشتراک گذاری

            پست های مرتبط

            دستورات جریان کنترل (Control flow statements) یا دستورات شرطی و حلقه ها در زبان برنامه نویسی دارت Dart

            دستورات جریان کنترل (Control flow statements) یا دستورات شرطی و حلقه ها در زبان برنامه نویسی دارت Dart

            30 بهمن 1400

            دستورات شرطی و حلقه ها در زبان برنامه نویسی دارت (Dart)


            ادامه مطلب
            آموزش عملگرها یا Operator ها در زبان برنامه نویسی دارت یا Dart

            آموزش عملگرها یا Operator ها در زبان برنامه نویسی دارت یا Dart

            30 بهمن 1400

            آموزش عملگرها یا Operator ها در زبان برنامه نویسی دارت (Dart)


            ادامه مطلب
            توابع در زبان برنامه نویسی دارت (Dart)

            توابع در زبان برنامه نویسی دارت (Dart)

            27 بهمن 1400

            توابع در زبان برنامه نویسی دارت (Dart)


            ادامه مطلب

            دیدگاهتان را بنویسید لغو پاسخ

            نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

            ساخت اپلیکیشن های موبایل

            • ساخت اپلیکیشن فروشگاهی
            • ساخت اپلیکشن ابزاری و خدماتی
            • ساخت اپلیکیشن آموزشی
            • و هزاران موضوع دیگر

             
            کلیک کنید

            آخرین دیدگاه ها

            • 9 اسفند 1401

              مهری اصغری نظر در پیاده سازی اولین پروژه با فلاتر Flutter

            • 26 آبان 1401

              سجاد نظر در پروژه مدیریت سیستم مدرسه با سی شارپ و sql server

            • 7 خرداد 1401

              داودی نظر در آموزش استفاده از ckeditor همراه با آپلود عکس در لاراول 6

            تجاری اپ در شبکه های اجتماعی

            لوگوی تایید پرداخت آنلاین

            2015-2022 © تمامي حقوق مادي و معنوي اين وب سايت نزد تجاری اپ محفوظ بوده و هر گونه کپي برداري از مطالب پيگرد قانوني به همراه دارد! | طراح سایت : ProgRun
            سفارش پروژه
                      هیچ نتیجه ای یافت نشدمشاهده همه نتایج