অ্যান্ড্রয়েড রানটাইম (এআরটি) এবং ডালভিক

অ্যান্ড্রয়েড রানটাইম (এআরটি) হ'ল অ্যান্ড্রয়েডে অ্যাপ্লিকেশন এবং কিছু সিস্টেম পরিষেবাদি দ্বারা পরিচালিত পরিচালিত রানটাইম। এআরটি এবং এর পূর্বসূরি ডালভিক মূলত বিশেষত অ্যান্ড্রয়েড প্রকল্পের জন্য তৈরি করা হয়েছিল। রানটাইম হিসাবে এআরটি ডালভিক এক্সিকিউটেবল ফর্ম্যাট এবং ডেক্স বাইটকোড নির্দিষ্টকরণ কার্যকর করে exec

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

এআরটি বৈশিষ্ট্যগুলি

এআরটি বাস্তবায়িত কয়েকটি প্রধান বৈশিষ্ট্য এখানে রইল।

সামনের সময়ের (এওটি) সংকলন

এআরটি সামনের সময়ের (এওটি) সংকলন প্রবর্তন করে, যা অ্যাপের কার্য সম্পাদন উন্নত করতে পারে। এআরটি-তেও ডালভিকের চেয়ে শক্ত ইনস্টল-টাইম যাচাইকরণ রয়েছে।

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

উন্নত আবর্জনা সংগ্রহ

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

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

উন্নয়ন এবং ডিবাগিং উন্নতি

এআরটি অ্যাপ্লিকেশন বিকাশ এবং ডিবাগিং উন্নত করতে বিভিন্ন বৈশিষ্ট্য সরবরাহ করে।

স্যাম্পলিং প্রোফাইলারের জন্য সমর্থন

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

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

আরও ডিবাগিং বৈশিষ্ট্যগুলির জন্য সমর্থন

এআরটি বিশেষ করে মনিটরিং এবং আবর্জনা সংগ্রহ-সম্পর্কিত কার্যকারিতাতে বেশ কয়েকটি নতুন ডিবাগিং বিকল্পগুলিকে সমর্থন করে। উদাহরণস্বরূপ, আপনি:

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

ব্যতিক্রম এবং ক্র্যাশ প্রতিবেদনে ডায়গনিস্টিক বিশদ উন্নত

যখন রানটাইম ব্যতিক্রম ঘটে তখন এআরটি আপনাকে যথাসম্ভব প্রসঙ্গ এবং বিশদ দেয়। এআরটি java.lang.ClassCastException , java.lang.ClassNotFoundException এবং java.lang.NullPointerException জন্য বর্ধিত ব্যতিক্রম বিশদ সরবরাহ করে। (ডালভিকের পরবর্তী সংস্করণগুলি java.lang.ArrayIndexOutOfBoundsException এবং java.lang.ArrayStoreException জন্য বর্ধিত ব্যতিক্রমের বিশদ সরবরাহ করেছে, যা এখন অ্যারের আকার এবং সীমানার বাইরে অফসেট অন্তর্ভুক্ত করে এবং java.lang.ArrayStoreException এটি করে)

উদাহরণস্বরূপ, java.lang.NullPointerException এখন অ্যাপটি নাল পয়েন্টারটির সাথে কী করার চেষ্টা করছে, যেমন অ্যাপ্লিকেশনটিতে লেখার জন্য চেষ্টা করা ক্ষেত্র, বা যে পদ্ধতিতে কল করার চেষ্টা করা হয়েছিল তার তথ্য প্রদর্শন করে। এখানে কিছু সাধারণ উদাহরণ দেওয়া হল:

java.lang.NullPointerException: Attempt to write to field 'int
android.accessibilityservice.AccessibilityServiceInfo.flags' on a null object
reference
java.lang.NullPointerException: Attempt to invoke virtual method
'java.lang.String java.lang.Object.toString()' on a null object reference

এআরটি জাভা এবং নেটিভ স্ট্যাক উভয় তথ্য অন্তর্ভুক্ত করে অ্যাপ্লিকেশন নেটিভ ক্র্যাশ প্রতিবেদনে উন্নত প্রসঙ্গের তথ্য সরবরাহ করে।

সমস্যাগুলির প্রতিবেদন করা

আপনি যদি অ্যাপ্লিকেশন জেএনআই ইস্যুগুলির কারণে নয় এমন কোনও সমস্যাগুলিতে চলে যান তবে দয়া করে অ্যান্ড্রয়েড ওপেন সোর্স প্রকল্প ইস্যু ট্র্যাকারের মাধ্যমে তাদের প্রতিবেদন করুন। কোনও adb bugreport অন্তর্ভুক্ত করুন এবং উপলভ্য থাকলে গুগল প্লে adb bugreport অ্যাপ্লিকেশনটিতে লিঙ্ক করুন। অন্যথায়, যদি সম্ভব হয় তবে একটি APK সংযুক্ত করুন যা সমস্যাটি পুনরুত্পাদন করে।