Play 安装引用库添加 WRITE_EXTERNAL_STORAGE 和 READ_EXTERNAL_STORAGE 权限

wad*_*ali 22 android google-play

我们正在尝试更新 Google Play Install Referrer Library 和

在内部,它正在添加一些外部读写权限。

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

<uses-permission android:name="android.permission.READ_EXTERNAL_STORAGE" />
Run Code Online (Sandbox Code Playgroud)

我们真的需要坚持使用权限吗?

依赖 implementation 'com.android.installreferrer:installreferrer:1.1

来源https://developer.android.com/google/play/installreferrer/library.html

Din*_*esh 8

安装引用添加此权限是因为该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
Run Code Online (Sandbox Code Playgroud)

可以在本文档中找到有关此隐式系统权限如何在 Android 上工作的信息:https : //developer.android.com/studio/build/manifest-merge#inspect_the_merged_manifest_and_find_conflicts


sag*_*gis 5

引用此答案(并完成):

版本 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>
Run Code Online (Sandbox Code Playgroud)

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>
Run Code Online (Sandbox Code Playgroud)


Moo*_*oom 4

我也遇到过这个问题。

但就我而言,1.1 版本还添加了 READ_PHONE_STATE 权限

<uses-permission android:name="android.permission.READ_PHONE_STATE"/>
Run Code Online (Sandbox Code Playgroud)

我已经反编译了 installreferrer:1.1 的 .aar 文件并检查了清单和 pom 文件,这些文件中没有任何内容表明应添加这些权限。
库清单文件仅添加此权限(在以前的版本中始终具有):

<uses-permission android:name="com.google.android.finsky.permission.BIND_GET_INSTALL_REFERRER_SERVICE"/>
Run Code Online (Sandbox Code Playgroud)

我还没有找到任何与此相关的官方信息。
但其他谷歌库过去在添加额外的、不需要的权限时遇到过问题,这些权限很快就在修补程序版本中被删除。
例如:
为什么要添加 READ_PHONE_STATE 权限?

所以我希望同样的事情也会发生在这里。

  • Install Referrer 添加此权限是因为 target-sdk-version 低于它隐式获取的权限。如果您查看manifest-merger-report,您可以看到以下内容:`uses-permission#android.permission.READ_PHONE_STATE IMPLIED from android/app/src/main/AndroidManifest.xml:1:1-130:12 原因: com.android.installreferrer 的 targetSdkVersion &lt; 4` 有关隐式权限的信息可以在本文档中找到:https://developer.android.com/studio/build/manifest-merge#inspect_the_merged_manifest_and_find_conflicts (2认同)