为什么添加了READ_PHONE_STATE权限?

drm*_*wer 26 android android-permissions

在刚刚发布到Play商店的最新测试版中,我注意到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'
Run Code Online (Sandbox Code Playgroud)

这会做到吗?我看不出它的记录.我可以取消许可吗?

而且我已经确保我使用的所有库都与主应用程序相匹配,根据这个答案 ...在我的情况下没有任何区别.

编辑

基于这篇文章,我已经深入研究了我的日志输出,以找到:

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

但是自上一版本以来,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
Run Code Online (Sandbox Code Playgroud)

targetSdkVersion < 4与对方的回答匹配上面链接,但有什么我可以在这种情况下做的,因为播放服务库是不是我的?

EDIT3

我找到了答案......而不是删除这个问题,我会留下它,用解决方案,以防它对其他人有用(以防万一其他人有更好的解决方案!)

EDIT4

看起来它已被修复9.6.1.

drm*_*wer 29

我最终发现了这个,报告了同样的问题.答案#3中提到了一种解决方法,即"手动"删除权限(我的假设是只有非常早期的Android版本才需要权限,这对我来说是好的,因为我minSdk16岁):

<manifest ...
    xmlns:tools="http://schemas.android.com/tools"
    ... >

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

  • 早期的Android版本甚至不需要权限.相反,这里发生的事情是,早期Android版本的权限甚至没有_exist_,现在需要权限的功能根本不需要许可.如果android studio认为您的旧代码不知道该权限,则会添加该权限. (3认同)

Mik*_*sen 22

Play Services v 12.0.0中也存在此问题.这里有一个开放的问题跟踪器.似乎两个权限都存在问题:

  • android.permission.READ_PHONE_STATE
  • android.permission.WRITE_EXTERNAL_STORAGE

它可能会修复为12.0.1,正如我们在10.0.1修复中看到的那样(来自原始问题).

在此之前,我建议手动从清单中删除权限,如drmrbrewer的答案中所述.

更新
12.0.1已于2018年3月28日发布,此问题已得到解决. 请参阅此处的发行说明.

在-license工件中添加缺少的minSdkVersion,以防止自动包含READ_PHONE_STATE和READ_EXTERNAL_STORAGE权限.

  • 很好的解决方案,但如果你手动使用Crashlytics + Firebase v12.0.0 +删除权限的组合,它会崩溃.保持v11.8.0似乎是安全的.我认为问题来自模块'com.google.android.gms:play-services-maps:12.0.0' (2认同)
  • 我可以确认12.0.1版本解决了这个问题. (2认同)

ian*_*ake 20

更新#2:版本10.0.1再次修复了该问题.

更新:这也发生在Google Play服务的10.0.0版中,如本文所述.

上一个答案:

根据Android开发者G +社区中的这篇文章,其中一位版主(我)发布了此评论:

我已经在昨天内部报告了这个问题,当时开发人员指出了这个问题,修复工具已在内部完成,并且很快就会有更新的SDK

现在可以使用更新的SDK - 使用9.6.1 Google Play服务依赖项.

  • @ianhanniballake在版本12.0.0中又发生了这种情况吗?看起来com.google.android.gms.license的targetSdkVersion <4 (3认同)
  • @darnmason - 12.0.1现在有了修复 (3认同)

Hen*_*nte 6

对于那些正在寻找与Firebase 12.0.0版相关的问题的用户,只需升级到12.0.1版即可.在12.0.0的包装中出现了错误,并在12.0.1中得到了解决.

查看发行说明:https: //developers.google.com/android/guides/releases