একটি অ্যান্ড্রয়েড 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
মূল প্যাকেজটি থেকে ফাইল দরকার ।