WRITE_EXTERNAL_STORAGE और READ_EXTERNAL_STORAGE अनुमतियों को जोड़कर रेफ़रर लाइब्रेरी स्थापित करें


19

हम Google Play Install Referrer Library को अपडेट करने का प्रयास कर रहे हैं

आंतरिक रूप से यह कुछ बाहरी रीड राइट की अनुमति को जोड़ रहा है ।

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />

क्या हमें वास्तव में अनुमति के साथ रहने की आवश्यकता है?

निर्भरता implementation 'com.android.installreferrer:installreferrer:1.1

स्रोत https://developer.android.com/google/play/installreferrer/library.html


1
इसे 1.1.2 में जारी किया जाना चाहिए: जारीकर्ता पटाखा.सहयोग
इयान जी क्लिफ्टन

जवाबों:


4

मैं इस मुद्दे पर भी आया हूं।

लेकिन मेरे मामले में, 1.1 संस्करण भी READ_PHONE_STATE अनुमति जोड़ रहा है

<uses-permission android:name="android.permission.READ_PHONE_STATE"/>

मैंने installreferrer के लिए .AR फ़ाइल को विघटित कर दिया है: 1.1 और मैनिफ़ेस्ट और पोम फ़ाइल की जाँच की, उन फ़ाइलों में कुछ भी नहीं है जिससे यह संकेत मिलता है कि इन अनुमतियों को जोड़ा जाना चाहिए।
लाइब्रेरी मेनिफ़ेस्ट फ़ाइल केवल इस अनुमति को जोड़ती है (जो हमेशा पिछले संस्करणों में होती है):

<uses-permission android:name="com.google.android.finsky.permission.BIND_GET_INSTALL_REFERRER_SERVICE"/>

मैं इस संबंध में कोई आधिकारिक जानकारी नहीं पा सका हूं।
लेकिन अन्य Google पुस्तकालयों में अतिरिक्त, अनावश्यक, अनुमतियाँ जोड़ने के साथ अतीत में समस्याएँ रही हैं, जिन्हें कुछ ही समय बाद एक हॉटफ़िक्स संस्करण में हटा दिया गया है।
उदाहरण के लिए, यह:
READ_PHONE_STATE अनुमति क्यों जोड़ी गई है?

इसलिए मुझे आशा है कि यहाँ भी ऐसा ही होगा।


1
इंस्टॉल रेफर इस अनुमति को इस तथ्य के कारण जोड़ता है कि लक्ष्य-एसडीके-संस्करण की तुलना में कम है क्योंकि यह अनुमति प्राप्त करता है। यदि आप मैनिफ़ेस्ट-मर्जर-रिपोर्ट पर नज़र डालें तो आप इसे देख सकते हैं: uses-permission#android.permission.READ_PHONE_STATE IMPLIED from android/app/src/main/AndroidManifest.xml:1:1-130:12 reason: com.android.installreferrer has a targetSdkVersion < 4 इस दस्तावेज़ में निहित अनुमति की जानकारी मिल सकती है: developer.android.com/studio/build/…
दिनेश

6

इंस्टॉल रेफर इस अनुमति को इस तथ्य के कारण जोड़ता है कि यह उस targetSdkVersionसंस्करण की तुलना में कम मूल्य है जिसमें प्रतिबंध जोड़ा गया था। यदि आप अपने एप्लिकेशन के बिल्ड फ़ोल्डर में उत्पन्न मैनिफ़ेस्ट-विलय-रिपोर्ट पर एक नज़र डालते हैं , तो आप यह जानकारी देख सकते हैं:

uses-permission#android.permission.READ_PHONE_STATE
IMPLIED from android/app/src/main/AndroidManifest.xml:1:1-130:12 reason: com.android.installreferrer has a targetSdkVersion < 4

Android पर यह अंतर्निहित सिस्टम अनुमति कैसे काम करती है, इसकी जानकारी इस दस्तावेज़ में पाई जा सकती है: https://developer.android.com/studio/build/manifest-merge#inspect_the_merged_manifest_and_find_conflicts


4

से इस उत्तर :

ऐसा इसलिए है क्योंकि उन्होंने एक निर्भरता को जोड़ा है

com.google.android.gms:play-services-measurement:17.2.1

जो उन अनुमतियों को जोड़ता है।

आप इसे फ़ाइल पर पा सकते हैं: मैनिफ़ेस्ट-मर्जर-ब्लेम-डीबग-रिपोर्ट.टेक्स्ट जो "yourApp / build / मध्यवर्ती / मैनिफ़ेस्ट_merge_blame_file / डिबग" के अंतर्गत है

यह शायद एक बग है। इसके अलावा, installreferrer 1.1.1यह हल नहीं करता है।

