যখন কোনো অ্যাপ কোনো স্টোর বা ইনস্টলারের মাধ্যমে ইনস্টল করা হয়, তখন সেই স্টোর বা ইনস্টলারটিকে "ইনস্টলার অফ রেকর্ড" হিসেবে গণ্য করা হয়, অর্থাৎ অ্যাপটির সর্বশেষ ইনস্টলার। অ্যান্ড্রয়েড ১৪-এর আগে, অ্যান্ড্রয়েড অন্য কোনো স্টোর বা অ্যাপ ইনস্টলারকে "ইনস্টলার অফ রেকর্ড" হওয়ার এবং ব্যবহারকারীকে অবহিত না করেই অ্যাপটি আপডেট করার অনুমতি দিত।
অ্যান্ড্রয়েড ১৪-এ, কোনো অ্যাপের প্রাথমিক ইনস্টলার নিজেকে 'আপডেট মালিক' হিসেবে ঘোষণা করতে পারে এবং অ্যাপটির আপডেটের দায়িত্ব নিতে পারে। যদি অন্য কোনো ইনস্টলার অ্যাপটি আপডেট করার চেষ্টা করে, তবে আপডেটটি এগিয়ে যাওয়ার আগে ব্যবহারকারীকে নতুন আপডেটটি অনুমোদন করার সুযোগ দেওয়া হয়।
মালিকানা আপডেট করতে প্যাকেজগুলি বেছে নিন
কোনো স্টোর বা ইনস্টলার একটি অ্যাপ প্যাকেজের মালিক, তা ঘোষণা করতে, প্রতিটি প্যাকেজের জন্য আপনার sysconfig XML-এ নিম্নলিখিতভাবে update-ownership ট্যাগটি অন্তর্ভুক্ত করুন:
<update-ownership package="com.example.application" installer="com.example.installer" />
এই উদাহরণে, com.example.application হলো মালিকানাধীন অ্যাপ প্যাকেজ এবং com.example.installer হলো প্যাকেজটির মালিক। যখন কোনো প্যাকেজের মালিকানা আপডেট করার জন্য সম্মতি দেওয়া হয়, তখন অন্যান্য বিশেষাধিকারপ্রাপ্ত স্টোর বা ইনস্টলারদেরকে মালিকানা আপডেটের বিষয়টি সামলাতে হয় এবং অ্যাপটি আপডেট করার জন্য ব্যবহারকারীর অনুমতি নিতে হয় ।
মালিকানা পরিবর্তন থেকে অপ্ট-আউট প্যাকেজ
আপনি APK-তে একটি ডিনাইলিস্ট (denylist) যোগ করে আপনার স্টোর বা ইনস্টলারের মাধ্যমে প্যাকেজের একটি নির্দিষ্ট অংশকে আপডেট মালিকানা পরিবর্তন থেকে বাদ রাখতে পারেন। এই তালিকায় কোনো প্যাকেজ অন্তর্ভুক্ত করলে, কোনো স্টোর বা ইনস্টলারই সেই প্যাকেজের আপডেট মালিকানার জন্য অনুরোধ করতে পারবে না।
অন্য কোনো স্টোর বা ইনস্টলার দ্বারা প্যাকেজগুলির আপডেটযোগ্যতা বাদ দিতে:
মূল স্টোর বা ইনস্টলারের
AndroidManifest.xmlফাইলে নিম্নলিখিত প্রপার্টিটি অন্তর্ভুক্ত করুন:<application …> <property android:name="android.app.PROPERTY_LEGACY_UPDATE_OWNERSHIP_DENYLIST" android:resource="@xml/legacyOwnershipDenylist" /> </application>এই উদাহরণটিতে
legacyOwnershipDenylistনামক একটি XML ডিনাইলিস্টকে উল্লেখ করা হয়েছে।নিম্নলিখিত বিন্যাসে একটি ডিনাইলিস্টকে র XML রিসোর্স হিসেবে তৈরি করুন:
<deny-ownership>com.example.app1</deny-ownership> <deny-ownership>com.example.app2</deny-ownership>
যদি কোনো স্টোর বা ইনস্টলার ডিনাইলিস্টে থাকা কোনো প্যাকেজের মালিকানার জন্য অনুরোধ করে, তবে সেই মালিকানা মঞ্জুর করা হবে না এবং প্যাকেজটি ইনস্টল হলেও কোনো ইনস্টলারের মালিকানাধীন থাকবে না। অধিকন্তু, ইনস্টলার নির্বিশেষে, ডিনাইলিস্টে থাকা কোনো অ্যাপের মালিক কেউই হতে পারে না।
যে ইনস্টলার APK-টি এই তালিকাটি সরবরাহ করে, তার আপডেটের মাধ্যমে এই তালিকার প্যাকেজগুলো পরিবর্তিত হতে পারে। পরবর্তীতে ডিনাই লিস্টে অন্তর্ভুক্ত হওয়া কোনো প্যাকেজের জন্য নির্ধারিত মালিকানা, ইনস্টলারটি আপডেট করা হলে মুছে যায়। ফলে, ডিনাই লিস্টে থাকা অ্যাপ প্যাকেজের পরবর্তী আপডেটগুলোর জন্য ব্যবহারকারীর হস্তক্ষেপের প্রয়োজন হবে না।
আপডেটের মালিককে পরিচালনা করুন এবং ব্যবহারকারীর সম্মতি নিন।
অ্যান্ড্রয়েড ১৪ অনুযায়ী, কোনো স্টোর বা অ্যাপ ইনস্টলারের android.permission.INSTALL_PACKAGES পারমিশন থাকলেও, যদি সে এমন কোনো অ্যাপ আপডেট করতে চায় যার আপডেট অন্য কোনো স্টোর বা ইনস্টলারের মালিকানাধীন, তাহলে তাকে STATUS_PENDING_USER_ACTION স্টেটটি হ্যান্ডেল করতে হবে।
InstallAPKSessionApi.java স্যাম্পল অ্যাপটিতে STATUS_PENDING_USER_ACTION কীভাবে হ্যান্ডেল করতে হয়, তাও দেখানো হয়েছে।
প্রি-লোডেড অ্যাপগুলির মালিকানা প্রতিষ্ঠা করুন
প্রি-লোডেড অ্যাপগুলো সাধারণত কোনো নির্দিষ্ট ইনস্টলারের মালিকানাধীন থাকে না। এর পরিবর্তে, 'মালিকানা আপডেট করতে প্যাকেজ অপ্ট-ইন করুন' অংশে দেখানো অনুযায়ী, সিস্টেম কনফিগারেশন ব্যবহার করে প্রি-লোডেড অ্যাপগুলোকে একটি নতুন মালিক নির্ধারণ করে দেওয়া হয়।