অ্যাপ অপ্টিমাইজেশান সক্ষম করুন

সেরা ব্যবহারকারীর অভিজ্ঞতার জন্য, আপনার অ্যাপটিকে যতটা সম্ভব ছোট এবং দ্রুত করার জন্য অপ্টিমাইজ করা উচিত। আমাদের অ্যাপ অপ্টিমাইজার, যার নাম R8, অব্যবহৃত কোড এবং রিসোর্সগুলি সরিয়ে, রানটাইম পারফরম্যান্স অপ্টিমাইজ করার জন্য কোড পুনর্লিখন এবং আরও অনেক কিছুর মাধ্যমে আপনার অ্যাপটিকে স্ট্রিমলাইন করে। আপনার ব্যবহারকারীদের কাছে এর অর্থ হল:

  • দ্রুত শুরুর সময়
  • উন্নত রেন্ডারিং এবং রানটাইম কর্মক্ষমতা
  • কম ANR

অ্যাপ অপ্টিমাইজেশন সক্ষম করতে, আপনার রিলিজ বিল্ডের অ্যাপ-লেভেল বিল্ড স্ক্রিপ্টে নিম্নলিখিত কোডে দেখানো হিসাবে isMinifyEnabled = true (কোড অপ্টিমাইজেশনের জন্য) এবং isShrinkResources = true (রিসোর্স অপ্টিমাইজেশনের জন্য) সেট করুন। আমরা সুপারিশ করছি যে আপনি সর্বদা উভয় সেটিংস সক্ষম করুন। আমরা অ্যাপ অপ্টিমাইজেশন সক্ষম করার পরামর্শ দিচ্ছি শুধুমাত্র আপনার অ্যাপের চূড়ান্ত সংস্করণে যা আপনি প্রকাশের আগে পরীক্ষা করেন - সাধারণত আপনার রিলিজ বিল্ড - কারণ অপ্টিমাইজেশনগুলি আপনার প্রকল্পের বিল্ড সময় বাড়ায় এবং কোড পরিবর্তন করার পদ্ধতির কারণে ডিবাগিংকে আরও কঠিন করে তুলতে পারে।

কোটলিন

android {
    buildTypes {
        release {

            // Enables code-related app optimization.
            isMinifyEnabled = true

            // Enables resource shrinking.
            isShrinkResources = true

            proguardFiles(
                // Default file with automatically generated optimization rules.
                getDefaultProguardFile("proguard-android-optimize.txt"),

                ...
            )
            ...
        }
    }
    ...
}

খাঁজকাটা

android {
    buildTypes {
        release {

            // Enables code-related app optimization.
            minifyEnabled true

            // Enables resource shrinking.
            shrinkResources true

            // Default file with automatically generated optimization rules.
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt')

            ...
        }
    }
}

আরও ছোট অ্যাপের জন্য রিসোর্স সঙ্কুচিতকরণ অপ্টিমাইজ করুন

অ্যান্ড্রয়েড গ্রেডল প্লাগইন (এজিপি) এর ৮.১২.০ সংস্করণটি অপ্টিমাইজড রিসোর্স সঙ্কিং প্রবর্তন করে, যার লক্ষ্য আরও ছোট এবং দ্রুত অ্যাপ তৈরির জন্য রিসোর্স এবং কোড অপ্টিমাইজেশনকে একীভূত করা।

অপ্টিমাইজ করা রিসোর্স সঙ্কুচিতকরণ সক্ষম করুন

9.0.0 এর আগের AGP ভার্সনের জন্য নতুন অপ্টিমাইজড রিসোর্স সঙ্কুচিত পাইপলাইন চালু করতে, আপনার প্রোজেক্টের gradle.properties ফাইলে নিম্নলিখিতটি যোগ করুন:

android.r8.optimizedResourceShrinking=true

যদি আপনি AGP 9.0.0 অথবা তার নতুন ভার্সন ব্যবহার করেন, তাহলে আপনাকে android.r8.optimizedResourceShrinking=true সেট করার প্রয়োজন নেই। আপনার বিল্ড কনফিগারেশনে isShrinkResources = true সক্ষম থাকলে অপ্টিমাইজড রিসোর্স শঙ্কা স্বয়ংক্রিয়ভাবে প্রয়োগ করা হয়।

R8 অপ্টিমাইজেশন সেটিংস যাচাই এবং কনফিগার করুন

