Articles of lint

android lint库模块中未使用的资源在app中使用

我的应用程序分为主应用程序和不同的库模块。 当我跑 ./gradlew lint 每个模块都是独立检查的,每个模块都会生成一个lint.xml文件。 在lint.xml文件中有大量未使用的资源警告,但是这些资源在主应用程序中使用。 如果使用资源,如何配置lint以在应用程序中全局检查? 谢谢 :)

Android Lint报告重复

我在控制台中运行./gradlew clean lint命令并在build / lint / ReleaseOutput.html和build / lint / ReleaseOutput.xml中获取Lint报告我得到了相同错误的6次: 我还在XML文件中看到6次相同的问题: <issue id="UselessParent" severity="Error" … 那么,它为什么会发生以及如何避免这样的问题呢? 因为一个问题乘以6并且在Jenkins统计数据中显示不明显。 更新: 我发现这个bug与gradle lint任务有关。 要获得lint metrix Gradle几次构建: file=”build/manifests/release/AndroidManifest.xml” file=”build/manifests/debug/AndroidManifest.xml” 所以它也可以使问题总数翻倍。

当gradle执行检查时避免lint

有人告诉我一种方法,以避免每次我在gradle检查中执行“lint”? 我在build.gradle中定义了 lintOptions { quiet true } 但是,它一直在做这个任务。 问题是每次检查都需要很长时间。

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不要将该文件用作标准?

错误:types为styleable 错误的预期资源

看一下这段代码。 我在最后一行收到错误,因为我传递的是“索引”而不是资源。 我认为这是一个皮棉问题并试图压制它。 然后我注意到我只有在构建发布时才会出现此错误。 构建调试时它工作正常。 我完全无能为力。 任何人都可以对我做错的事情有所启发。 //Get paddingLeft, paddingRight int[] attrsArray = new int[]{ android.R.attr.paddingLeft, // 0 android.R.attr.paddingRight, // 1 }; TypedArray ta = context.obtainStyledAttributes(attrs, attrsArray); if (ta == null) return; mPaddingLeft = ta.getDimensionPixelSize(0, 0); mPaddingRight = ta.getDimensionPixelSize(1/*error here*/, 0);

调用需要API级别11(当前最小为9)android.app.Activity#onCreateView

在SDK更新(23)后,我得到这个lint错误,我没有在我的代码中做任何改变,它在api级别9的设备上工作正常。另外,我不调用android.app.Activity#onCreateView我的代码。 如果我点击自动修复,它将@SuppressLint(“NewApi”)放到类的声明@SuppressLint("NewApi") public class MyActivity extends android.support.v4.app.FragmentActivity像这样,错误消失,我要确定这是否是要走的路。

如何禁用已弃用Androidfunction的特定Lint警告?

我使用版本切换来支持较旧的Android版本。 int sdk = Build.VERSION.SDK_INT; if (sdk < Build.VERSION_CODES.HONEYCOMB) { ColorDrawable colorDrawable = new ColorDrawable(shapeColor); //noinspection deprecation viewHolder.shape.setBackgroundDrawable(colorDrawable); } else { viewHolder.shape.setColor(shapeColor); } 当从命令行使用Gradle构build项目时,Lint会输出以下警告: app/src/main/java/com/example/MyApp/CustomListAdapter.java:92: warning: [deprecation] setBackgroundDrawable(Drawable) in View has been deprecated viewHolder.shape.setBackgroundDrawable(colorDrawable); ^ 我可以注释特定的线或方法来使警告静音(因为我故意这样做)? 我不想禁用所有的警告。

Android Lint是什么意思:“错误的定位?”

我在eclipse中运行Android lint并得到一个错误: 错误的方向? 没有方向指定,默认是水平的,但这个布局有多个孩子,其中至less有一个layout_width =“match_parent” 问题:检查具有多个子项的LinearLayouts设置方向Id:方向 这是错误代码: <?xml version="1.0" encoding="utf-8"?> <LinearLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="fill_parent" android:layout_height="@dimen/cell_height_1_of_3" > <ImageView android:id="@+id/item_cover" android:layout_width="wrap_content" android:layout_height="fill_parent" android:layout_gravity="left" android:layout_marginLeft="8dp" android:scaleType="fitCenter" android:src="@drawable/doc_item_icon" /> <ImageView android:layout_width="fill_parent" android:layout_height="@dimen/cell_height_1_of_3" android:background="#0000" android:padding="5dp" android:scaleType="centerInside" android:visibility="gone" /> <TextView android:id="@+id/item_title" android:layout_width="fill_parent" android:layout_height="fill_parent" android:ellipsize="end" android:gravity="center" android:maxLines="1" android:text="Add new" android:textColor="@color/office_color" android:textSize="@dimen/textview_small_size" /> </LinearLayout> 这是什么意思? 如果我忽略这个lint错误会发生什么?

Android的@hide注解究竟干什么?

Android中的许多内部API都标记为@hide 。 这到底是什么? 另一个答案是,它只隐藏Javadoc的方法,但是你可以使用reflection来访问它们。 这是没有意义的,但是 – 如果他们只从Javadoc隐藏,那么你肯定不需要reflection来访问它们。 事实上,我发现我没有。 我仍然可以调用一些@hide方法(也许只是静态方法?),应用程序编译并运行良好,据我所知。 我只是得到一个皮棉错误: 请注意,上面的代码仍然编译好。 我不关心API被更改的可能性,所以我很高兴使用私有API,但是有人可以解释这种行为吗? 此外,如果有任何方法可以在个案的基础上禁用皮棉,这将是有益的。

对于Android,我在哪里可以find@SuppressLint有效问题ID的完整列表

目前,我需要忽略一个与国际化相关的string连接警告,但是在将来要“学习如何钓鱼”来处理其他专门的警告。