问题标签 [android-lint]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
1 回答
449 浏览

java - Lint 未检测到项目错误,尽管它们已被标记。

我最近正在浏览developers.android.com 上的CustomView 教程,当我将代码修改为我自己的项目时,我注意到虽然错误在类编辑器中逐行标记,但它们完全没有问题未被 lint 检测到。

到目前为止,我已经尝试过这篇文章和一篇文章,建议我只需“将透视图另存为...”并重新启动 Eclipse。

在此处输入图像描述

我想这是一个易于修复的问题,可能是我自己在不知不觉中造成的……因为其他项目中的错误在 Lint 中显示得很好。

也许我需要找到这个问题中描述的 lint.xml - ? - 知道那可能在哪里吗?

0 投票
5 回答
27290 浏览

android - 为什么 0dp 被认为是性能增强?

已填写此问题末尾的答案,结合评论和解决方案。

问题

我四处搜索,但没有找到任何真正解释为什么Android Lint以及一些Eclipse提示建议用.layout_heightlayout_width0dp

例如,我有一个ListView建议更改

同样,它建议对ListView item进行更改。这些在更改前后看起来都一样,但我有兴趣了解为什么这些是性能提升器。

任何人都可以解释为什么?如果有帮助,这里是ListView.

回答

我在这里输入答案,因为它实际上是答案和下面引用的链接的组合。如果我在某件事上错了,请告诉我。

来自0dip layout_height 或 layouth_width 的诀窍是什么?

有 3 个通用布局属性适用于宽度高度

  1. android:layout_height
  2. android:layout_width
  3. android:layout_weight

当 aLinearLayout垂直时,layout_weight将影响孩子s ( )的高度。设置为将导致该属性被忽略。ViewListViewlayout_height0dp

例子

当 aLinearLayout水平时,layout_weight将影响子s ( )的宽度。设置为将导致该属性被忽略。ViewListViewlayout_width0dp

例子

要忽略该属性的原因是,如果您不忽略它,它将用于计算使用更多 CPU 时间的布局。

此外,这可以防止在使用这三个属性的组合时对布局的外观产生任何混淆。@android 开发人员在下面的答案中强调了这一点。

此外,Android LintEclipse都说使用0dip. 从下面的答案中,您可以使用0dip0dp0px等,因为任何单位中的零大小都是相同的。

避免在 ListView 上使用 wrap_content

ListView 的 Layout_width

如果您曾经想知道为什么getView(...)像我一样多次调用它,结果证明与wrap_content.

像我上面使用wrap_content的那样使用会导致测量所有 child View,这将导致更多的 CPU 时间。此测量将导致您getView(...)被调用。我现在已经对此进行了测试,并且getView(...)调用的次数大大减少了。

当我wrap_content在两个ListViews上使用时getView(...),每行调用 3 次,每行调用ListView4 次。

将此更改为推荐的0dpgetView(...)每行仅调用一次。这是一个相当大的改进,但更多的是避免wrap_content使用 aListView而不是0dp.

但是,0dp由于这个原因,建议确实大大提高了性能。

0 投票
3 回答
1910 浏览

android - 忽略 Android Lint“MissingTranslation”检查部分翻译

在我的应用程序中,我有一组具有完整翻译的语言,以及另一组仅翻译几个字符串的语言。

对于具有完整翻译的语言,我希望 Lint 警告我 MissingTranslations。

对于具有部分翻译的语言,我希望 Lint 忽略 MissingTranslations。

我无法弄清楚如何同时实现这两个目标。

0 投票
3 回答
7043 浏览

android - Android Eclipse Lint API 检查

感谢 PT 对于在 Eclipse 中构建多 SDK Android 应用程序而不会丢失编译时检查的问题的正确答案。但是,当我尝试按照推荐使用 @TargetApi() 注释时,它会产生语法错误。

当@TargetApi 行位于代码中间时,它会在位置 3 处生成两个语法错误:

如图所示,无论我在语句@TargetApi之前if还是在语句之​​后都存在错误。Lint API Check是否有任何先决条件(导入)或文章http://tools.android.com/recent/lintapicheck中未提及的其他注意事项以使 @TargetApi() 正常工作?

--- 2012 年 9 月 3 日编辑 ---

如果我将 @TargetApi 注释移动到类定义之前(显示为位置 1)或方法定义之前(显示为位置 2,在 @Override 注释之前或之后),我会收到不同的错误:

--- 2012 年 9 月 4 日编辑 ---

这是完整的源代码:

0 投票
7 回答
64584 浏览

android - 如何解决这个问题:“运行 android lint”问题

在我项目的任何活动中,如果我做了一些更改然后保存该活动,我会收到消息“运行 android lint 遇到问题”。

