【问题标题】:How to determine deprecated permissions?如何确定已弃用的权限?
【发布时间】:2012-07-03 01:33:55
【问题描述】:

我正在开发一个拥有庞大源代码库的 Android 应用程序。 我不喜欢我的应用程序需要不少权限,我开始怀疑有一些已被弃用且不再需要。

问题是 - 如何确定是否如此,哪些真的被弃用了?

我试图删除一个可疑的权限并重新编译它(使用 Eclipse Juno), 并希望编译后将其标记为错误或警告,但没有。

还尝试在代码上显式运行 Lint,但也没有检测到。

应用程序在设备上编译并运行,我猜当在某些代码流中调用相关 API 时,会抛出 AccessDenied 运行时异常。

是否有任何有效的方法来检测该 API,而无需浏览所有源代码或在多个场景中运行应用程序?

谢谢!

【问题讨论】:

    标签: java android permissions manifest deprecated


    【解决方案1】:

    很遗憾,简短的回答是否定的。没有自动检测方法。唯一尝试过且真正的方法是逐个删除权限并进行测试,或者逐步检查您的代码。

    不过应该​​有。我怀疑编写一个读取项目代码并确定所需权限的脚本并不难。最困难的部分是通过 API 更改使其保持最新。

    【讨论】:

      【解决方案2】:

      使用 -Djava.security.debug=access,failure 运行您的代码。这将显示所有实际使用的权限。

      【讨论】:

      • 听起来很有趣。但实际上我如何在我的设备上做到这一点?把那面旗帜送给谁?安装apk时?
      【解决方案3】:

      我认为你的方向是错误的。

      不要询问您可以删除哪些权限,而是查看列表并生成一个经过研究的理由,说明为什么需要每个权限,以及如果权限被删除,哪些功能必须被禁用。

      如果您了解权限的作用,那么生成搜索查询以找到至少在 Java 代码中使用该权限的可能性更大的地方就不难了。但是许多清单(甚至是偶尔的 SO 答案)都具有不需要的权限;平台甚至不会授予非系统应用程序的权限请求并不少见。

      【讨论】:

        【解决方案4】:

        我不知道它的效果如何,但加州大学伯克利分校的一些研究人员似乎正在开展一个项目,以扫描 Android 应用程序并显示他们使用的权限。更多信息http://www.android-permissions.org/

        【讨论】:

          猜你喜欢
          • 2015-03-14
          • 1970-01-01
          • 1970-01-01
          • 2020-04-16
          • 1970-01-01
          • 2020-08-02
          • 2011-03-27
          • 1970-01-01
          相关资源
          最近更新 更多