R8 কে তার সম্পূর্ণ অপ্টিমাইজেশন ক্ষমতা ব্যবহার করতে সক্ষম করতে, আপনার প্রকল্পের gradle.properties ফাইল থেকে নিম্নলিখিত লাইনটি সরিয়ে ফেলুন, যদি এটি বিদ্যমান থাকে:

android.enableR8.fullMode=false # Remove this line from your codebase.

মনে রাখবেন যে অ্যাপ অপ্টিমাইজেশন সক্ষম করলে স্ট্যাক ট্রেস বোঝা কঠিন হয়ে পড়ে, বিশেষ করে যদি R8 ক্লাস বা পদ্ধতির নাম পরিবর্তন করে। আপনার সোর্স কোডের সাথে সঠিকভাবে মেলে এমন স্ট্যাক ট্রেস পেতে, মূল স্ট্যাক ট্রেস পুনরুদ্ধার করুন দেখুন।

যদি R8 সক্রিয় থাকে, তাহলে আরও ভালো স্টার্টআপ পারফরম্যান্সের জন্য আপনার স্টার্টআপ প্রোফাইলও তৈরি করা উচিত।

যদি আপনি অ্যাপ অপ্টিমাইজেশন সক্ষম করেন এবং এর ফলে ত্রুটি দেখা দেয়, তাহলে সেগুলি ঠিক করার জন্য এখানে কিছু কৌশল দেওয়া হল:

আপনি যদি আপনার বিল্ড স্পিড অপ্টিমাইজ করতে আগ্রহী হন, তাহলে আপনার পরিবেশের উপর ভিত্তি করে R8 কীভাবে কনফিগার করবেন সে সম্পর্কে তথ্যের জন্য "R8 কীভাবে চলে" কনফিগার করুন দেখুন।

AGP এবং R8 সংস্করণের আচরণগত পরিবর্তন

নিম্নলিখিত টেবিলে অ্যান্ড্রয়েড গ্রেডল প্লাগইন (AGP) এবং R8 কম্পাইলারের বিভিন্ন সংস্করণে প্রবর্তিত মূল বৈশিষ্ট্যগুলির রূপরেখা দেওয়া হয়েছে।

এজিপি সংস্করণ বৈশিষ্ট্যগুলি চালু করা হয়েছে
৯.০ অপ্টিমাইজড রিসোর্স সঙ্কুচিতকরণ: ডিফল্টরূপে সক্ষম ( android.r8.optimizedResourceShrinking ব্যবহার করে নিয়ন্ত্রিত)। অপ্টিমাইজড রিসোর্স সঙ্কুচিতকরণ কোড অপ্টিমাইজেশন পাইপলাইনের সাথে রিসোর্স সঙ্কুচিতকরণকে একীভূত করতে সাহায্য করে, যার ফলে ছোট এবং দ্রুত অ্যাপ তৈরি হয়। কোড এবং রিসোর্স রেফারেন্স উভয়কেই একই সাথে অপ্টিমাইজ করে, এটি অব্যবহৃত কোড থেকে একচেটিয়াভাবে রেফারেন্স করা রিসোর্সগুলি সনাক্ত করে এবং সরিয়ে দেয়। এটি পূর্ববর্তী পৃথক অপ্টিমাইজেশন প্রক্রিয়াগুলির তুলনায় একটি উল্লেখযোগ্য উন্নতি।

এটি বিশেষ করে সেইসব অ্যাপের জন্য কার্যকর যেগুলো বিভিন্ন ফর্ম ফ্যাক্টর ভার্টিকাল জুড়ে যথেষ্ট রিসোর্স এবং কোড ভাগ করে নেয়, অ্যাপের আকারে ৫০% এরও বেশি উন্নতি হয়েছে। ফলস্বরূপ আকার হ্রাসের ফলে ডাউনলোড কম হয়, দ্রুত ইনস্টলেশন হয় এবং দ্রুত স্টার্টআপ, উন্নত রেন্ডারিং এবং কম ANR সহ আরও ভাল ব্যবহারকারীর অভিজ্ঞতা হয়।

লাইব্রেরি রুল ফিল্টারিং: লাইব্রেরি কনজিউমার রুলে গ্লোবাল অপশনের (যেমন, -dontobfuscate ) সমর্থন বাদ দেওয়া হয়েছে, এবং অ্যাপগুলি সেগুলি ফিল্টার করে দেবে। আরও তথ্যের জন্য, গ্লোবাল অপশন যোগ করুন দেখুন।

