为什么要添加 READ_PHONE_STATE 权限?
Why has the READ_PHONE_STATE permission been added?
在我刚刚发布到 Play 商店的最新 beta 版本中,我注意到 READ_PHONE_STATE
已添加到之前的版本中。
我自己没有添加这个。自从以前的版本使用 v9.6.0 的各种播放服务库(是 v9.4.0)以来,我记得所做的一切:
compile 'com.google.android.gms:play-services-location:9.6.0'
compile 'com.google.android.gms:play-services-places:9.6.0'
compile 'com.google.android.gms:play-services-auth:9.6.0'
这样就可以了吗?我看不到它的记录。我可以取消权限吗?
而且我已经确保我使用的所有库都与主应用程序匹配,根据 this answer...对我的情况没有影响。
编辑
好的,基于 this article,我深入研究了我的日志输出以找到:
ADDED from [Meteogram:jobdispatcher:unspecified] C:\Users\Me\AndroidStudioProjects\Meteogram\app\build\intermediates\exploded-aar\Meteogram\jobdispatcher\unspecified\AndroidManifest.xml:37:25-84 android:uses-permission#android.permission.READ_PHONE_STATE
但是自上一个版本以来,jobdispatcher 库(我将其作为 gradle 模块导入到我的项目中)没有任何变化。
EDIT2
这是该日志的更多信息,我的感觉是可能是由于怀疑是播放服务库版本所致?
ADDED from [Meteogram:jobdispatcher:unspecified] C:\Users\Me\AndroidStudioProjects\Meteogram\app\build\intermediates\exploded-aar\Meteogram\jobdispatcher\unspecified\AndroidManifest.xml:37:17-87
android:name
ADDED from [Meteogram:jobdispatcher:unspecified] C:\Users\Me\AndroidStudioProjects\Meteogram\app\build\intermediates\exploded-aar\Meteogram\jobdispatcher\unspecified\AndroidManifest.xml:37:25-84
android:uses-permission#android.permission.READ_PHONE_STATE
IMPLIED from C:\Users\Me\AndroidStudioProjects\Meteogram\app\src\pro\AndroidManifest.xml:2:1-12:12 reason: com.google.android.gmscore.integ.client.location has a targetSdkVersion < 4
activity#com.google.android.gms.common.api.GoogleApiActivity
targetSdkVersion < 4
与上面链接的其他答案匹配,但是在这种情况下我能做些什么吗,因为播放服务库不是我的?
EDIT3
我找到了答案...而不是删除这个问题,我会留下它和解决方案,以防它对其他人有用(并且以防其他人有更好的解决方案!)
EDIT4
看起来它已在 9.6.1
中修复。
我最终找到了this, which reports the same issue. One workaround is mentioned in Answer #3,就是把权限"manually"去掉(我的假设是只有很早的Android版本才需要权限,对我来说没问题因为我的 minSdk
是 16):
<manifest ...
xmlns:tools="http://schemas.android.com/tools"
... >
<uses-permission
android:name="android.permission.READ_PHONE_STATE"
tools:node="remove" />
更新 #2:Version 10.0.1 再次修复了该问题。
更新:这也发生在 Google Play 服务的 10.0.0 版本中,如 this post.
中所报告
上一个答案:
根据 this post in the Android Developers G+ Community,其中一位版主(我)发表了以下评论:
I already reported this issue internally yesterday when a developer pointed it out, the fix has already been made internally, and an updated SDK is coming soon
更新的 SDK 现已可用 - 使用 9.6.1 Google Play 服务依赖项。
此问题也存在于 Play Services v 12.0.0 中。有空位issue tracker on it here。这两个权限似乎都存在问题:
- android.permission.READ_PHONE_STATE
- android.permission.WRITE_EXTERNAL_STORAGE
它可能会在 12.0.1 中修复,正如我们在 10.0.1 修复中看到的那样(来自原始问题)。
在那之前,我建议按照 drmrbrewer 的回答中所述从清单中手动删除权限。
更新
12.0.1 已于 2018 年 3 月 28 日发布,解决了此问题。
See the release notes here.
Adds missing minSdkVersion in -license artifacts to prevent automatic inclusion of READ_PHONE_STATE and READ_EXTERNAL_STORAGE permissions.
如果您没有使用 Android 的经验(像我一样!)并且您不确定 drmrbrewer 的代码片段应该放在哪里,答案就在您的主 app/manifests/AndroidManifest.xml
文件中,如下所示:
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
package="com.your.package">
...
<!-- attempt to combat this issue: -->
<uses-permission
android:name="android.permission.READ_PHONE_STATE"
tools:node="remove" />
<uses-permission
android:name="android.permission.WRITE_EXTERNAL_STORAGE"
tools:node="remove" />
</manifest>
如果您正在寻找与 Firebase 12.0.0 版相关的问题,只需升级到 12.0.1 版即可。
是12.0.0的打包错误,12.0.1解决了。
查看发行说明:
https://developers.google.com/android/guides/releases
遇到同样的问题。刚刚检查 Google 发布新版本。更新到 12.0.1 或最新版本。这个问题就会消失。
在我刚刚发布到 Play 商店的最新 beta 版本中,我注意到 READ_PHONE_STATE
已添加到之前的版本中。
我自己没有添加这个。自从以前的版本使用 v9.6.0 的各种播放服务库(是 v9.4.0)以来,我记得所做的一切:
compile 'com.google.android.gms:play-services-location:9.6.0'
compile 'com.google.android.gms:play-services-places:9.6.0'
compile 'com.google.android.gms:play-services-auth:9.6.0'
这样就可以了吗?我看不到它的记录。我可以取消权限吗?
而且我已经确保我使用的所有库都与主应用程序匹配,根据 this answer...对我的情况没有影响。
编辑
好的,基于 this article,我深入研究了我的日志输出以找到:
ADDED from [Meteogram:jobdispatcher:unspecified] C:\Users\Me\AndroidStudioProjects\Meteogram\app\build\intermediates\exploded-aar\Meteogram\jobdispatcher\unspecified\AndroidManifest.xml:37:25-84 android:uses-permission#android.permission.READ_PHONE_STATE
但是自上一个版本以来,jobdispatcher 库(我将其作为 gradle 模块导入到我的项目中)没有任何变化。
EDIT2
这是该日志的更多信息,我的感觉是可能是由于怀疑是播放服务库版本所致?
ADDED from [Meteogram:jobdispatcher:unspecified] C:\Users\Me\AndroidStudioProjects\Meteogram\app\build\intermediates\exploded-aar\Meteogram\jobdispatcher\unspecified\AndroidManifest.xml:37:17-87
android:name
ADDED from [Meteogram:jobdispatcher:unspecified] C:\Users\Me\AndroidStudioProjects\Meteogram\app\build\intermediates\exploded-aar\Meteogram\jobdispatcher\unspecified\AndroidManifest.xml:37:25-84
android:uses-permission#android.permission.READ_PHONE_STATE
IMPLIED from C:\Users\Me\AndroidStudioProjects\Meteogram\app\src\pro\AndroidManifest.xml:2:1-12:12 reason: com.google.android.gmscore.integ.client.location has a targetSdkVersion < 4
activity#com.google.android.gms.common.api.GoogleApiActivity
targetSdkVersion < 4
与上面链接的其他答案匹配,但是在这种情况下我能做些什么吗,因为播放服务库不是我的?
EDIT3
我找到了答案...而不是删除这个问题,我会留下它和解决方案,以防它对其他人有用(并且以防其他人有更好的解决方案!)
EDIT4
看起来它已在 9.6.1
中修复。
我最终找到了this, which reports the same issue. One workaround is mentioned in Answer #3,就是把权限"manually"去掉(我的假设是只有很早的Android版本才需要权限,对我来说没问题因为我的 minSdk
是 16):
<manifest ...
xmlns:tools="http://schemas.android.com/tools"
... >
<uses-permission
android:name="android.permission.READ_PHONE_STATE"
tools:node="remove" />
更新 #2:Version 10.0.1 再次修复了该问题。
更新:这也发生在 Google Play 服务的 10.0.0 版本中,如 this post.
中所报告上一个答案:
根据 this post in the Android Developers G+ Community,其中一位版主(我)发表了以下评论:
I already reported this issue internally yesterday when a developer pointed it out, the fix has already been made internally, and an updated SDK is coming soon
更新的 SDK 现已可用 - 使用 9.6.1 Google Play 服务依赖项。
此问题也存在于 Play Services v 12.0.0 中。有空位issue tracker on it here。这两个权限似乎都存在问题:
- android.permission.READ_PHONE_STATE
- android.permission.WRITE_EXTERNAL_STORAGE
它可能会在 12.0.1 中修复,正如我们在 10.0.1 修复中看到的那样(来自原始问题)。
在那之前,我建议按照 drmrbrewer 的回答中所述从清单中手动删除权限。
更新
12.0.1 已于 2018 年 3 月 28 日发布,解决了此问题。
See the release notes here.
Adds missing minSdkVersion in -license artifacts to prevent automatic inclusion of READ_PHONE_STATE and READ_EXTERNAL_STORAGE permissions.
如果您没有使用 Android 的经验(像我一样!)并且您不确定 drmrbrewer 的代码片段应该放在哪里,答案就在您的主 app/manifests/AndroidManifest.xml
文件中,如下所示:
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
xmlns:tools="http://schemas.android.com/tools"
package="com.your.package">
...
<!-- attempt to combat this issue: -->
<uses-permission
android:name="android.permission.READ_PHONE_STATE"
tools:node="remove" />
<uses-permission
android:name="android.permission.WRITE_EXTERNAL_STORAGE"
tools:node="remove" />
</manifest>
如果您正在寻找与 Firebase 12.0.0 版相关的问题,只需升级到 12.0.1 版即可。 是12.0.0的打包错误,12.0.1解决了。
查看发行说明: https://developers.google.com/android/guides/releases
遇到同样的问题。刚刚检查 Google 发布新版本。更新到 12.0.1 或最新版本。这个问题就会消失。