पैकेज दिखने के तरीके की जांच करें

अगर आपका ऐप्लिकेशन, इस्तेमाल के उदाहरणों को पूरा करने के लिए अन्य ऐप्लिकेशन के साथ इंटरैक्शन पर निर्भर करता है, तो यह जांच करना ज़रूरी है कि Android 11 (एपीआई लेवल 30) और इसके बाद के वर्शन में पैकेज विज़िबिलिटी में हुए बदलावों का आपके ऐप्लिकेशन पर क्या असर पड़ता है.

इस गाइड में, व्यवहार में हुए बदलावों को टेस्ट करने के बारे में कुछ सुझाव भी दिए गए हैं. साथ ही, यह लॉग मैसेज को कॉन्फ़िगर करने में आपकी मदद करती है, ताकि यह तय किया जा सके कि आपका ऐप्लिकेशन ज़्यादा बारीकी से कैसे प्रभावित हो सकता है.

बदलावों के असर की जांच करना

यह देखने के लिए कि इस बदलाव का असर आपके ऐप्लिकेशन पर पड़ता है या नहीं, यह तरीका अपनाएं:

  1. Android Studio 3.6.1 या इसके बाद का वर्शन इंस्टॉल करें.
  2. Android Studio के साथ काम करने वाला Gradle का सबसे नया वर्शन इंस्टॉल करें.
  3. अपने ऐप्लिकेशन के targetSdkVersion को 30 या इसके बाद के वर्शन पर सेट करें.
  4. अपने ऐप्लिकेशन की मेनिफ़ेस्ट फ़ाइल में <queries> एलिमेंट शामिल न करें.
  5. getInstalledApplications() पर कॉल करें या getInstalledPackages() पर जाएं. दोनों तरीके सफल होने पर, फ़िल्टर की गई सूची दिखाते हैं.
  6. देखें कि आपके ऐप्लिकेशन की कौनसी सुविधाएं काम नहीं कर रही हैं.
  7. उन सुविधाओं को ठीक करने के लिए, सही <queries> एंट्री जोड़ें.

पैकेज फ़िल्टर करने के लिए, लॉग मैसेज कॉन्फ़िगर करना

ऐप्लिकेशन के डिफ़ॉल्ट तौर पर दिखने की सेटिंग से आपके ऐप्लिकेशन पर क्या असर पड़ता है, इस बारे में ज़्यादा जानने के लिए, पैकेज फ़िल्टर करने के लिए लॉग मैसेज चालू करें. अगर Android Studio में कोई टेस्ट ऐप्लिकेशन या डीबग किया जा सकने वाला ऐप्लिकेशन डेवलप किया जा रहा है, तो सिस्टम लॉग में यह सुविधा उपलब्ध होती है. इसके अलावा, इसे मैन्युअल तरीके से चालू करने के लिए, टर्मिनल विंडो में यह कमांड चलाएं:

adb shell pm log-visibility --enable PACKAGE_NAME

इसके बाद, जब भी PackageManager ऑब्जेक्ट की रिटर्न वैल्यू से पैकेज फ़िल्टर किए जाते हैं, तो आपको Logcat में इस तरह का मैसेज दिखता है:

I/AppsFilter: interaction: PackageSetting{7654321 \
  com.example.myapp/12345} -> PackageSetting{...} BLOCKED