我们正在尝试更新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
答案 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 notes和documentation没有提到权限。