কোটলিন নাল চেক: ডিফল্টরূপে অপ্টিমাইজ করা হয়েছে ( -processkotlinnullchecks ব্যবহার করে নিয়ন্ত্রিত)। এই সংস্করণটি বিল্ড গতিতে উল্লেখযোগ্য উন্নতিও এনেছে। আরও তথ্যের জন্য, অতিরিক্ত অপ্টিমাইজেশনের জন্য গ্লোবাল বিকল্পগুলি দেখুন।

নির্দিষ্ট প্যাকেজগুলি অপ্টিমাইজ করুন: নির্দিষ্ট প্যাকেজগুলি অপ্টিমাইজ করার জন্য আপনি packageScope ব্যবহার করতে পারেন। এটি পরীক্ষামূলক সহায়তায় রয়েছে। আরও তথ্যের জন্য, packageScope দিয়ে নির্দিষ্ট প্যাকেজগুলি অপ্টিমাইজ করুন দেখুন।

ডিফল্টভাবে অপ্টিমাইজ করা: getDefaultProguardFile("proguard-android.txt") এর জন্য সমর্থন বাদ দেওয়া হয়েছে, কারণ এতে -dontoptimize অন্তর্ভুক্ত রয়েছে, যা এড়িয়ে চলা উচিত। পরিবর্তে, "proguard-android-optimize.txt" ব্যবহার করুন। যদি আপনার অ্যাপে বিশ্বব্যাপী অপ্টিমাইজেশন অক্ষম করতে হয়, তাহলে proguard ফাইলে ম্যানুয়ালি ফ্ল্যাগটি যুক্ত করুন
৮.১২ রিসোর্স সঙ্কুচিতকরণ: প্রাথমিক সমর্থন যোগ করা হয়েছে (ডিফল্টরূপে বন্ধ। isShrinkResources ব্যবহার করে সক্ষম করুন)। রিসোর্স সঙ্কুচিতকরণ R8 এর সাথে একত্রে কাজ করে যাতে অব্যবহৃত রিসোর্সগুলি কার্যকরভাবে সনাক্ত এবং অপসারণ করা যায়।

লগক্যাট রিট্রেসিং: অ্যান্ড্রয়েড স্টুডিও লগক্যাট উইন্ডোতে স্বয়ংক্রিয় রিট্রেসিংয়ের জন্য সমর্থন।
৮.৬ উন্নত রিট্রেসিং: সমস্ত minSdk স্তরের জন্য ডিফল্টরূপে ফাইলের নাম এবং লাইন নম্বর রিট্রেসিং অন্তর্ভুক্ত করে (পূর্বে 8.2 সংস্করণে minSdk 26+ প্রয়োজন ছিল)।

R8 আপডেট করলে অস্পষ্ট বিল্ড থেকে স্ট্যাক ট্রেসগুলি সহজেই এবং স্পষ্টভাবে পঠনযোগ্য হয় তা নিশ্চিত করতে সাহায্য করে। এই সংস্করণটি লাইন নম্বর এবং সোর্স ফাইলগুলি ম্যাপ করার পদ্ধতি উন্নত করে, যার ফলে অ্যান্ড্রয়েড স্টুডিও লগক্যাটের মতো সরঞ্জামগুলি স্বয়ংক্রিয়ভাবে ক্র্যাশগুলিকে মূল সোর্স কোডে ফিরিয়ে আনতে সহজ করে তোলে।
৮.০ ডিফল্টভাবে ফুল মোড: R8 ফুল মোড উল্লেখযোগ্যভাবে আরও শক্তিশালী অপ্টিমাইজেশন প্রদান করে। এটি ডিফল্টভাবে সক্রিয় থাকে। আপনি android.enableR8.fullMode=false ব্যবহার করে অপ্ট আউট করতে পারেন।
৭.০ সম্পূর্ণ মোড উপলব্ধ: android.enableR8.fullMode=true ব্যবহার করে একটি অপ্ট-ইন বৈশিষ্ট্য হিসেবে চালু করা হয়েছে। আপনার কোড কীভাবে প্রতিফলন এবং অন্যান্য গতিশীল বৈশিষ্ট্য ব্যবহার করে সে সম্পর্কে কঠোর অনুমান তৈরি করে ফুল মোড আরও শক্তিশালী অপ্টিমাইজেশন প্রয়োগ করে। যদিও এটি অ্যাপের আকার হ্রাস করে এবং কর্মক্ষমতা উন্নত করে, তবে প্রয়োজনীয় কোডটি বাদ দেওয়া থেকে রোধ করার জন্য অতিরিক্ত কিপ নিয়মের প্রয়োজন হতে পারে।