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

Aun*_*yae 45 android android-permissions


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

例如,他们希望我删除"WRITE_EXTERNAL_STORAGE"权限.
我已将其删除并编译并运行App.完全没有错误.
但是,正因为如此,我认为我不能认为许可不会被主动使用.

我的问题是"无论如何,如果它被积极使用,我可以轻松地检查许可吗?"

坦率地说,我不想仔细阅读该应用程序的每个细节方面,只是要求许可是否需要.
我没有时间.

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

问候

Vas*_*nth 23

在Android Studio 1.3和Android支持库v7:22.2.0中,您可以获得解决方案.

脚步:

  1. 将Android Studio更新为V1.3
  2. 将您的Android支持库更新到v7:22.2.0
  3. 运行Android Lint(分析 - >检查代码),在Lint Error中查看类型"Android - >常量和资源类型MisMatch",其中显示了所有需要权限的方法.

说明

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

  • 我正在使用Android Stugio 1.3.2和Android支持库v7:22.2.0,我没有看到需要权限的方法:(.我在"Android - >常量和资源类型MisMatch"下看到其他内容 (6认同)
  • 此方法不适用于所有权限。例如,它忽略INTERNET和ACCESS_NETWORK_STATE。 (2认同)

Pau*_*zzi 13

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

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

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

您也可以在这里查看各种APK分析器,看看它们是否包含您正在寻找的功能.