[android] WRITE_EXTERNAL_STORAGE 및 READ_EXTERNAL_STORAGE 권한 추가 설치 참조 라이브러리 재생

Google Play 설치 리퍼러 라이브러리를 업데이트하려고합니다.

내부적으로 외부 읽기 쓰기 권한을 추가하고 있습니다.

<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 버전에 READ_PHONE_STATE 권한이 추가되었습니다.

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

installreferrer : 1.1의 .aar 파일을 디 컴파일하고 manifest 및 pom 파일을 확인했습니다. 해당 파일에 이러한 권한이 추가되어야 함을 나타내는 것은 없습니다.
라이브러리 매니페스트 파일은이 권한 만 추가합니다 (이전 버전에는 항상 있음).

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

이에 관한 공식 정보를 찾지 못했습니다.
그러나 다른 Google 라이브러리는 과거에 불필요한 권한을 추가하는 데 문제가 있었으며, 그 후에 바로 핫픽스 버전에서 제거되었습니다.
예를 들면 다음과 같습니다.
왜 READ_PHONE_STATE 권한이 추가 되었습니까?

그래서 나는 여기에서도 같은 일이 일어나기를 바랍니다.


답변

설치 참조 targetSdkVersion자는 제한이 추가 된 버전보다 낮은 값 이므로이 권한 을 추가합니다. 앱의 빌드 폴더 에서 생성 된 manifest-merger-report 를 보면 다음 정보를 볼 수 있습니다.

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


답변

에서 이 대답 :

그들이 의존성을 추가했기 때문입니다

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

어떤 권한을 추가합니다.

“yourApp / build / intermediates / manifest_merge_blame_file / debug”아래에있는 manifest-merger-blame-debug-report.txt 파일에서 찾을 수 있습니다.

아마도 버그 일 것입니다. 또한 installreferrer 1.1.1해결하지 않습니다.

가장 쉬운 해결책 은 지금 당장 다운 그레이드 installreferrer하는 것 1.0입니다.

그러나이 버전이 필요한 경우 다음을 추가 할 수 있습니다.

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

비활성화합니다. 그러나 라이브러리 내에서 API가 필요한 API를 사용 하면 충돌이 발생할 수 있으므로 권장하지 않습니다.


답변

이 답변 에서 인용 하고 완성하기 :

버전 1.1 및 1.1.1에 “minSdkVersion”이 없습니다. 이것은 @thiagolr가 말한 것처럼 기본 SDK <4이기 때문에 이러한 권한을 자동으로 추가합니다. Google Play Services 12.0.1 에서 비슷한 문제를 확인하십시오 .

해결책

버전 1.1.2는이 문제를 해결합니다.

세부

v1.0 용 Manifest.xml ( 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 용 Manifest.xml ( 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>


답변

하나는 수 이론적으로 매니페스트 합병으로 모두 제거 :

<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 라이브러리에 불필요한 권한이 필요한 것은 예외입니다.

릴리스 노트문서는 권한을 언급하지 않습니다.


답변

이 권한은 com.android.installreferrertargetSdkVersion <4 이므로 추가 됩니다. 프로젝트 내의 Temp \ gradleOut \ build \ outputs \ logs 폴더 에있는 manifest-merger-release-report.txt 파일 에서 볼 수 있습니다 . 이것은 버그이며 아마도 최신 버전에서 수정 될 것입니다.

이 문제를 해결하려면 com.android.installreferrer종속성 으로 추가 할 플러그인을 찾아야합니다 .


내 프로젝트에서 범인은 Facebook 플러그인이었습니다. 종속성 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.2가 릴리스되면 minSdkVersion이 올바르게 추가됩니다.

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