这是我的错误日志:

我不知道如何解决这个问题。

0 投票
11 回答
66573 浏览

android - 避免 Android Lint 抱怨未翻译的字符串

是否可以指定value-* 目录内文件中的字符串故意不翻译成其他语言?我有一堆所有语言都通用的字符串,不需要翻译,所以我unlocalized-strings.xml在目录中创建了一个文件values。运行 Android Lint 来检查它一直说缺少一些翻译的问题。我不想要要对整个项目禁用此检查,我只想在某些 XML 文件中禁用它。这可能吗?

如何定义这个未本地化的字符串区域?

0 投票
4 回答
160511 浏览

android - 什么是“android:allowBackup”?

自从新的 ADT 预览版(版本 21)以来,他们有一个新的 lint 警告,告诉我清单文件(在应用程序标记中)的下一件事:

应该明确地将 android:allowBackup 设置为 true 或 false(默认情况下为 true,这可能会对应用程序的数据产生一些安全隐患)

官方网站上,他们写道:

一些新的检查:您必须明确决定您的应用是否允许备份,以及标签检查。有一个用于设置库路径的新命令行标志。编辑时对增量 lint 分析的许多改进。

这是什么警告?什么是备份功能,如何使用它?

另外,为什么警告告诉我它有安全隐患?禁用此功能有哪些缺点和优点?


清单的备份有两个概念:

  • "android: allowBackup " 允许通过 adb 进行备份和恢复,如下所示

是否允许应用程序参与备份和恢复基础架构。如果此属性设置为 false,则不会执行应用程序的备份或恢复,即使是全系统备份也会导致所有应用程序数据通过 adb 保存。此属性的默认值为 true。

这被认为是一个安全问题,因为人们可以通过ADB备份您的应用程序,然后将您的应用程序的私人数据获取到他们的 PC 中。

但是,我认为这不是问题,因为大多数用户不知道 adb 是什么,如果他们知道,他们也会知道如何 root 设备。ADB 功能只有在设备启用了调试功能的情况下才能工作,这需要用户启用它。

因此,只有将设备连接到 PC 并启用调试功能的用户才会受到影响。如果他们的 PC 上有使用 ADB 工具的恶意应用程序,这可能会出现问题,因为该应用程序可以读取私有存储数据。

我认为谷歌应该在开发者类别中添加一个默认禁用的功能,以允许通过 ADB 备份和恢复应用程序。

  • “android: backupAgent ”允许使用云的备份和恢复功能如下所示

实现应用程序的备份代理的类的名称,BackupAgent 的子类。属性值应该是完全限定的类名(例如,“com.example.project.MyBackupAgent”)。但是,作为简写,如果名称的第一个字符是句点(例如,“.MyBackupAgent”),则会将其附加到元素中指定的包名称中。没有默认值。必须指定名称。

这不是安全问题。

0 投票
1 回答
1208 浏览

android - Jenkins Lint 插件没有收到结果

我在 jenkins 中安装了Android Lint Plugin插件,并在我的 Android 项目构建(使用 maven 构建)中激活了它。然后我使用命令添加了“执行 shell”作为构建后操作

如所述。lint-results.xml 文件在根工作区文件夹中创建,其中包含结果。但不知何故,插件不会获取结果并将它们显示在任何地方。

我已经尝试为结果 xml 文件配置不同的文件名和位置,但这似乎没有帮助。

可能出了什么问题?

0 投票
1 回答
150 浏览

android - Android:修复警告在 Eclipse res/values 中仍然可见

我刚刚修改了我的res/values-folder, 因为那里没有使用值,因此有一个警告告诉我。

现在我“清理”了未使用的,警告仍然可见。首先我重建了几次项目,重新启动了eclipse,最后重新启动了我的电脑,但似乎没有任何影响。

例如我的colors.xml文件

在此处输入图像描述

如您所见,不再有任何价值“背景”。与声称未使用值“black”的其他警告相同,对于 strings.xml 中的大约 20 个值也是如此。有什么技巧可以解决这个问题吗?

0 投票
3 回答
2802 浏览

android - 修复后Eclipse错误标记不会消失

我正在 Eclipse Juno 上开发一个 Android 应用程序,并使用 MAC OS Lion。当我修复 xml 文件中的某些错误时,错误标记不会消失,即使我修复它也不会让我编译代码。我尝试通过 Window-> Show View -> Problems 删除它,但是当我编译代码时,错误又回来了。我想解决它的唯一方法是裁剪文件中的所有内容,保存没有错误的 xml,然后再次将相同的代码粘贴到 xml 文件中,错误就消失了,就好像那里没有任何东西一样。有谁现在为什么会发生?