अगर आपका ऐप्लिकेशन अपने इस्तेमाल के उदाहरणों के लिए, दूसरे ऐप्लिकेशन के साथ इंटरैक्शन पर निर्भर है, तो पैकेज विज़िबिलिटी Android 11 (एपीआई लेवल 30) और उसके बाद के वर्शन में हुए बदलावों का असर आपके ऐप्लिकेशन पर पड़ेगा.
इस गाइड में, व्यवहार में हुए बदलावों की जांच करने के तरीके के बारे में भी कुछ सुझाव दिए गए हैं. साथ ही, यह आपके ऐप्लिकेशन पर पड़ने वाले असर का पता लगाने के लिए, लॉग मैसेज को कॉन्फ़िगर करने में भी मदद करती है.
व्यवहार में हुए बदलावों की जांच करें
इस बदलाव का आपके ऐप्लिकेशन पर असर पड़ता है या नहीं, यह जांचने के लिए यह तरीका अपनाएं:
- Android Studio 3.6.1 या इसके बाद का वर्शन इंस्टॉल करें.
- Gradle का वह नया वर्शन इंस्टॉल करें जो Android Studio के साथ काम करता हो.
- अपने ऐप्लिकेशन के
targetSdkVersion
को30
या उसके बाद के वर्शन पर सेट करें. - अपने ऐप्लिकेशन की मेनिफ़ेस्ट फ़ाइल में,
<queries>
एलिमेंट को शामिल न करें. getInstalledApplications()
याgetInstalledPackages()
को कॉल करें. दोनों तरीके काम करने पर, फ़िल्टर की गई सूची दिखाते हैं.- देखें कि आपके ऐप्लिकेशन की कौनसी सुविधाएं काम नहीं कर रही हैं.
- इन सुविधाओं को ठीक करने के लिए, सही
<queries>
एंट्री डालें.
पैकेज फ़िल्टर करने के लिए लॉग मैसेज कॉन्फ़िगर करें
ऐप्लिकेशन के डिफ़ॉल्ट तौर पर दिखने से आपके ऐप्लिकेशन पर क्या असर पड़ता है, इस बारे में ज़्यादा जानने के लिए, पैकेज फ़िल्टर करने के लिए लॉग मैसेज चालू करें. अगर आपके पास इस गेम को या डीबग करने लायक ऐप्लिकेशन के टेस्ट के तौर पर डाउनलोड करते हैं, तो सिस्टम लॉग यह जानकारी देता है क्षमता के हिसाब से सही हैं. या फिर, आपके पास इसे मैन्युअल तरीके से चालू करने के लिए, इस निर्देश का पालन करें:
adb shell pm log-visibility --enable PACKAGE_NAME
इसके बाद, जब भी PackageManager
ऑब्जेक्ट के रिटर्न से पैकेज को फ़िल्टर किया जाता है
मानों के लिए, आपको Logcat में निम्न जैसा एक संदेश दिखाई देता है:
I/AppsFilter: interaction: PackageSetting{7654321 \ com.example.myapp/12345} -> PackageSetting{...} BLOCKED