অনুষ্ঠান ও কার্যক্রম

আপনার অ্যাপকে সংকুচিত, অপ্টিমাইজ এবং দ্রুততর করতে R8 ব্যবহার করুন।

৫ মিনিটের পাঠ
Ben Weiss
ডেভেলপার সম্পর্ক প্রকৌশলী

আপনার অ্যাপকে সংকুচিত, অপ্টিমাইজ এবং দ্রুততর করতে R8 ব্যবহার করুন।

অ্যান্ড্রয়েড পারফরম্যান্স স্পটলাইট সপ্তাহের প্রথম দিনে আপনাকে স্বাগতম!

আপনার অ্যাপের পারফরম্যান্স উন্নত করার জন্য সবচেয়ে কার্যকর ও সহজ একটি পরিবর্তন দিয়েই আমরা শুরু করছি: R8 অপটিমাইজারকে ফুল মোডে চালু করা।

আপনার অ্যাপের আকার কমানোর একটি টুল হিসেবে R8-কে আপনি সম্ভবত ইতিমধ্যেই চেনেন। এটি অব্যবহৃত কোড এবং রিসোর্স সরিয়ে দিয়ে আপনার অ্যাপের আকার কমানোর কাজটি চমৎকারভাবে করে। কিন্তু এর আসল শক্তি, যেটিতে এটি সত্যিই অসাধারণ , তা হলো একটি অপটিমাইজার হিসেবে।

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

এই নিবন্ধটি পড়ার পর, ইউটিউবে R8 অপটিমাইজারের পারফরম্যান্স স্পটলাইট উইক পরিচিতিটি দেখে নিন।

কীভাবে R8 আপনার অ্যাপকে আরও কর্মক্ষম করে তোলে

ছবি.png

চলুন, অ্যাপের পারফরম্যান্স উন্নত করতে R8 অপটিমাইজার যে সবচেয়ে বড় পদক্ষেপগুলো নেয়, সেগুলোর ওপর আলোকপাত করা যাক।

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

মেথড ইনলাইনিং একটি মেথড কলকে প্রকৃত কোড দ্বারা প্রতিস্থাপন করে, যা রানটাইম পারফরম্যান্স উন্নত করে।

কোডকে আরও সংক্ষিপ্ত করার জন্য ক্লাস মার্জিং এবং অন্যান্য কৌশল প্রয়োগ করা হয়। আপনার সমস্ত সুন্দর অ্যাবস্ট্রাকশন, যেমন ইন্টারফেস এবং ক্লাস হায়ারার্কি, এই পর্যায়ে অপ্রাসঙ্গিক এবং সম্ভবত সরিয়ে ফেলা হবে।

ক্লাস, ফিল্ড এবং মেথডের নাম পরিবর্তন করে ছোট ও অর্থহীন নাম রাখার জন্য কোড মিনিফিকেশন ব্যবহার করা হয়। তাই MyDataModel এর পরিবর্তে আপনার কাছে এমন একটি ক্লাস থাকতে পারে যার নাম a । R8 অপ্টিমাইজ করা অ্যাপের স্ট্যাক ট্রেস পড়ার সময় এটিই সবচেয়ে বেশি বিভ্রান্তির সৃষ্টি করে। (উল্লেখ্য যে, আমরা AGP 9.0-এ এর উন্নতি করেছি!)

রিসোর্স শ্রিংকিং এক্সএমএল ফাইল এবং ড্রয়েবলের মতো অব্যবহৃত রিসোর্সগুলো সরিয়ে দিয়ে একটি অ্যাপের আকার আরও কমিয়ে দেয়।

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

কেস স্টাডি: R8 এর মাধ্যমে রেডিটের পারফরম্যান্সের উন্নতি

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

ছবি.png

ক্যাপশন: কীভাবে R8 রেডিটের অ্যাপের পারফরম্যান্স উন্নত করেছে

দলটি ৪০% দ্রুততর কোল্ড স্টার্টআপ , "অ্যাপ্লিকেশন নট রেসপন্ডিং" (ANR) ত্রুটি ৩০% হ্রাস , ফ্রেম রেন্ডারিং-এ ২৫% উন্নতি এবং অ্যাপের আকারে ১৪% হ্রাস লক্ষ্য করেছে।

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

