如何添加-Xlint: 未检查到我的基于 Android Gradle 的项目?

我尝试将以下内容添加到根 build.gradle文件:

subprojects {
gradle.projectsEvaluated {
tasks.withType(Compile) {
options.compilerArgs << "-Xlint:unchecked -Xlint:deprecation"
}
}
}

但我明白了:

FAILURE: Build failed with an exception.


* What went wrong:
Execution failed for task ':Libraries:ActionBarSherlock:compileRelease'.
> invalid flag: -Xlint:unchecked -Xlint:deprecation

我做错了什么?

66189 次浏览

这就是对我有效的方法: (在您的项目的 build.gradle 中)

allprojects {
gradle.projectsEvaluated {
tasks.withType(JavaCompile) {
options.compilerArgs << "-Xlint:unchecked" << "-Xlint:deprecation"
}
}
}

我需要设置一个不同的编译参数。

gradle.projectsEvaluated {
tasks.withType(JavaCompile) {
options.compilerArgs << "-XDignore.symbol.file"
options.bootClasspath = "$System.env.JAVA_HOME/jre/lib/rt.jar"
}
}

您必须为 JDK 1.8及以上版本设置针对 Unsafe 和 sun.swing 之类的引导类路径。课程 * 。特别为后者修复源代码,因为 Jigsaw Java9(JRE 即将出现的模块化实现)最终将使这些方法无法访问(!).我警告过你了。

免责声明: 即使这个答案有10个以上的赞成票,它也不能解决 仿生人项目中的问题。然而,谷歌在非 Android 项目中发现了这个问题。因此,我把这个答案留给那些人。

根据 JavaCompile,以下似乎是解决方案:

compileJava {
options.encoding = 'UTF-8'
options.compilerArgs << "-Xlint:unchecked" << "-Xlint:deprecation"
}

如果您希望在测试用例中使用它,请使用 compileTestJava

compileTestJava {
options.encoding = 'UTF-8'
options.compilerArgs << "-Xlint:unchecked" << "-Xlint:deprecation"
}

我不确定问题出在使用 Gradle subprojects配置参数上,但是您使用的语法是:

options.compilerArgs << "-Xlint:unchecked -Xlint:deprecation"

这对我很有效:

subprojects {
gradle.projectsEvaluated {
tasks.withType(JavaCompile) {
options.compilerArgs += [
'-Xlint:unchecked', // Shows information about unchecked or unsafe operations.
'-Xlint:deprecation', // Shows information about deprecated members.
]
}
}
}

或者

subprojects {
gradle.projectsEvaluated {
tasks.withType(JavaCompile) {
options.compilerArgs << "-Xlint:unchecked" << "-Xlint:deprecation"
}
}
}

如果您只想添加一个选项(通常会添加更多) ,那么您只需在任务 JavaCompile中添加:

options.compilerArgs << "-Xlint:unchecked"

您可以找到更多关于林特 这里这里的信息。

将其放入 建造,分级文件(根目录) :

allprojects { // Projects
gradle.projectsEvaluated {
tasks.withType(JavaCompile) {
options.encoding = 'UTF-8'
options.compilerArgs << "-Xlint:unchecked" << "-Xlint:deprecation"
}
}
}

对于每个使用 gradle.kts的人,使用以下方法与简单的 build.gradle文件进行匹配

Build.gradle.kts

afterEvaluate {
tasks.withType(JavaCompile::class) {
options.compilerArgs.add("-Xlint:unchecked")
options.compilerArgs.add("-Xlint:deprecation")
}
}

建造,分级

 gradle.projectsEvaluated {
tasks.withType(JavaCompile) {
options.compilerArgs << "-Xlint:unchecked" << "-Xlint:deprecation"
}
}

对于不推荐使用,现在可以在 gradle kotlin 脚本中使用它,这比修改 compilerArgs要好,因为它是类型安全的:

tasks.withType<JavaCompile> {
options.isDeprecation = true
}

在 Gradle 的更高版本中,我建议使用新的 API:

tasks.withType<JavaCompile>().configureEach {
options.isDeprecation = true
}

私有类 HelloWebViewClient 扩展 WebViewClient {

    @Override
public void onPageStarted(WebView view, String url, Bitmap favicon) {
// TODO Auto-generated method stub
super.onPageStarted(view, url, favicon);
}


@Override
public boolean shouldOverrideUrlLoading(WebView webView, String url)
{
webView.loadUrl(url);
return true;
}


@Override
public void onPageFinished(WebView view, String url) {
// TODO Auto-generated method stub
super.onPageFinished(view, url);


progressBar.setVisibility(View.GONE);
}
}

警告: WebViewClient 中的 should dOverrideUrlLoading (WebView,String)已被弃用 Public boolean should dOverrideUrlLoding (WebViewwebView,Stringurl) ^