सबसे आसान समाधान अब के लिए installreferrerवापस डाउनग्रेड करना 1.0है।

लेकिन अगर आपको इस संस्करण की आवश्यकता है, तो आप जोड़ सकते हैं:

<uses-permission android:name="<permission_name>" tools:node="remove" />

इसे निष्क्रिय करने के लिए। लेकिन यह जान लें कि यदि आप किसी ऐसे एपीआई का उपयोग करेंगे, जिसकी लाइब्रेरी के अंदर जरूरत है, तो यह दुर्घटना का कारण बन सकता है , इसलिए मैं ऐसा करने की सलाह नहीं दूंगा।


2

इस उत्तर से उद्धरण (और पूरा):

संस्करण 1.1 और 1.1.1 "minSdkVersion" गायब हैं। यह स्वचालित रूप से उन अनुमतियों को जोड़ देगा (क्योंकि @ sagagolr द्वारा कहा गया डिफ़ॉल्ट SDK <4)। इसी तरह यहां मुद्दा देखें: Google Play सेवाएं 12.0.1

समाधान

संस्करण 1.1.2 इस मुद्दे को हल करता है।

विवरण

V1.0 के लिए मेनिफेस्ट.एक्सएमएल ( https://mvnrepository.com/artifact/com.android.installreferrer/installreferrer/1.0 से )

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.android.installreferrer" >

    <uses-sdk
        android:minSdkVersion="8"
        android:targetSdkVersion="22" />

    <uses-permission android:name="com.google.android.finsky.permission.BIND_GET_INSTALL_REFERRER_SERVICE" />

    <application />

</manifest>

V1.1 के लिए मेनिफेस्ट.एक्सएमएल ( https://mvnrepository.com/artifact/com.android.installreferrer/installreferrer/1.1 से )

<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android" package="com.android.installreferrer">

    <uses-permission android:name="com.google.android.finsky.permission.BIND_GET_INSTALL_REFERRER_SERVICE" />

    <application />

</manifest>

1

कोई उन्हें सैद्धांतिक रूप से प्रकट-विलय के साथ पूरी तरह से हटा सकता है :

<manifest
    xmlns:tools="http://schemas.android.com/tools">

    <uses-permission android:name="android.permission.READ_PHONE_STATE" tools:node="remove" />
    <uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" tools:node="remove" />
    <uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" tools:node="remove" />

</manifest>

लेकिन अगर पुस्तकालय फिर भी उम्मीद के मुताबिक काम करेगा तो एक और कहानी है -

यह एक अपवाद नहीं है, कि Google लाइब्रेरी को अनावश्यक अनुमतियों की आवश्यकता है।

रिलीज नोट्स और प्रलेखन अनुमतियों का उल्लेख नहीं है।


1

इन अनुमतियों को जोड़ा गया है क्योंकि com.android.installreferrerएक targetSdkVersion <4. है आप इसे अपनी परियोजना के अंदर Temp \ gradleOut \ build \ outputs \ लॉग फ़ोल्डर पर स्थित मैनिफ़ेस्ट-मर्जर-रिलीज़-रिपोर्ट.टैक्स फ़ाइल पर देख सकते हैं । यह एक बग है और यह संभवतः एक नए संस्करण पर तय किया जाएगा।

इसे ठीक करने के लिए, आपको यह पता लगाना होगा कि कौन सा प्लगइन com.android.installreferrerनिर्भरता के रूप में जोड़ रहा है।


मेरी परियोजना में, अपराधी फेसबुक प्लगइन था। यह उस com.facebook.android:facebook-core:5.15.xपैकेज का उपयोग करता है जो com.android.installreferrer:installreferrer:1.1निर्भरता जोड़ने के लिए जिम्मेदार है ।

समाधान के लिए रोलबैक था com.facebook.android:facebook-core:5.13.0, जिसमें com.android.installreferrerनिर्भरता नहीं है ।

फ़ाइल संपादित करें FacebookSDK/Plugins/Editor/Dependencies.xmlऔर इन पैकेजों को इसमें बदलें:

<androidPackage spec="com.facebook.android:facebook-core:[5,5.13.0)" />
<androidPackage spec="com.facebook.android:facebook-applinks:[5,5.13.0)" />
<androidPackage spec="com.facebook.android:facebook-login:[5,5.13.0)" />
<androidPackage spec="com.facebook.android:facebook-share:[5,5.13.0)" />

अगला, निर्भरता को फिर से हल करने के लिए मत भूलना: Assets > Play Services Resolver > Android Resolver > Force Resolve


1

1.1.2 जारी किया गया है, यह सही ढंग से minSdkVersion जोड़ता है।

<uses-sdk
    android:minSdkVersion="8"
    android:targetSdkVersion="22" />
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.