在Android Studio中重新编译-Xlint

ylamdve6  于 12个月前  发布在  Android
关注(0)|答案(6)|浏览(107)

当我在Android Studio中构建Android项目时,我收到消息:

Note: Some input files use unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.

字符串

Note: Some input files use or override a deprecated API.
Note: Recompile with -Xlint:deprecation for details.


我想按照消息中的建议去做,但是怎么做呢?我如何配置我的Android Studio,以便按照上面消息中的建议使用-Xlint重新编译我的项目?(我使用的是Android Studio 3.0.1)

z9ju0rcb

z9ju0rcb1#

该消息建议您使用args -Xlint重新编译以获取更多警告详细信息,将这些代码添加到build.gradle:

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

字符串
然后,您可以通过详细的消息修复警告。
例如,您可以用新方法替换已弃用的方法(旧方法已弃用,因此总会有新方法)。
然而,有时候我们不想因为某些原因改变我们的代码,我们只是想摆脱编译警告,你可以在弃用的方法前面添加@SuppressWarnings("deprecation")

qltillow

qltillow2#

您需要在应用程序级别build.graddle文件中添加以下内容

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

字符串
如果出于某些原因,您需要继续使用已过时的API,则可以取消显示警告。

@SuppressWarnings("deprecation")


注解。“
post link

wgx48brx

wgx48brx3#

如果您在生成签名的apk时遇到问题,您可以尝试在build.gradle(app)中执行此操作

android {
    lintOptions {
        checkReleaseBuilds false
    }
}

字符串

wnvonmuf

wnvonmuf4#

这是项目中的一些错误,可能来自XML文件。禁用lintOptions不是一个正确的解决方案。找到错误并修复问题,要做到这一点,请在Android Studio终端中运行以下命令

Windows

gradlew stacktrace

MAC

./gradlew stacktrace

14ifxucb

14ifxucb5#

您可以通过选择Analyze > Inspect Code手动运行已配置的lint和其他IDE检查。检查结果将显示在Inspection Results窗口中。详情请参阅:https://developer.android.com/studio/write/lint#manuallyRunInspections

dffbzjpn

dffbzjpn6#

该消息建议在命令行中使用-Xlint标志重新编译,以获得更多的问题细节,但即使你这样做,下一个日志可能会要求--stacktrace标志。
build.gradle文件中,执行以下操作:

import org.gradle.api.logging.configuration.ShowStacktrace
allprojects {
    // Same as passing --stacktrace option.
    gradle.startParameter.showStacktrace = ShowStacktrace.ALWAYS

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

字符串

注意,可能不需要导入(只是导入以明确)。

也正如y 4 n9 b 0所说;然后你可以使用警告的细节来解决问题。
例如,你可以用new方法替换弃用的方法(我的意思是,必须有一个new方法,因为旧方法已经被弃用了)。
但有时为了向后兼容,我们不想改变代码,只是想摆脱编译时警告;只需在弃用的方法前面添加:

@SuppressWarnings("deprecation")

相关问题