অ্যান্ড্রয়েড কেন ইনস্টল হওয়া অ্যাপ্লিকেশনগুলির APK ফাইল রাখে?


31

অ্যান্ড্রয়েড ইনস্টল করা ব্যবহারকারী অ্যাপ্লিকেশনগুলির APK ফাইল /data/appডিরেক্টরিতে এবং সিস্টেম অ্যাপ্লিকেশনগুলিকে /system/appডিরেক্টরিতে রাখে।

এর অর্থ কি প্রতিবার অ্যাপ্লিকেশন চালু হওয়ার পরে অ্যানড্রয়েড APK ফাইল থেকে ডেক্স ফাইলগুলি বের করে? যদি তা না হয় তবে আমি কী নিরাপদে APK ফাইলগুলি মুছতে পারি এবং তবুও অ্যাপটি চালাতে পারি?

উত্তর:


43

একটি অ্যান্ড্রয়েড APK এ সাধারণত এই জিনিসগুলি ধারণ করে।

assets/
lib/
META-INF/
res/
AndroidManifest.xml
classes.dex

ইনস্টলেশনের পরে, APK ফাইলটি অনুলিপি করা হয় /data/app, এবং classes.dexএটি চালিয়ে "অপ্টিমাইজড" করা হয় dex2oat(অ্যান্ড্রয়েড 5+ lib/এও নিষ্কাশিত হয়)। অপ্টিমাইজেশনের ফলাফল সংরক্ষণ করা হয় /data/dalvik-cache/তাই কোনও অ্যাপ্লিকেশনটি প্রতি ইনস্টলেশন বা আপডেটের মধ্যে একবারই অনুকূলিত হওয়া দরকার । বাকি সমস্ত কিছু APK এর ভিতরে রাখা হয়েছে। সুতরাং প্রথম উত্তরটি খুব স্পষ্ট: অ্যাপটির দ্বারা প্রয়োজনীয় assetsএবং resএর প্রয়োজনীয় জিনিসগুলি সরবরাহ করতে হবে এবং সেগুলি APK এর মধ্যে রয়েছে। সমর্থনকারী উদ্দেশ্যে APK ফাইলটি রাখা হয়েছে। আপনি যদি একটি APK মুছে ফেলেন তবে অ্যাপটি অবশ্যই শুরু হবে না। (অ্যাপ: আমার সম্পত্তি কোথায়?)

দ্বিতীয়ত, Google Play তে জন্য "ডেল্টা আপডেট" সমর্থন যোগ করা খুব অনেক আগে । ব-দ্বীপ আপডেট পদ্ধতিতে, পুরানো প্যাকেজ এবং নতুন প্যাকেজের মধ্যে পার্থক্য গণনা করা হয়। তারপরে জিপি "ডেল্টা" ডাউনলোড করে এবং আপডেট করা এপিপি উৎপাদনের জন্য মূল APK এ পরিবর্তনগুলি প্রয়োগ করে, ফলে ডাউনলোডের আকার হ্রাস করে।

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

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


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

@ তমোঘনা স্পেসটি আসলেই কোনও সমস্যা নয়, অন্যথায় অ্যান্ড্রয়েড 5+ এপিএকে lib/থেকে উত্তোলন করতে পারত না, আইওএস আইপিএ থেকে সমস্ত কিছু বের করত না। এটি কেবলমাত্র মৌলিক সততা যাচাইয়ের জন্য।
আইবুগ

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

1
সুতরাং এইচটিএমএল এবং জেএস ফাইলের মতো সম্পদ ফাইলগুলি এপিডিকে অ্যান্ড্রয়েড ফাইল সিস্টেমে কোনও নির্দিষ্ট স্থানে অনুলিপি করা হয়নি?
ব্যবহারকারী 1788736

1
@ ব্যবহারকারী 1788736 হ্যাঁ। সেগুলি এপিএকে ছেড়ে গেছে।
iBug
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.