Articles of android lint

Android Lint限制语言以检查缺少的翻译

我的应用程序仅支持2种语言 – 英语和德语。 所以我有语言字符串的这种文件夹结构: 的myproject / RES /值/ strings.xml中 的myproject / RES /值-DE / strings.xml中 当我运行Lint检查时,我收到许多关于缺少语言的警告,我的应用程序不需要支持: “some_string”未翻译为af,am,ar,be,bg,ca,cs,da,el,en-rGB,es,es-rUS,et,fa,fi,fr,hi,hr,hu,in ,it,iw,ja,ko,lt,lv,ms,nb,nl,pl,pt,pt-rPT,ro,ru,sk,sl,sr,sv,sw,th,tl,tr,uk,vi ,zh-rCN,zh-rTW,zu 此警告很难理解哪些字符串未翻译为德语。 我必须查看每个警告并搜索“de”符号以了解此字符串没有翻译成德语。 所以我的问题很简单 – 如何告诉Lint只检查2种语言 ?

仅针对我的项目的Android Lint报告,不包括库项目?

如何运行Android Lint以便它只报告我的项目模块,并忽略我正在使用的任何库项目? 即使我将Lint瞄准我的项目模块,它也会在库项目中列出我不感兴趣的问题列表 – 我想集中精力修复我自己代码中的问题。 我看不到一个参数来指定它是否遵循对库项目的引用,但也许你可以看到如何做到这一点。

为什么ContextThemeWrapper现在仅限于支持库组?

我开始使用ContextThemeWrapper动态地将样式应用于ImageButton ; 基于我的另一个问题的答案,以及其他类似 问题的答案。 ContextThemeWrapper wrapper = new ContextThemeWrapper(getContext(), mStyleRes); mImageButton = new AppCompatImageButton(wrapper, null, 0); 但最近一个lint错误开始出现在ContextThemeWrapper构造函数上,说明: ContextThemeWrapper只能在同一个库组中调用(groupId = com.android.support) 我注意到标有@RestrictTo(LIBRARY_GROUP)注释的类,这会导致出现lint错误。 但是我找不到任何关于为什么它仅限于com.android.support库组的信息。 据我所知,这是以编程方式将样式,主题或主题叠加应用于View的唯一方法; 除了将默认样式属性设置为构造函数中的第三个参数之外。 所以我想知道为什么它的使用会受到限制; 在支持库之外使用类有什么问题吗? 可能会有我不知道的副作用吗? 我遇到的唯一类似的问题是一个关于(现在已修复)的错误; 导致此lint错误显示在AppCompatActivity的子类的onCreate方法上。 我认为这不是一个错误,而是一个故意的限制; 我想知道背后的推理。 我应该注意; 这个限制(截至目前)实际上似乎对使用ContextThemeWrapper的代码没有影响。 它编译并运行良好,并按照我的预期工作。

typesanimation师的预期资源

我已将SDK更新到最新版本,但现在我收到了一个lint错误。 错误:animatortypes的预期资源[ResourceType] 此行发生错误: AnimatorInflater.loadAnimator(context, R.anim.right_slide_in) 引用的资源/res/anim/right_slide_in.xml如下所示: 它以前总是奏效。 有人可以解释为什么我会收到这个错误吗?

Android Lint:如何忽略区域语言环境字符串文件中缺少的翻译警告,该文件故意仅覆盖某些默认翻译?

是否有可能在没有Lint抱怨MissingTranslation的单独资源文件中翻译某些字符串,而不是全部? 例如:我的应用程序的字符串都在res / values / strings.xml中 。 其中一个字符串是 Postal Code 由于“邮政编码”在美国通常被称为“邮政编码”,我想在内容中添加另一个资源res / values-en-rUS / strings.xml : Zip Code 但是,Lint会抱怨values / strings.xml中的其他字符串,而不是values-en-rUS / strings.xml中的其他字符串 我意识到你可以通过指定tools:ignore来抑制警告tools:ignore values / strings.xml 。 但这是不可取的,因为Lint警告在翻译成另一种语言时实际上很有用。 相反,是否可以在values-en-rUS / strings.xml文件中禁止警告,如在查找缺少的翻译时告诉Lint不要将该文件用作标准?

如何解决有关导出的Firebase Messaging服务实现的android lint投诉?

