弄清楚谁将READ_PHONE_STATE添加到我的清单文件中?

时间:2015-02-10 18:07:24

标签: android

我正在编译一个没有显式请求READ_PHONE_STATE权限的项目,但是当我编译时,我在编译的Android Manifest文件中看到了权限。我假设有一些被引入的库正在明确地添加它或忘记设置它的最小SDK版本(这将添加它)。

我唯一要做的就是在最终的清单中,我要求自己的权限如下:

<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" />
<uses-permission android:name="android.permission.ACCESS_COARSE_LOCATION" />
<uses-permission android:name="android.permission.READ_CONTACTS" />
<uses-permission android:name="com.android.vending.BILLING" />
<uses-permission android:name="android.permission.RECEIVE_BOOT_COMPLETED" />
<uses-permission android:name="android.permission.WAKE_LOCK" />

READ_PHONE_STATE看起来像这样:

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

android前缀是否意味着什么?

有没有办法缩小哪个库添加此权限?

2 个答案:

答案 0 :(得分:2)

我会看:

Android Library Manifest vs. App Manifest

这不是真的重复,所以我不会标记,但我认为他在回答这个问题时能够很好地涵盖这个主题。

在那之后,假设你无法弄明白,我会做以下事情:

找到您的gradle缓存

破解你每个依赖项的工件(重命名为.zip和extract是最简单的方法)

检查他们是否包含清单,并查看

中的内容

答案 1 :(得分:2)

您可以准确地查看(或因为)库是否为清单添加了一些额外的权限。在构建过程中检查生成的文件(见下文),并在文件中查找不需要的权限!

转到项目文件夹并查找此路径:

  

[ProjectFolder] /建造/输出/日志/清单合并--- REPORT.TXT

打开文件并搜索权限 在我的情况下,我在

找到了这些行
 uses-permission#android.permission.READ_PHONE_STATE IMPLIED from
 C:\..\...\AppFolder\src\..\AndroidManifest.xml:2:1-14:12 reason:
 com.some.evil.library has a targetSdkVersion < 4

此生成的文件显示Android开发者网站中here所描述的合并过程的输出。