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
安装引用添加此权限是因为该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
引用此答案(并完成):
版本 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)
我也遇到过这个问题。
但就我而言,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 权限?
所以我希望同样的事情也会发生在这里。