迁移到 AndroidX 后,仅当通过 ./gradle lintDebug 从命令行运行构建时才会看到此 lint 错误
我在 Android Studio 中没有看到任何警告或错误。
这是产生错误的代码:
import com.google.android.material.snackbar.Snackbar
...
Snackbar.make(this.findViewById<View>(android.R.id.content), R.string.recorder_permissions,
Snackbar.LENGTH_INDEFINITE).setAction("ENABLE") {
// Request permission here
}.show()
错误:
app/src/debug/java/com/mobile/android/ui/LogInfoActivity.kt:214: Error: Must be one of: BaseTransientBottomBar.LENGTH_INDEFINITE, BaseTransientBottomBar.LENGTH_SHORT, BaseTransientBottomBar.LENGTH_LONG or value must be ≥ 1 (was -2) [WrongConstant]
Snackbar.LENGTH_INDEFINITE).setAction("ENABLE"
~~~~~~~~~~~~~~~~~~~~~~~~~~
app/src/debug/java/com/mobile/android/ui/LogInfoActivity.kt:258: Error: Must be one of: BaseTransientBottomBar.LENGTH_INDEFINITE, BaseTransientBottomBar.LENGTH_SHORT, BaseTransientBottomBar.LENGTH_LONG or value must be ≥ 1 (was -2) [WrongConstant]
Snackbar.LENGTH_INDEFINITE).setAction("ENABLE"
~~~~~~~~~~~~~~~~~~~~~~~~~~
构建.gradle:
实现“com.google.android.material:material:1.0.0-rc01”
SnackBar.make 方法有一个 @IntDef,仅需要 SnackBar.LENGTH... 常量。更改基类常量会导致 Android Studio 出现错误。
构建工具版本:3.2.1 Gradle 版本:4.6
最佳答案
结果是一个愚蠢的错误。我们的一个库项目有一个 gradle 条目,其中包含旧版本的 Material 依赖项:
implementation "com.google.android.material:material:1.0.0-alpha1"
将其更改为固定它:
implementation "com.google.android.material:material:1.0.0"
看起来这是 alpha1 版本特有的问题。通过使用单个 Activity 创建新的 Android 项目,可以轻松地重新创建它。然后将项目转换为AndroidX。这显示了错误,因为它在转换后使用了 alpha1
版本。创建测试项目让我发现了错误。
关于android - AndroidX 迁移后命令行 lint 错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53119204/