Articles of android lint

为什么我不能在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重新启用此文件(“还原默认值”)的方法。 任何想法如何在文件级别重新启用禁用的警告?

@IndDef注释和从其他代码返回值不能被注释或如何暂时禁用注释从而影响代码?

我在我的代码中使用Android支持注释的 IntDef (但是我的问题范围更广,请继续阅读:)如下所示: public class UiLockMode { @IntDef({DEFAULT, NONE, VISIBLE, TRANSPARENT}) @Retention(RetentionPolicy.SOURCE) public @interface AllowedValues {} public static final int DEFAULT = 0; public static final int NONE = 1; public static final int VISIBLE = 2; public static final int TRANSPARENT = 3; } 接下来,我得到了一些其他的注释方法: protected void setLockMode(@UiLockMode.AllowedValues int lockMode) { … 在这一点上都很好,但是,每当我想从其他方法传递返回值到setLockMode() ,就像从setLockMode()实现,问题就出现了: […]

Eclipse中的Lint for android提供了错误的结果

如果我运行“皮棉”。 在项目目录内我得到预期的警告,但如果我在eclipse中运行它,我会得到无意义的错误和警告,例如: 资源R.array.settings_derivatives似乎是未使用的[事实上,它被使用] xyz没有在清单中注册[事实上,已注册] 调用需要API级别3(当前最小为1):android.view.SurfaceView#isInEditMode [其实minSdkVersion设置为7] 编辑:如果我创build一个新的工作区,并导入现有的项目,我得到正确的错误

防止代码意外投入生产

我正在寻找一个简单的方法来确保我的static final boolean DEBUG标志设置为false时,我的Android项目导出到APK。 我试过使用这里提到的“STOPSHIP”注释标记,但它似乎没有任何影响apk导出,或者我用错了。 build立一个皮棉的扩展似乎是这样的矫枉过正,是否有一个更简单的方法来做到这一点? 编辑 使用自动生成的BuildConfig.DEBUG标志,加上一些难以忽略的屏幕指示,表明您正在以debugging模式运行(另外还有一个精神上的注意事项,在上午4点之后,不要上传apk,在快速修复之后) – 可能会引起您的注意。 但它仍然不是我发布这个问题的100%傻瓜certificate方法。 仍然有关于BuildConfig.DEBUG随机不能按预期运行的投诉 。 所以这个问题仍然是开放的 – 是否有一个无用的技巧,或类似的技巧呢?

在android中使用Twitter4j,在库中获取lint错误 – 库中的无效包引用

嗨,大家好我正在使用twitter API的android应用程序中使用twitter4j。 一切正常,我对图书馆没有任何问题。 今天我在twitter4j-core-3.0.3.jar中运行lint并得到lint错误。 我没有控制这个第三方库,所以应该做什么。 lint错误如下:库中无效的程序包引用; 不包含在Android中:javax.management.openmbean。 引用来自twitter4j.management.APIStatisticsOpenMBean。 问题: 查找API访问Android中不支持的API Id: InvalidPackage 此检查通过扫描库寻找对Android中未包含的API的调用。 在创buildAndroid项目时,将设置类path,以便只能访问Android中包含的API包中的类。 但是,如果将其他项目添加到libs /文件夹,则不能保证这些.jar文件是使用Android特定的类path构build的,特别是可以访问不受支持的API(如java.applet)。 此检查通过库Jar扫描,并查找Android包含的API包的引用,并标记这些包。 如果您的代码调用引用不支持的程序包的库类之一,这只是一个错误。

Kotlin和Android lint检查

我真的很喜欢在Kotlin中编写android应用程序 – 但我真的很想念lint。 任何人都知道如何取回(至less部分)。 有没有一个项目,适应android java lint规则kotlin? AFAIK lint没有在字节码上运行,所以需要手动转换才能完成。 我目前的主要痛点是,当我使用一个函数<MINSDK级别时,我需要编译时错误有人能指出我正确的方向吗?

如何解决无保护的SMS BroadcastReceiver皮棉警告

我的应用程序需要能够接收短信。 这一切正常,但我得到这个皮棉警告: 为SMS_DELIVER或SMS_RECEIVED声明意图filter的BroadcastReceivers必须确保调用者具有BROADCAST_SMS权限,否则恶意angular色可能欺骗意图。 我如何“确保调用者具有BROADCAST_SMS权限”? 在我的清单中,我有: <uses-permission android:name="android.permission.RECEIVE_SMS" /> <application …> <receiver android:name=".SmsReceiver" android:enabled="true" android:exported="true"> <intent-filter android:priority="1000"> <action android:name="android.provider.Telephony.SMS_RECEIVED" /> </intent-filter> </receiver> </application> 我的代码: public class SmsReceiver extends BroadcastReceiver { public SmsReceiver() {} @Override public void onReceive(final Context context, final Intent intent) { final Bundle bundle = intent.getExtras(); if (bundle != null) { final Object[] pdusObj […]