按照Google开发人员在我的应用中实施Firebase的说明 ,我注意到android lint抱怨。 我们的想法是,我们必须实现两个从Firebase服务inheritance的服务: public class MyFirebaseInstanceIDService extends FirebaseInstanceIdService { … } public class MyFirebaseMessagingService extends FirebaseMessagingService { … } 然后在清单中注册这些服务。 但是,它并不完美。 特别是,这两个推荐的AndroidManifest.xml服务条目不包含任何特殊权限: 所以linter说: 导出的服务(设置为exported = true或包含intent-filter且未指定exported = false的服务)应定义实体必须具有的权限才能启动服务或绑定到该服务。 没有这个,任何应用程序都可以使用此服务。 我应该只将此属性添加到每个服务标记并完成它 tools:ignore=”ExportedService” 或者在这种情况下有更好的方法吗? 我的意思是,公开这些特定的Firebase派生服务是否安全?

为什么我不能在Eclipse中的菜单“窗口”中使用“运行Android lint”工具栏我可以运行它,可以吗?

我刚刚更新了eclipse的SDK和ADT,现在有一件事让我困惑:我不能使用菜单“Window”中的“Run Android Lint”。 但是我可以从eclipse工具栏运行它,或者在我的项目上点击richt-click,然后select“Android tools” – “run lint”。 我不知道这是从Android的错误,或者我通过更新做了错误。 任何人都像我一样的问题? 谢谢! 最好的问候,卡特里娜

Android – 将所有lint警告设置为除某些之外的错误

我正在尝试使我的持续集成在引入不在lint-baseline.xml文件中的新的lint警告时失败。 我想要把所有的lint警告视为错误(所以构build被中止),但我想要一种方式来指定某些lint检查被视为信息级或警告级,以便它们仍然出现在lint结果中,但不要不会导致构build失败。 下面是一个基本上我想要做的例子(除非这不起作用,如果存在任何不被忽略的警告,构build失败): lintOptions { lintConfig file("lint.xml") baseline file("lint-baseline.xml") checkAllWarnings true warningsAsErrors true abortOnError true informational 'MissingTranslation, …' // don't fail the build for these } 有没有一种简单的方法把所有的皮棉检查都视为错误,排除某些错误? 我曾经想过手动设置所有的200多个lint检查到错误级别,但是这不是很有前途的证据,因为每次添加新的lint检查都必须更新列表。

Android库的Android API级别注释

我正在编写一个Android库。 lbirary中绝大多数的界面支持Android API级别10或更高。 但是,某些function需要更高的API级别。 例如,图书馆的一部分需要低功耗蓝牙API 18。 为了具体,让我们说,图书馆产生三classClassA , ClassB和ClassC 。 ClassA使用API​​ 10中提供的function, ClassB使用API​​ 14中提供的function, ClassC使用API​​ 18中提供的function。 我希望能够触发一个lint问题(警告/错误),只要有人从我的库中使用一个类,而不在他们的项目中具有所需的API级别(除非他们使用适当的注释来压制警告)在lint使用的NewApi问题中。 search后,我发现了以下可能的解决scheme: 1)这个解决scheme不是沿着lint的路线:将库分成三个.jar文件,比如lib_10.jar ,其中包含所有使用API​​ 10中可用function的类(本例中为ClassA), lib_14.jar包含所有使用API​​ 14(示例中的ClassB)和lib_18.jar中提供的function的类,其中包括使用API​​ 18(示例中的ClassC)中可用function的所有类。 这个解决scheme允许可移植性,但会使代码的后期可维护性复杂化,并且也可能需要一些代码重复。 2)创build我自己的注释(比如@RequireAndroidApi(API_LEVEL)指出注释的类/方法/等所需的最低API级别),并使用lint-api.jar ( http://tools.android.com/tips/lint-custom-rules )来创build一个自定义的lint规则来检查任何带注释的类/方法/等等的使用情况。 稍后看起来像这样的东西: @RequireAndroidApi(10) Class ClassA { } @RequireAndroidApi(14) Class ClassB { } @RequireAndroidApi(18) Class ClassC { } 问题是,我找不到lint API的良好文档,看来这是重新发明lint已经支持的function的轮子(lint已经检查了“NewApi”问题)。 3)最后,我成功编辑了<SDK>/platform-tools/api/api-versions.xml ,以便指示每个类所需的API级别,如下所示: <api version="1"> … <class name="package/path/ClassA" since="10"> […]

如何在文件级别重新启用禁用的Android Lint警告

我针对特定的XML文件禁用了Android Lint警告“HardcodedText”(这是针对数字键盘的固定文本)。 无法在Windows>首选项> Android> Lint错误检查中,也无法在“ 项目”>“属性”>“Android Lint首选项”中find重新启用此文件(“还原默认值”)的方法。 任何想法如何在文件级别重新启用禁用的警告?