仅当通过./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中导致错误。
构建工具版本: 3.2.1 Gradle版本: 4.6
发布于 2018-11-03 02:27:45
最终成了一个愚蠢的错误。我们的一个库项目有一个gradle条目,其中包含旧版本的material依赖项:
implementation "com.google.android.material:material:1.0.0-alpha1"将其更改为以下内容即可解决此问题:
implementation "com.google.android.material:material:1.0.0"看起来这是alpha1版本特有的问题。通过使用单个活动创建一个新的Android项目,可以很容易地重新创建它。然后将项目转换为AndroidX。这显示了错误,因为它在转换后使用了alpha1版本。创建测试项目给了我错误的线索。
https://stackoverflow.com/questions/53119204
复制相似问题