播放安装引荐来源库,添加WRITE_EXTERNAL_STORAGE和READ_EXTERNAL_STORAGE权限

时间:2019-12-17 07:02:03

标签: android google-play

我们正在尝试更新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

7 个答案:

答案 0 :(得分:7)

安装引荐来源网址会添加此权限,因为targetSdkVersion的值低于添加限制的版本。 如果您在应用程序的build文件夹中查看生成的 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

答案 1 :(得分:5)

引用this answer(并完成):

版本1.1和1.1.1缺少“ minSdkVersion”。这将自动添加这些权限(因为默认的SDK <4如@thiagolr所述)。在此处看到类似的问题: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>

答案 2 :(得分:4)

编辑:解决方案:版本 1.1.2 (及更高版本)解决了此问题。

来自this answer

这是因为他们向

添加了依赖项
com.google.android.gms:play-services-measurement:17.2.1

其中添加了那些权限。

您可以在以下文件中找到它:manifest-merger-blame-debug-report.txt,位于“ yourApp / build / intermediates / manifest_merge_blame_file / debug”下

这是一个错误。另外,installreferrer 1.1.1不能解决问题。

解决方案: 更新为installreferrer 1.1.2或以上任何版本(当前版本为2.1`)

已过时:

最简单的解决方案是暂时将installreferrer降级到1.0

但是,如果您需要此版本,则可以添加:

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

禁用它。 但是请知道,如果您在库中使用任何需要使用它的API,它可能会导致崩溃,所以我不建议您这样做。

答案 3 :(得分:2)

我也遇到过这个问题。

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

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

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

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

我找不到与此有关的任何官方信息。
但是过去,其他Google库在添加其他不需要的权限时遇到了问题,之后不久便在修补程序版本中将其删除。
例如:
Why has the READ_PHONE_STATE permission been added?

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

答案 4 :(得分:2)

添加这些权限是因为com.android.installreferrer的targetSdkVersion <4。您可以在 Temp \ gradleOut上的 manifest-merger-release-report.txt 文件中看到它。项目中的\ build \ outputs \ logs 文件夹。这是一个错误,可能会在较新的版本中修复。

要解决此问题,您需要找出哪个插件将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

答案 5 :(得分:2)

1.1.2已发布,它正确添加了minSdkVersion。

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

答案 6 :(得分:0)

理论上可以 将它们与清单合并一并删除:

<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图书馆需要不必要的权限,这是一个例外。

release notesdocumentation没有提到权限。