Android权限清理

时间:2015-10-15 06:59:15

标签: android apk android-permissions

我知道这个问题已经回答了HERE,但是不久之前,由于没有给出好的答案而且可能已经改变了,我会再次提出问题:

是否有某些工具或IDE plugin分析源代码或APK以查看是否在应用中的任何位置使用了权限。有很多库,以及相当大的项目,所以删除一些权限并在应用程序上运行smoke test是不明智的,因为它可以在一些微妙的地方使用。

例如,我不知道为什么我们有权限READ_SMS,但是如果我们删除它,因为没有明显的用途,它可能会导致崩溃。

1 个答案:

答案 0 :(得分:1)

LINT会检查您是否在LINT checks上看到了丢失的权限。

  • 因此,转到您的AndroidManifest.xml并使用Android权限删除所有代码<uses-permission> (意味着,请勿删除属于您应用的权限,例如{{ 1}}和UA_DATA)。
  • 然后运行LINT分析。点击C2D_MESSAGE,然后点击Analyze
  • 查看Inspect Code...
  • 您应该会看到所有缺少的权限。
  • 然后您可以右键单击它们并选择Android -> Constant and Resource Type Mismatches。如果选择此选项,Android Studio将为每个错误包含一个权限。因此,您最终会在Manifest文件中获得相同权限的多个副本,只需删除重复项即可。你也可以手动完成。

以下是LINT规则的说明:

  

ID ResourceType

     

描述

     

此检查查看已使用各种支持注释(例如RequiresPermission或UiThread)注释的Android API调用,并标记未按注释指定的任何未正确使用API​​的调用。此检查标记的错误示例:

     
      
  • 将错误类型的资源整数(例如R.string)传递给期望不同类型的API(例如R.dimen)。
  •   
  • 忘记在需要它的方法中调用重写方法(通过super)
  •   
  • 调用需要权限的方法,而无需在清单中声明该权限
  •   
  • 将资源颜色引用传递给需要RGB整数值的方法。
  •   
     

......还有更多。有关详细信息,请参阅http://developer.android.com/tools/debugging/annotations.html

上的文档

我正在使用Android Studio 2.1.2。