বেসলাইন প্রোফাইল ওভারভিউ

বেসলাইন প্রোফাইলগুলি অন্তর্ভুক্ত কোড পাথগুলির জন্য ব্যাখ্যা এবং জাস্ট-ইন-টাইম (JIT) সংকলন পদক্ষেপগুলি এড়িয়ে প্রথম প্রবর্তন থেকে কোড সম্পাদনের গতি প্রায় 30% উন্নত করে।

একটি অ্যাপ বা লাইব্রেরিতে একটি বেসলাইন প্রোফাইল পাঠানোর মাধ্যমে, অ্যান্ড্রয়েড রানটাইম (এআরটি) এহেড-অফ-টাইম (AOT) সংকলনের মাধ্যমে নির্দিষ্ট কোড পাথ অপ্টিমাইজ করতে পারে, প্রতিটি নতুন ব্যবহারকারী এবং প্রতিটি অ্যাপ আপডেটের জন্য কর্মক্ষমতা বর্ধিতকরণ প্রদান করে। এই প্রোফাইল গাইডেড অপ্টিমাইজেশান (PGO) অ্যাপগুলিকে স্টার্টআপ অপ্টিমাইজ করতে, ইন্টারঅ্যাকশন জ্যাঙ্ক কমাতে এবং প্রথম লঞ্চ থেকে ব্যবহারকারীদের জন্য সামগ্রিক রানটাইম কর্মক্ষমতা উন্নত করতে দেয়৷

এই পারফরম্যান্সের উন্নতির ফলে সরাসরি ব্যবসায়িক মেট্রিক্স যেমন ব্যবহারকারীর ধারণ, লেনদেন এবং রেটিং উন্নত হয়। Josh , Lyft , TikTok , এবং Zomato- এর গল্পগুলিতে কর্মক্ষমতা কীভাবে ব্যবসায়িক মেট্রিক্সকে প্রভাবিত করে সে সম্পর্কে আপনি আরও পড়তে পারেন।

বেসলাইন প্রোফাইলের সুবিধা

বেসলাইন প্রোফাইলগুলি ব্যবহারকারীর সমস্ত ইন্টারঅ্যাকশন-যেমন অ্যাপ স্টার্টআপ, স্ক্রিনগুলির মধ্যে নেভিগেট করা, বা বিষয়বস্তুর মাধ্যমে স্ক্রোল করা—প্রথমবার চালানো থেকে মসৃণ করে তোলে৷ একটি অ্যাপের গতি এবং প্রতিক্রিয়াশীলতা বৃদ্ধি করে, বেসলাইন প্রোফাইলগুলি আরও বেশি দৈনিক সক্রিয় ব্যবহারকারী এবং উচ্চ গড় রিটার্ন ভিজিট হারের দিকে নিয়ে যেতে পারে।

বেসলাইন প্রোফাইলগুলি প্রথম লঞ্চ থেকে অ্যাপ রানটাইম উন্নত করে এমন সাধারণ ব্যবহারকারীর মিথস্ক্রিয়া প্রদান করে অ্যাপ স্টার্টআপের বাইরে অপ্টিমাইজেশান গাইড করতে সহায়তা করে। গাইডেড AOT সংকলন ব্যবহারকারীর ডিভাইসের উপর নির্ভর করে না এবং মোবাইল ডিভাইসের পরিবর্তে একটি ডেভেলপমেন্ট মেশিনে রিলিজ প্রতি একবার করা যেতে পারে। একটি বেসলাইন প্রোফাইলের সাথে রিলিজ পাঠানোর মাধ্যমে, শুধুমাত্র ক্লাউড প্রোফাইলের উপর নির্ভর করার চেয়ে অ্যাপ অপ্টিমাইজেশানগুলি অনেক দ্রুত উপলব্ধ হয়৷