তাদের উন্নতি সম্পর্কে আপনি আমাদের ব্লগে আরও পড়তে পারেন।

R8 ব্যবহারের অ-প্রযুক্তিগত পার্শ্ব প্রতিক্রিয়া

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

ছবি.png

সুতরাং, আসল কথাটি হলো: সচেতনভাবে কর্মক্ষমতা বৃদ্ধি করা একটি মহৎ গুণ

আপনাকে আরও উন্নত পারফরম্যান্সের অ্যাপের দিকে পরিচালিত করা

আমরা শুনেছিলাম যে R8-এর জন্য আমাদের ডেভেলপার নির্দেশিকা উন্নত করার প্রয়োজন ছিল। তাই আমরা কাজে লেগে পড়লাম। R8 অপটিমাইজারের জন্য ডেভেলপার নির্দেশিকা এখন অনেক বেশি কার্যকরী এবং R8 সক্রিয় ও ডিবাগ করার জন্য বিস্তারিত নির্দেশনা প্রদান করে।

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

আমরা ‘কিপ রুলস’ (Keep Rules) সম্পর্কিত আমাদের নির্দেশিকা উল্লেখযোগ্যভাবে প্রসারিত করেছি, যা R8 অপটিমাইজার নিয়ন্ত্রণের প্রধান প্রক্রিয়া। এখন আমরা একটি বিভাগ যুক্ত করেছি যেখানে ‘কিপ রুলস’ কী, কীভাবে তা প্রয়োগ করতে হয় এবং এটি লেখা ও রক্ষণাবেক্ষণের জন্য সেরা অনুশীলন সম্পর্কে আপনাকে নির্দেশনা দেওয়া হয়েছে। এছাড়াও আমরা বাস্তবসম্মত ও কার্যকর ব্যবহারের ক্ষেত্র এবং উদাহরণ প্রদান করেছি, যা আপনাকে বুঝতে সাহায্য করবে কীভাবে সঠিকভাবে R8-কে রানটাইমে প্রয়োজনীয় কোড মুছে ফেলা থেকে বিরত রাখা যায়; যেমন রিফ্লেকশনের মাধ্যমে অ্যাক্সেস করা কোড বা JNI নেটিভ ইন্টারফেসের ব্যবহার।

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

R8 অপ্টিমাইজারের পূর্ণ সম্ভাবনা কাজে লাগান।

অ্যান্ড্রয়েড গ্র্যাডল প্লাগইনের ৮.০ সংস্করণ থেকে R8 অপটিমাইজার ডিফল্টরূপে 'ফুল মোড' ব্যবহার করে। যদি আপনার প্রজেক্টটি অনেক বছর ধরে তৈরি হয়ে থাকে, তবে এটিকে নিষ্ক্রিয় করার জন্য এতে এখনও একটি লিগ্যাসি ফ্ল্যাগ থাকতে পারে। আপনার gradle.properties ফাইলে এই লাইনটি খুঁজে দেখুন এবং এটি মুছে ফেলুন।

android.enableR8.fullMode=false // delete this line to enable R8's full potential

এখন আপনার অ্যাপের build.gradle.kts ফাইলে রিলিজ ভ্যারিয়েন্টের জন্য R8 সক্রিয় করা আছে কিনা তা পরীক্ষা করুন। isMinifyEnabled এবং isShrinkResources-কে true সেট করার মাধ্যমে এটি সক্রিয় করা হয়। এই ধাপে আপনি ডিফল্ট এবং কাস্টম কনফিগারেশন ফাইলও পাস করতে পারেন।

release {

   isMinifyEnabled = true

   isShrinkResources = true

   proguardFiles(

       getDefaultProguardFile("proguard-android-optimize.txt"),

       "keep-rules.pro"

   )

}

কেস স্টাডি: ডিজনি+ এর পারফরম্যান্সের উন্নতি

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

proguard-android.txt proguard-android-optimize.txt দিয়ে প্রতিস্থাপন করার পর, Disney+ টিম তাদের অ্যাপের পারফরম্যান্সে উল্লেখযোগ্য উন্নতি দেখতে পায়।

