如何检查Android Permission是否实际使用?

时间:2014-07-21 05:54:36

标签: android android-permissions


我正在维护一个现有的(非常庞大的,非常敏感的)Android应用程序。
前几天,我收到了客户的电子邮件,该应用程序可能正在声明未被主动使用的权限。

例如,他们希望我删除" WRITE_EXTERNAL_STORAGE"许可。
我已将其删除并编译并运行App。完全没有错误。
但是,正因为如此,我不认为我可以认为根本没有使用许可。

我的问题是"无论如何我是否可以轻松地检查许可是否正在被使用?"

坦率地说,我不想完成该应用程序的每个细节方面,只是为了要求许可是否合格。
我没有时间。

我的目标是检查是否正在使用该权限。如果没有,请删除该权限 希望有一种耗时较少的方式。

此致

4 个答案:

答案 0 :(得分:23)

在Android Studio 1.3& Android支持库v7:22.2.0,你有解决方案。

<强>步骤:

  1. 将Android Studio更新为V1.3
  2. 将您的Android支持库更新为v7:22.2.0
  3. 运行Android Lint(分析 - &gt;检查代码),在Lint Error中查看Type&#34; Android - &gt;常数和资源类型MisMatch&#34;,显示所有需要许可的方法。
  4. <强>解释

    1. Android推出了新的注释@requirespermission。
    2. 所有需要许可的SDK方法都使用@requirespermission注释。
    3. 当我们调用任何需要权限的sdk方法而没有正确检查我们是否有权限时,Android工作室将通过lint错误。

答案 1 :(得分:13)

伯克利有一个小组写了关于Android权限的paper。他们谈论过度权限并开发了一个名为Stowaway的工具,可以分析您的APK以获取未使用的权限。该分析基于应用程序的API调用以及它们自己的每个API调用所需权限的映射(有关详细信息,请参阅文章)。如果清单中的权限未映射到APK中找到的任何API调用,则该工具会抛出一个标志。

有一段时间,这个工具的基于网络的版本可以在http://www.android-permissions.org/获得,但它来自Gingerbread时代并且从未更新过。该页面现在建议使用PScout

PScout在生成权限映射方面比Stowaway做得更好。但是,PScout不包含APK分析器,因此您必须手动将它们提供的映射与应用程序的API调用进行比较。不幸的是,如果您对5.1.1之外的版本的地图感兴趣,那么您必须使用提供的PScout代码和您自己的Framework源自己生成它们。

您还可以查看各种APK分析器here,看看它们是否包含您要查找的功能。

答案 2 :(得分:2)

我尝试过Vasanth建议的方法,但它并不适合我。事实上,因为我的项目有风味,而Code Inspection对于带有风味的项目并不起作用。请参阅https://code.google.com/p/android/issues/detail?id=210073

但是从控制台运行Lint工作。所以步骤很简单:

  1. 从清单中删除权限。
  2. 按照此处所述运行Lint for flavor https://stackoverflow.com/a/32708435/1170154
  3. 打开Lint结果并找到部分正确性&gt;错误MissingPermission:缺少权限。它将包含所有需要权限的调用。

答案 3 :(得分:0)

从Android Studio 3.3开始,运行Analyze → Inspect Code会通知您缺少Android → Lint → Correctness → Missing Permissions下的权限