একটি বেসলাইন প্রোফাইল ব্যবহার না করার সময়, সমস্ত অ্যাপ কোড ব্যাখ্যা করার পরে মেমরিতে JIT-সংকলিত হয়, অথবা ডিভাইসটি নিষ্ক্রিয় থাকা অবস্থায় ব্যাকগ্রাউন্ডে একটি odex ফাইলে লেখা হয়। একটি অ্যাপ ইনস্টল বা আপডেট করার পরে, ব্যবহারকারীরা প্রথমবার এটি চালানোর পর থেকে নতুন কোড পাথ অপ্টিমাইজ করা পর্যন্ত একটি সাবঅপ্টিমাল অভিজ্ঞতা থাকে৷ অনেক অ্যাপ অপ্টিমাইজ করার পর প্রায় 30% পারফরম্যান্স বুস্ট করে।

স্টার্টআপ প্রোফাইল

স্টার্টআপ প্রোফাইলগুলি বেসলাইন প্রোফাইলগুলির অনুরূপ, তবে পার্থক্য হল তারা ডিভাইসের অপ্টিমাইজেশনের পরিবর্তে কম্পাইলের সময় ব্যবহার করা হয়। স্টার্টআপের সময় উন্নত করতে DEX ফাইলের বিন্যাস অপ্টিমাইজ করতে একটি স্টার্টআপ প্রোফাইল ব্যবহার করা হয়। স্টার্টআপ প্রোফাইলে চিহ্নিত কোডটি প্রাথমিক classes.dex ফাইলে রাখা হয় এবং অন্যান্য কোড আলাদা DEX ফাইলে রাখা হয়। এটি অ্যাপ স্টার্টআপের সময় পৃষ্ঠার ত্রুটির সংখ্যা হ্রাস করে স্টার্টআপের সময় উন্নত করে। কিভাবে স্টার্টআপ প্রোফাইল এবং DEX লেআউট অপ্টিমাইজেশানগুলি অ্যাপ স্টার্টআপের সময় উন্নত করতে পারে সে সম্পর্কে আরও জানতে, দেখুন DEX লেআউট অপ্টিমাইজেশান এবং স্টার্টআপ প্রোফাইলগুলি

এবার শুরু করা যাক

আপনার বিদ্যমান অ্যাপে কর্মক্ষমতা অপ্টিমাইজ করা শুরু করতে, বেসলাইন প্রোফাইল তৈরি করুন দেখুন।

নির্ভরতা চেইন স্থিতিশীল এবং উন্নয়নমূলক রিলিজ সংস্করণ প্রদান করে। একটি বেসলাইন প্রোফাইল তৈরি এবং ইনস্টল করতে, Android Gradle প্লাগইন, Macrobenchmark লাইব্রেরি এবং প্রোফাইল ইনস্টলারের নিম্নলিখিত সমর্থিত সংস্করণগুলি ব্যবহার করুন। এই নির্ভরতাগুলি বিভিন্ন সময়ে প্রয়োজন হয় এবং একটি সর্বোত্তম বেসলাইন প্রোফাইল সক্ষম করতে টুলচেন হিসাবে একসাথে কাজ করে।

  • অ্যান্ড্রয়েড গ্রেডল প্লাগইন: com.android.tools.build:8.0.0
  • ম্যাক্রোবেঞ্চমার্ক লাইব্রেরি: androidx.benchmark:benchmark-macro-junit4:1.2.4
  • প্রোফাইল ইনস্টলার: androidx.profileinstaller:profileinstaller:1.3.1

আমরা বেসলাইন প্রোফাইল তৈরি এবং পরিচালনা করতে AGP এর সর্বশেষ সংস্করণ ব্যবহার করার পরামর্শ দিই। এখানে AGP এর বিভিন্ন সংস্করণের সাথে আসা প্রধান কার্যকারিতা রয়েছে:

