अगर आपका ऐप्लिकेशन, इस्तेमाल के उदाहरणों को पूरा करने के लिए, दूसरे ऐप्लिकेशन के इंटरैक्शन पर निर्भर करता है, तो यह जांचना ज़रूरी है कि 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