如何禁用已弃用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); ^ 

我可以注释特定的线或方法来使警告静音(因为我故意这样做)? 我不想禁用所有的警告。

Solutions Collecting From Web of "如何禁用已弃用Androidfunction的特定Lint警告?"

只是新的东西:不确定关于Android Studio,但是,要从这一行删除此警告,您可以使用:

 //noinspection deprecation 

这将删除下一行的警告。 例如:

 //noinspection deprecation e.setBackgroundDrawable(editTextDrawable); 

它不会显示错误。 不过,正如@JJD所说,这仍然会向控制台输出警告。 但至less你可以有一个很好的无错代码,例如像Git一样有用。 而且,这可以防止@SupressWarnings的问题,这是忽略了方法中的所有警告。 所以,如果你有不赞成的东西,你不知道, @SupressWarnings将隐藏它,你将不会被警告。 这是//noinspection

我遇到了类似的问题。 首先我得到一个编译器警告:

 :compileDebugJava Note: /path/file.java uses or overrides a deprecated API. Note: Recompile with -Xlint:deprecation for details. 

你可以用@SuppressWarnings("deprecation")来压制,或者只是忽略,因为这是一个警告,并且会导致你的构build失败。 另外我得到了lint错误(详细信息在build/lint-results.html ):

 Call requires API level 13 (current min is 9) 

这可以通过添加@SuppressLint("NewApi")来抑制。 或者,你可以使用@TargetApi(13)来提示方法/类可以使用依赖于API版本13的方法,而不是你已经设置为minSdkVersion (例如9)的方法。

注释只能在类或function级完成,而不能用于单个行。 另外请注意,“弃用”不应该大写,而这似乎并不重要的“NewApi”。

您需要创build一个lint.xml文件来告诉lint要忽略的内容。

http://tools.android.com/tips/lint/suppressing-lint-warnings看到这个更多的细&#x8282;

你的可能看起来有点像这样

 <?xml version="1.0" encoding="UTF-8"?> <lint> <!-- Disable the given check in this project --> <issue id="Deprecation"> <ignore path="app/src/main/java/com/example/MyApp/CustomListAdapter.java" /> </issue> </lint> 

要在源代码中处理这个问题,你应该使用类似的东西

  @SuppressLint("Deprecation") 

我注意到, @SuppressLint("deprecated")内联注释将不会被拾取 – 而@SuppressWarnings("deprecation") 正在被拾取。

可以在模块级的build.gradle文件中使用lintOptions来禁用对Gradle lintOptionsDeprecation检查; 而没有机会像这样定义单个文件:

 android { lintOptions { disable 'Deprecation' } } 

或者可以分配一个相当详细的lint.xmlconfiguration文件与LintOptions:lintConfig (当设置showAll true ,它仍然会显示警告 – 无论提供的XMLconfiguration):

 android { lintOptions { lintConfig file("lint.xml") showAll false } } 

在哪里可以添加个人文件,通过添加他们的path:

 <?xml version="1.0" encoding="UTF-8"?> <lint> <issue id="Deprecation" severity="Error"> <ignore path="app/src/main/java/com/example/MyApp/CustomListAdapter.java" /> </issue> </lint> 

com.android.builder.model.LintOptions的源代码可能会解释,实际上发生了什么(并确认了我所写的约50%)。

为了摆脱在Android Studio中的内联警告… linter似乎是另一个linter – 这些注释不会影响Gradle构build的linter(可能需要使用它与上述方法之一上面,为了忽略已知的弃用的类和方法):

 //noinspection deprecation 

更新 Android Studio 2.3发行说明提到了一项新function:

Lint Baseline:使用Android Studio 2.3,您可以在您的项目中将未解决的lint警告设置为基线。 从那时起,林特只会报告新的问题。 如果您的应用程序中存在许多遗留的lint问题,但这只是要重点解决新问题,这很有帮助。 了解更多关于Lint基线和本版本中添加的新的Lint检查和注释。

这里解释了如何创build一个Lint警告baseline – 它将检测到的警告logging到一个XML文件中,然后将它们静音(这比将内嵌代码注释,遍布整个地方更好)。 我假设,选项lintConfigbaseline应该是可以合并的(取决于要求)。

 android { lintOptions { baseline file("lint-baseline.xml") } }