এজিপি সংস্করণ বৈশিষ্ট্য
৮.৪ গ্রেডল র্যাপার কমান্ড লাইন টুল বা অ্যান্ড্রয়েড স্টুডিও ইনস্টল বেসলাইন প্রোফাইল ব্যবহার করে নন-ডিবাগেবল বিল্ডগুলির স্থানীয় অ্যাপ ইনস্টলেশন, যাতে আপনার স্থানীয় রিলিজ বিল্ডের কার্যকারিতা উত্পাদনের সাথে আরও ঘনিষ্ঠভাবে মেলে। এই আপডেট বেসলাইন প্রোফাইলের উত্পাদন কর্মক্ষমতা প্রভাবিত করে না।
8.3
  • সম্পূর্ণ উৎস সেট ডিরেক্টরি সমর্থন (লাইব্রেরি মডিউল): একাধিক বেসলাইন প্রোফাইল সোর্স ফাইল ঘোষণা করুন এবং বৈকল্পিক-সচেতন ডিরেক্টরি ব্যবহার করুন, যেমন src/free/generated/baselineProfiles/baseline-prof1.txt , এখন লাইব্রেরি মডিউলের পাশাপাশি অ্যাপ মডিউলগুলির জন্য।
  • বেসলাইন প্রোফাইল desugared ক্লাস অন্তর্ভুক্ত.
8.2
  • R8 নিয়মগুলির পুনর্লিখন: D8 এবং R8 মানুষের-পাঠযোগ্য বেসলাইন এবং স্টার্টআপ প্রোফাইলের নিয়মগুলিকে রূপান্তর করতে পারে যাতে অ্যাপের কার্যকারিতা অপ্টিমাইজ করার জন্য আপনার প্রয়োজনীয় সমস্ত নিয়মগুলি সম্পূর্ণরূপে ক্যাপচার করা যায়৷ পদ্ধতির বেসলাইন প্রোফাইল কভারেজ ~30% বৃদ্ধি করে এবং অ্যাপের কার্যক্ষমতা ~15% বৃদ্ধি করে।
  • স্টার্টআপ প্রোফাইল: DEX-এর মধ্যে কোডের লেআউট জানাতে এই নতুন ধরনের বেসলাইন প্রোফাইল তৈরি করুন। স্টার্টআপ কর্মক্ষমতা একটি অতিরিক্ত ~15% বৃদ্ধি করে, বা বড় অ্যাপের জন্য উল্লেখযোগ্যভাবে বেশি।
৮.০ ন্যূনতম প্রস্তাবিত সংস্করণ: একটি একক Gradle টাস্কের সাথে বেসলাইন প্রোফাইল তৈরি করতে বেসলাইন প্রোফাইল গ্রেডল প্লাগইন ব্যবহার করুন।
  • সম্পূর্ণ উৎস সেট ডিরেক্টরি সমর্থন (অ্যাপ মডিউল): একাধিক বেসলাইন প্রোফাইল সোর্স ফাইল ঘোষণা করুন এবং বৈকল্পিক-সচেতন ডিরেক্টরি ব্যবহার করুন, যেমন src/free/generated/baselineProfiles/baseline-prof1.txt
