仅在通过./gradle lintDebug
从命令行运行内部版本时,迁移到AndroidX后才看到此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"
~~~~~~~~~~~~~~~~~~~~~~~~~~
build.gradle:
implementation "com.google.android.material:material:1.0.0-rc01"
SnackBar.make方法具有@IntDef,仅需要SnackBar.LENGTH ...常量。更改为基类常量会导致Android Studio错误。
Build Tools版本:3.2.1 Gradle版本:4.6
答案 0 :(得分:0)
最终是一个愚蠢的错误。我们的一个图书馆项目有一个gradle条目,其中包含较旧版本的物料依赖项:
implementation "com.google.android.material:material:1.0.0-alpha1"
将其更改为此固定即可:
implementation "com.google.android.material:material:1.0.0"
看起来这是Alpha1版本特有的问题。只要创建一个新的Android项目,就可以轻松地重新创建它。然后将项目转换为AndroidX。这显示了错误,因为它在转换后使用了alpha1
版本。创建测试项目使我误入歧途。