ছবি.png

এই পরিবর্তনসহ অ্যাপটির একটি নতুন সংস্করণ ব্যবহারকারীদের জন্য চালু করার পর, Disney+ অ্যাপটি ৩০% দ্রুত চালু হতে দেখা গেছে এবং ব্যবহারকারীদের কাছে ANR-এর পরিমাণ ২৫% কমে গেছে।

আজও অনেক অ্যাপ proguard-android.txt ফাইলটি ব্যবহার করে, যেটিতে dontoptimize ফ্ল্যাগটি রয়েছে। আর এখানেই আমাদের টুলিংয়ের উন্নতিগুলো কাজে আসে।

টুলিং সমর্থন

Android Studio Narwhal 3 Feature Drop থেকে শুরু করে, proguard-android.txt ব্যবহার করার সময় আপনি একটি লিন্ট সতর্কতা দেখতে পাবেন।

ছবি.png

এবং AGP 9.0 থেকে আমরা এই ফাইলটির জন্য সমর্থন সম্পূর্ণরূপে বন্ধ করে দিচ্ছি । এর মানে হল আপনাকে proguard-android-optimize.txt এ স্থানান্তরিত হতে হবে।

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

পরবর্তী পদক্ষেপ

ইউটিউবে পারফরম্যান্স স্পটলাইট উইক-এর R8 অপটিমাইজারের পরিচিতি পর্বটি দেখে নিন।

📣 পারফরম্যান্স চ্যালেঞ্জটি গ্রহণ করুন!

এখন এর সুফলগুলো নিজে দেখার সময় এসেছে।

আমরা আপনাকে আজই আপনার অ্যাপের জন্য R8 ফুল মোড চালু করার আহ্বান জানাচ্ছি।

  1. শুরু করতে আমাদের ডেভেলপার গাইড অনুসরণ করুন: অ্যাপ অপ্টিমাইজেশন সক্ষম করুন
  2. আপনি এখনও proguard-android.txt ব্যবহার করছেন কিনা তা পরীক্ষা করুন এবং এটিকে proguard-android-optimize.txt দিয়ে প্রতিস্থাপন করুন।
  3. এরপর, এর প্রভাব পরিমাপ করুন । শুধু পার্থক্য অনুভব করবেন না, তা যাচাইও করুনGitHub-এ থাকা আমাদের Macrobenchmark স্যাম্পল অ্যাপের কোডটি ব্যবহার করে আপনার স্টার্টআপ টাইম আগে ও পরে পরিমাপ করে আপনার পারফরম্যান্সের উন্নতি যাচাই করুন।

আমরা আত্মবিশ্বাসী যে আপনি আপনার অ্যাপের পারফরম্যান্সে একটি উল্লেখযোগ্য উন্নতি দেখতে পাবেন। R8 সক্রিয় করা বা এর সমস্যা সমাধান সংক্রান্ত যেকোনো প্রশ্নের জন্য #optimizationEnabled ব্যবহার করুন। আমরা সাহায্য করার জন্য আছি।

শুক্রবারের 'আস্ক অ্যান্ড্রয়েড' সেশনের জন্য আপনার প্রশ্নগুলো নিয়ে আসুন।

পারফরম্যান্স সংক্রান্ত যেকোনো প্রশ্ন জানাতে #AskAndroid সোশ্যাল ট্যাগটি ব্যবহার করুন। সপ্তাহজুড়ে আমরা আপনাদের প্রশ্নগুলো পর্যবেক্ষণ করছি এবং ২১শে নভেম্বর, শুক্রবার পারফরম্যান্স বিষয়ক 'আস্ক অ্যান্ড্রয়েড' সেশনে সেগুলোর কয়েকটির উত্তর দেব। আগামীকালের জন্য অপেক্ষা করুন, যেখানে আমরা ডিবাগিং এবং ট্রাবলশুটিং নিয়ে আরও গভীরভাবে আলোচনা করব। তবে আপাতত, R8 দিয়ে কাজ শুরু করুন এবং আপনার অ্যাপকে দ্রুত গতিতে এগিয়ে নিয়ে যান।

    লিখেছেন:

    পড়তে থাকুন