JJD*_*JJD 15 android lint gradle deprecation-warning
我使用版本开关来支持较旧的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);
}
Run Code Online (Sandbox Code Playgroud)
从命令行使用Gradle构建项目时,Lint会输出以下警告:
app/src/main/java/com/example/MyApp/CustomListAdapter.java:92: warning:
[deprecation] setBackgroundDrawable(Drawable) in View has been deprecated
viewHolder.shape.setBackgroundDrawable(colorDrawable);
^
Run Code Online (Sandbox Code Playgroud)
我可以注释特定的行或方法来静音警告(因为我是故意这样做的)吗?我不希望禁用所有警告.
新功能:不确定Android Studio,但是,要从此行中删除此警告,您可以使用:
//noinspection deprecation
Run Code Online (Sandbox Code Playgroud)
这将从下一行中删除警告.例如:
//noinspection deprecation
e.setBackgroundDrawable(editTextDrawable);
Run Code Online (Sandbox Code Playgroud)
它不会显示错误.但是,正如@JJD所说,这仍然会向控制台输出警告.但至少你可以拥有一个很好的无错误代码,这对于Git来说非常有用.并且,这可以防止问题@SupressWarnings,即忽略方法中的所有警告.因此,如果你有一些你不知道的东西被弃用,@SupressWarnings它会隐藏它并且你不会被警告.这就是优点//noinspection
大小写很重要,使用以下内联或全类:
@Suppress("DEPRECATION")
Run Code Online (Sandbox Code Playgroud)
这是在科特林。
我遇到了类似的问题。首先我收到一个编译器警告:
:compileDebugJava
Note: /path/file.java uses or overrides a deprecated API.
Note: Recompile with -Xlint:deprecation for details.
Run Code Online (Sandbox Code Playgroud)
您可以使用@SuppressWarnings("deprecation")它来抑制或忽略它,因为它是一个警告并且确实会导致您的构建失败。此外,我还收到了 lint 错误(详情见build/lint-results.html):
Call requires API level 13 (current min is 9)
Run Code Online (Sandbox Code Playgroud)
这可以通过添加@SuppressLint("NewApi"). 或者,您可以使用@TargetApi(13)暗示方法/类可能使用依赖于 API 版本 13 的方法,而不是您设置的方法minSdkVersion(例如 9)。
注释只能在类或函数级别完成,而不能在一行中完成。另请注意,“弃用”不应大写,而“NewApi”似乎无关紧要。
我注意到,@SuppressLint("deprecated")内联注释将不再被拾取- @SuppressWarnings("deprecation") 而是被拾取。
可以在模块级文件中禁用对DeprecationGradle linter 的检查;虽然没有机会定义这样的单个文件:lintOptionsbuild.gradle
android {
lintOptions {
disable 'Deprecation'
}
}
Run Code Online (Sandbox Code Playgroud)
或可以lint.xml使用LintOptions:lintConfig分配一个相当详细的配置文件(当设置时showAll true,无论提供的XML配置如何,它仍将显示警告):
android {
lintOptions {
lintConfig file("lint.xml")
showAll false
}
}
Run Code Online (Sandbox Code Playgroud)
通过添加路径,可以添加单个文件:
<?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>
Run Code Online (Sandbox Code Playgroud)
的源代码com.android.builder.model.LintOptions可能会解释那里实际发生的情况(并确认约占我所写内容的50%)。
为了摆脱Android Studio中的内联警告...该linter似乎是另一个linter-并且这些注释不会影响Gradle构建的linter(可能需要将其与所述方法之一结合使用以上,以忽略已知不推荐使用的类和方法):
//noinspection deprecation
Run Code Online (Sandbox Code Playgroud)
更新 Android Studio 2.3发行说明提到了一项新功能:
棉绒基线:使用Android Studio 2.3,您可以将未解决的棉绒警告设置为项目中的基线。从那时起,Lint将仅报告新问题。如果您的应用程序中有许多旧的皮棉问题,而只想专注于解决新问题,这将很有帮助。了解有关Lint基准以及此版本中添加的新Lint检查和注释的更多信息。
此处说明了如何创建Lint警告baseline- 如何将检测到的警告记录到XML文件中,然后将其静音(这比将代码注释内联并遍及整个位置更好)。我会假设,即期权lintConfig和baseline应结合起来,能够(根据需要)。
android {
lintOptions {
baseline file("lint-baseline.xml")
}
}
Run Code Online (Sandbox Code Playgroud)
您需要创建一个 lint.xml 文件来告诉 lint 要忽略什么。
http://tools.android.com/tips/lint/suppressing-lint-warnings请参阅此了解更多详细信息
你的可能看起来有点像这样
<?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>
Run Code Online (Sandbox Code Playgroud)
要在源代码中处理这个问题,您应该使用类似的东西
@SuppressLint("Deprecation")
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
21095 次 |
| 最近记录: |