Android Studio 1.5.1中的Lint无法检测缺失的权限。

5

目前,我正在将我的应用程序迁移到目标API 23。

我花了一段时间才弄清楚为什么accountManager.getAccountsByType("com.google")不再起作用。这是由于新的棉花糖权限模型 - http://developer.android.com/intl/es/training/permissions/requesting.html

我使用的是Android Studio 1.5.1

根据http://tools.android.com/tips/lint-checks,基于MissingPermission,我期望lint能够警告我下面的代码:

public static String getEmail() {
    Pattern emailPattern = Patterns.EMAIL_ADDRESS; // API level 8+
    AccountManager accountManager = AccountManager.get(MyApplication.instance());
    Account[] accounts = accountManager.getAccountsByType("com.google");

    for (Account account : accounts) {
        if (emailPattern.matcher(account.name).matches()) {
            String possibleEmail = account.name;
            return possibleEmail;
        }
    }
}

我检查了我的系统中安装的lint。 我可以确认通过MissingPermission功能存在。

c:\adt-bundle-windows-x86_64-20140624\sdk\tools\lint.bat --show

但是,在Android Studio中我没有收到任何警告。我已经检查了Android Studio中的lint设置。

enter image description here

看起来我在那里没有看到“缺少权限”的选项。

我的Android Studio设置有什么问题吗?

我可以看到EverNote团队曾经针对缺少权限的lint检查提交了一个错误报告 - https://code.google.com/p/android/issues/detail?id=182165 但是自从Android Studio 1.4以后就已经修复了。


不错,我也是这样认为的。我开始怀疑有人悄悄地评论了它,我很确定这个工作,显示一个“阻塞”lint错误。也许http://stackoverflow.com/questions/33611120/android-studio-not-showing-dangerous-permissions-warnings有关,但是与AS1.4.1有关。 - Shine
尝试从项目根目录运行“gradlew lint check MissingPermission”...我收到了一个“在根项目中找不到任务'MissingPermission'”的错误消息。所以在我看来,使用com.android.tools.build:gradle:1.5.0(2015年11月)的Android Studio中没有这个lint检查。 - Shine
它甚至都在2.1.2版本中无法运行。你有任何想法吗? - Heisenberg
1个回答

0

我正在使用Android Studio 2.0 Beta 2

我在不同的类别中确实有一些缺失的权限设置,你有检查其他类别吗?

Lint permissions

编辑:MissingPermission似乎不是其中任何一个。


不太可能… 文档描述为:MissingPermission

摘要:缺失权限优先级:9 / 10 严重程度:错误 类别:正确性此检查会扫描您的代码和库,并查看正在使用的API,然后将其与访问这些API所需的权限集进行比较。如果在运行时调用使用了这些API的代码,则程序将崩溃。
- Shine
你是对的,逐个检查我的截图的权限,没有一个涵盖或暗示它适用于“MissingPermission”,这意味着问题仍然存在于Android Studio 2.0 Beta 2中?!我们如何检查Lint版本? - madlymad
似乎AS的lint已经“悄悄地”移除了这个检查。 - Shine
使用“lint --version”检查版本。但我怀疑问题出在lint的配置文件中,而不是版本,因为我们无法在官方文档http://tools.android.com/tips/lint-checks中找到规则。 - Shine
lint: version 24.4.1 我猜这是另一个版本号,因为它甚至不接近 1.4。我还确认了 lint --show 列出了 MissingPermission,你尝试通过 cmd 运行 lint 报告了吗? - madlymad

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接