清理未使用的Android权限

时间:2013-08-21 15:59:54

标签: android permissions findbugs lint

如果我想研究在Android应用中如何以及在哪里使用[Mainfest.xml中的请求]权限以便删除它们,那么有一种简单的方法吗? lint或findbugs是否为跟踪项目中使用/滥用的权限提供某种支持?

7 个答案:

答案 0 :(得分:9)

我是从未来来拯救你的生命。

在这里(将来),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。

答案 1 :(得分:0)

我为没有编写代码的应用程序执行此操作的方法是逐个删除权限并每次端到端测试应用程序。当它失败时,缩小范围。如果没有,则可能不会使用该权限。

答案 2 :(得分:0)

你必须逐个尝试删除它们并检查我的应用程序仍然可以正常工作。 lint不会以任何方式检查它(它应该是)。

当他们回来时(他们目前已经关闭),你可以将你的apk上传到这个网站(如果你没问题)并让他们静态分析你正在使用的权限:http://www.android-permissions.org/ < / p>

答案 3 :(得分:0)

最好的方法是了解实际可能做的事情。如果它将要使用相机,那么您知道您需要相机许可。

答案 4 :(得分:0)

在您的应用清单文件中,您应该有一个标签&#34; Merged Manifest&#34; ,您可以在那里看到您的最终清单以及您请求的权限,您可以点击权限查看它来自。 (谁添加了它 - ex&#39;:sdk或它来自哪个代码)

还有一种通过添加到清单来删除权限的简单方法:

<uses-permission android:name="android.permission.ACCESS_FINE_LOCATION" 
tools:node="remove" />

还要记得在顶部添加工具:

<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    xmlns:tools="http://schemas.android.com/tools"
    package="...">

答案 5 :(得分:-1)

答案 6 :(得分:-1)

或者您可以了解您的应用的功能,然后浏览权限并查看哪些是额外的。你的应用程序做了什么,它使用了哪些手机功能。应该有一些关于它应该做什么以及那里有什么方法的文件