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