7.4 ন্যূনতম সমর্থিত সংস্করণ: অ্যাপগুলি লাইব্রেরি থেকে বেসলাইন প্রোফাইল ব্যবহার করতে পারে এবং src/main/baseline-prof.txt ফাইলে তাদের নিজস্ব বেসলাইন প্রোফাইল প্রদান করতে পারে।
  • একটি অ্যাপ বান্ডেল ( ইস্যু #230361284 ) থেকে APK তৈরি করার সময় বেসলাইন প্রোফাইলগুলি সঠিকভাবে প্যাকেজ করা হয়।
  • একাধিক .dex ফাইল সহ অ্যাপগুলির জন্য, প্রাথমিক .dex ফাইলের জন্য বেসলাইন প্রোফাইলগুলি সঠিকভাবে প্যাকেজ করা হয়৷

প্রোফাইল প্রজন্মের উদাহরণ

অ্যাপ স্টার্টআপের জন্য একটি বেসলাইন প্রোফাইল তৈরি করার জন্য নিম্নলিখিত একটি উদাহরণ ক্লাস, সেইসাথে প্রস্তাবিত ম্যাক্রোবেঞ্চমার্ক লাইব্রেরি ব্যবহার করে বেশ কয়েকটি নেভিগেশন এবং স্ক্রোল ইভেন্ট:

@OptIn(ExperimentalBaselineProfilesApi::class)
class BaselineProfileGenerator {
    @get:Rule
    val baselineProfileRule = BaselineProfileRule()

    @Test
    fun appStartupAndUserJourneys() {
        baselineProfileRule.collect(packageName = PACKAGE_NAME) {
            // App startup journey.
            startActivityAndWait()

            device.findObject(By.text("COMPOSE LAZYLIST")).clickAndWait(Until.newWindow(), 1_000)
            device.findObject(By.res("myLazyColumn")).also {
                it.fling(Direction.DOWN)
                it.fling(Direction.UP)
            }
            device.pressBack()
        }
    }
}

আপনি GitHub-এ আমাদের পারফরম্যান্স নমুনার অংশ হিসাবে সম্পূর্ণ প্রসঙ্গে এবং আরও বিস্তারিতভাবে এই কোডটি দেখতে পারেন।

কি অন্তর্ভুক্ত করতে হবে

একটি অ্যাপে বেসলাইন প্রোফাইল ব্যবহার করার সময়, আপনি অ্যাপ স্টার্টআপ কোড এবং স্ক্রিন বা স্ক্রলিংয়ের মধ্যে নেভিগেশনের মতো সাধারণ ব্যবহারকারীর ইন্টারঅ্যাকশন অন্তর্ভুক্ত করতে পারেন। আপনি সম্পূর্ণ প্রবাহ যেমন নিবন্ধন, লগইন বা অর্থপ্রদান সংগ্রহ করতে পারেন। যেকোন ব্যবহারকারীর যাত্রা যাকে আপনি সমালোচনামূলক মনে করেন তাদের রানটাইম কর্মক্ষমতা উন্নত করে বেসলাইন প্রোফাইল থেকে উপকৃত হতে পারে।

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

লাইব্রেরিগুলি তাদের নিজস্ব বেসলাইন প্রোফাইল সরবরাহ করতে পারে এবং অ্যাপের কার্যকারিতা উন্নত করতে রিলিজ সহ তাদের পাঠাতে পারে। উদাহরণস্বরূপ, জেটপ্যাক রচনা কর্মক্ষমতায় একটি বেসলাইন প্রোফাইল ব্যবহার করুন বিভাগটি দেখুন।

বেসলাইন প্রোফাইল কিভাবে কাজ করে

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

  1. মানব-পঠনযোগ্য প্রোফাইল নিয়মগুলি আপনার অ্যাপের জন্য তৈরি করা হয় এবং অ্যাপে বাইনারি আকারে কম্পাইল করা হয়। আপনি তাদের assets/dexopt/baseline.prof এ খুঁজে পেতে পারেন। তারপরে আপনি যথারীতি Google Play-তে AAB আপলোড করতে পারেন।

  2. Google Play প্রোফাইলটি প্রক্রিয়া করে এবং APK সহ ব্যবহারকারীদের কাছে সরাসরি পাঠায়। ইনস্টলেশনের সময়, ART প্রোফাইলে পদ্ধতিগুলির AOT সংকলন করে, যার ফলে সেই পদ্ধতিগুলি দ্রুত কার্যকর হয়। প্রোফাইলে অ্যাপ লঞ্চে বা ফ্রেম রেন্ডারিংয়ের সময় ব্যবহৃত পদ্ধতিগুলি থাকলে, ব্যবহারকারী দ্রুত লঞ্চের সময় এবং কম জ্যাঙ্ক অনুভব করতে পারে।

  3. এই প্রবাহটি সময়ের সাথে অ্যাপটির প্রকৃত ব্যবহারের উপর ভিত্তি করে ক্লাউড প্রোফাইলের সমষ্টিকে সূক্ষ্ম-টিউন পারফরম্যান্সের সাথে সহযোগিতা করে।

চিত্র 1. এই ডায়াগ্রামটি শেষ-ব্যবহারকারী বিতরণের মাধ্যমে আপলোড থেকে বেসলাইন প্রোফাইল ওয়ার্কফ্লো প্রদর্শন করে এবং কীভাবে সেই ওয়ার্কফ্লো ক্লাউড প্রোফাইলের সাথে সম্পর্কিত।

ক্লাউড প্রোফাইল

ক্লাউড প্রোফাইলগুলি PGO-এর একটি অতিরিক্ত ফর্ম অফার করে — Google Play Store দ্বারা একত্রিত এবং ইনস্টল টাইম সংকলনের জন্য বিতরণ করা হয়—একসাথে বেসলাইন প্রোফাইলগুলির সাথে৷

যদিও ক্লাউড প্রোফাইলগুলি অ্যাপের সাথে বাস্তব-বিশ্ব ব্যবহারকারীর ইন্টারঅ্যাকশন দ্বারা চালিত হয়, তারা তাদের উপলব্ধতা সীমিত করে একটি আপডেট বিতরণের পরে কয়েক ঘন্টা থেকে কয়েক দিন সময় নেয়। প্রোফাইলগুলি সম্পূর্ণরূপে বিতরণ না হওয়া পর্যন্ত, নতুন বা আপডেট হওয়া অ্যাপগুলির ব্যবহারকারীদের জন্য অ্যাপের কার্যক্ষমতা সাবঅপ্টিমাল। আরও, ক্লাউড প্রোফাইলগুলি শুধুমাত্র Android 9 (API লেভেল 28) বা উচ্চতর চলমান Android ডিভাইসগুলিকে সমর্থন করে এবং শুধুমাত্র সেই সমস্ত অ্যাপগুলির জন্য ভাল স্কেল করে যেগুলির ব্যবহারকারীর সংখ্যা যথেষ্ট বড়।

অ্যান্ড্রয়েড সংস্করণ জুড়ে সংকলন আচরণ

অ্যান্ড্রয়েড প্ল্যাটফর্ম সংস্করণগুলি বিভিন্ন অ্যাপ সংকলন পদ্ধতি ব্যবহার করে, প্রতিটি একটি সংশ্লিষ্ট কর্মক্ষমতা ট্রেডঅফ সহ। বেসলাইন প্রোফাইলগুলি সমস্ত ইনস্টলের জন্য একটি প্রোফাইল প্রদান করে পূর্ববর্তী সংকলন পদ্ধতির উপর উন্নতি করে।

অ্যান্ড্রয়েড সংস্করণ সংকলন পদ্ধতি অপ্টিমাইজেশান পদ্ধতি
5 থেকে 6 পর্যন্ত (API স্তর 21 থেকে 23 পর্যন্ত) সম্পূর্ণ AOT ইনস্টলের সময় সম্পূর্ণ অ্যাপটি অপ্টিমাইজ করা হয়, যার ফলে অ্যাপটি ব্যবহার করার জন্য দীর্ঘ অপেক্ষার সময়, র‍্যাম এবং ডিস্কের স্থানের ব্যবহার বৃদ্ধি এবং ডিস্ক থেকে কোড লোড করার জন্য দীর্ঘ সময়, সম্ভাব্যভাবে ঠান্ডা শুরু হওয়ার সময় বৃদ্ধি পায়।
7 থেকে 8.1 পর্যন্ত (API লেভেল 24 থেকে 27 পর্যন্ত) আংশিক AOT (বেসলাইন প্রোফাইল) বেসলাইন প্রোফাইলগুলি androidx.profileinstaller দ্বারা ইনস্টল করা হয় যখন অ্যাপ মডিউল এই নির্ভরতাকে সংজ্ঞায়িত করে। ART অ্যাপটির ব্যবহারের সময় অতিরিক্ত প্রোফাইল নিয়ম যোগ করে এবং ডিভাইসটি নিষ্ক্রিয় থাকলে সেগুলি কম্পাইল করে এটিকে আরও উন্নত করতে পারে। এটি ডিস্ক থেকে কোড লোড করার জন্য ডিস্কের স্থান এবং সময়ের জন্য অপ্টিমাইজ করে, যার ফলে অ্যাপের জন্য অপেক্ষার সময় হ্রাস পায়।
9 (API স্তর 28) এবং উচ্চতর আংশিক AOT (বেসলাইন + ক্লাউড প্রোফাইল) APK এবং ক্লাউড প্রোফাইল অপ্টিমাইজ করতে অ্যাপ ইনস্টলের সময় প্লে বেসলাইন প্রোফাইল ব্যবহার করে—যদি পাওয়া যায়। ইনস্টলেশনের পরে, এআরটি প্রোফাইলগুলি প্লে-তে আপলোড করা হয়, একত্রিত করা হয় এবং তারপরে অন্যান্য ব্যবহারকারীরা যখন অ্যাপটি ইনস্টল বা আপডেট করে তখন তাদের ক্লাউড প্রোফাইল হিসাবে সরবরাহ করা হয়।

জ্ঞাত সমস্যা

নিম্নলিখিত সম্ভাব্য সমস্যা এবং সমাধান, বা সমস্যা যার জন্য কাজ করার জন্য চলমান উন্নয়ন রয়েছে:

  • OnePlus ডিভাইস সহ কিছু ডিভাইসে অনুমতি সেটিংসের কারণে বেসলাইন প্রোফাইল জেনারেশন ব্যর্থ হতে পারে। এটিকে ঘিরে কাজ করতে, বিকাশকারী বিকল্প সেটিংসে অক্ষম অনুমতি পর্যবেক্ষণ বিকল্পটি বন্ধ করুন৷

  • ফায়ারবেস টেস্ট ল্যাব ডিভাইসে বেসলাইন প্রোফাইল জেনারেশন সমর্থিত নয়, যার মধ্যে গ্রেডল-ম্যানেজড টেস্ট ল্যাব ডিভাইস ( ইস্যু #285187547 )।

  • লাইব্রেরির জন্য সফলভাবে বেসলাইন প্রোফাইল প্রদান করতে, বেসলাইন প্রোফাইল গ্রেডল প্লাগইন 1.2.3 বা AGP 8.3 ব্যবহার করুন, সর্বনিম্ন ( ইস্যু #313992099 )।

  • আপনি যদি ./gradlew app:generateBaselineProfile কমান্ড দিয়ে বেসলাইন প্রোফাইল তৈরি করেন, তাহলে পরীক্ষার মডিউলের বেঞ্চমার্কগুলিও চলে এবং ফলাফলগুলি বাতিল করা হয়৷ যদি এটি ঘটে, আপনি -P android.testInstrumentationRunnerArguments.androidx.benchmark.enabledRules=BaselineProfile দিয়ে কমান্ড চালিয়ে শুধুমাত্র বেসলাইন প্রোফাইল তৈরি করতে পারেন। এই সমস্যাটি AGP 8.2-এ ঠিক করা হয়েছে।

  • সমস্ত বিল্ড প্রকারের জন্য বেসলাইন প্রোফাইল তৈরি করার কমান্ড- ./gradlew app:generateBaselineProfile — শুধুমাত্র রিলিজ বিল্ড টাইপের জন্য বেসলাইন প্রোফাইল তৈরি করে। এই সমস্যাটি AGP 8.1-এ ঠিক করা হয়েছে।

  • নন-গুগল-প্লে-স্টোর অ্যাপ ডিস্ট্রিবিউশন চ্যানেলগুলি ইনস্টলেশনের সময় বেসলাইন প্রোফাইলগুলি ব্যবহার করে সমর্থন নাও করতে পারে। এই চ্যানেলগুলির মাধ্যমে ইনস্টল করা অ্যাপগুলির ব্যবহারকারীরা ব্যাকগ্রাউন্ড ডেক্সপট রান না হওয়া পর্যন্ত সুবিধাগুলি দেখতে পান না - যা সম্ভবত রাতারাতি।

  • প্লে স্টোরের অভ্যন্তরীণ অ্যাপ শেয়ারিং বেসলাইন প্রোফাইল সমর্থন করে না; যাইহোক, অভ্যন্তরীণ টেস্টিং ট্র্যাক করে।

  • কিছু ডিভাইসে ব্যাটারি অপ্টিমাইজেশন, যেমন Huawei ডিভাইস, প্রোফাইল ইনস্টলেশনে হস্তক্ষেপ করতে পারে। আপনার প্রোফাইলগুলি কার্যকরভাবে ইনস্টল করা হয়েছে তা নিশ্চিত করতে, আপনার বেঞ্চমার্ক ডিভাইসে যেকোনো ব্যাটারি অপ্টিমাইজেশন অক্ষম করুন।

অতিরিক্ত সম্পদ

{% শব্দার্থে %} {% endverbatim %} {% শব্দার্থে %} {% endverbatim %}