প্ল্যাটফর্ম-স্বাক্ষরিত অ্যাপ হলো সেইসব অ্যাপ যা প্ল্যাটফর্ম প্যাকেজের ( android ) সাথে একই (বা সামঞ্জস্যপূর্ণ) সাইনিং সার্টিফিকেট ব্যবহার করে। একটি প্ল্যাটফর্ম-স্বাক্ষরিত অ্যাপ একটি সিস্টেম অ্যাপ (যা একটি সিস্টেম ইমেজ পার্টিশনে অবস্থিত) বা একটি নন-সিস্টেম অ্যাপ হতে পারে। প্ল্যাটফর্ম-স্বাক্ষরিত শেয়ার্ড ইউআইডি হলো সেইসব শেয়ার্ড ইউআইডি ( android:sharedUserId ) যেগুলোতে প্ল্যাটফর্ম-স্বাক্ষরিত অ্যাপ থাকে। ডিবাগযোগ্য বিল্ড হলো সেইসব বিল্ড যাদের android.os.Build.isDebuggable() true রিটার্ন করে, যেমন userdebug বা eng বিল্ড।
ঐতিহাসিকভাবে, কোন প্ল্যাটফর্ম-স্বাক্ষরিত নন-সিস্টেম অ্যাপ একটি প্ল্যাটফর্ম-স্বাক্ষরিত শেয়ার্ড UID-তে যোগ দিতে পারবে, তার উপর ডিভাইস নির্মাতাদের খুব কম নিয়ন্ত্রণ ছিল। অ্যান্ড্রয়েড ১৫ থেকে, নির্মাতারা /etc/sysconfig ডিরেক্টরিতে থাকা সিস্টেম কনফিগারেশন XML ফাইলগুলিতে প্ল্যাটফর্ম-স্বাক্ষরিত নন-সিস্টেম অ্যাপগুলিকে প্ল্যাটফর্ম-স্বাক্ষরিত শেয়ার্ড UID-তে যোগ দেওয়ার জন্য স্পষ্টভাবে অনুমতি দিতে পারে। যদি কোনো প্ল্যাটফর্ম-স্বাক্ষরিত নন-সিস্টেম অ্যাপকে একটি প্ল্যাটফর্ম-স্বাক্ষরিত শেয়ার্ড UID-এর অনুমতি তালিকায় (allowlist) যোগ করা না হয়, এবং অ্যাপটি তারপরেও সেই প্ল্যাটফর্ম-স্বাক্ষরিত শেয়ার্ড UID-তে যোগ দেওয়ার চেষ্টা করে (এর ম্যানিফেস্টে android:sharedUserId ব্যবহার করে), তবে সেই অ্যাপটি নন-ডিবাগযোগ্য বিল্ডগুলিতে ইনস্টল করা যাবে না।
একটি অনুমতি তালিকা যোগ করুন
আপনি অ্যাপগুলির জন্য অনুমতি তালিকা একটি একক XML ফাইলে অথবা একাধিক XML ফাইলে তালিকাভুক্ত করতে পারেন, যেমন frameworks/base/data/etc/package-shareduid-allowlist.xml :
<!--
This XML defines an allowlist for packages that want to join a particular shared-uid.
If a non-system package that is signed with platform signature, is trying to join a particular
shared-uid, and not in this list, the installation will fail.
- The "package" XML attribute refers to the app's package name.
- The "shareduid" XML attribute refers to the shared uid name.
-->
<config>
<allow-package-shareduid package="android.test.settings" shareduid="android.uid.system" />
</config>
অনুপস্থিত অনুমতি তালিকা খুঁজুন
অনুপস্থিত allowlist এন্ট্রি খুঁজে পেতে, আপনার প্ল্যাটফর্ম-স্বাক্ষরিত ননসিস্টেম অ্যাপটি একটি নন-ডিবাগযোগ্য বিল্ডে ইনস্টল করার চেষ্টা করুন এবং পরীক্ষা করে দেখুন সেটি তখনও ইনস্টল করা যায় কিনা। যদি তা না হয়, আপনি ডিভাইস লগগুলিতে নিম্নলিখিত ফরম্যাটের সতর্কীকরণ বার্তাগুলি খুঁজে দেখতে পারেন:
Non-preload app {PACKAGE_NAME} signed with platform signature and joining shared uid: {SHARED_UID_NAME}