android - AndroidX 迁移后命令行 lint 错误

标签 android android-studio lint androidx

迁移到 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/

相关文章:

android - subscribe 的结果没有被使用

android - 我应该在 ViewModel 中包含 LifecycleOwner 吗?

gradle - 在 Android Studio 的产品风格中使用 Crashlytics

vscode 中的 Python linter,类型检查不完整(预期...得到...)

git - 右键单击项目不显示 Git 菜单

android-studio - 使用上传 key 为您的 Flutter 应用签名(Google Play 的应用签名)

python - 当 docstring 需要一个字符串时,你能传递一个 None 参数吗?

android - 如何在Android项目中从头开始设置DAGGER依赖注入(inject)?

android - 没有当前类的引用,svgLoader 无法工作

android - 项目没有 project.properties 文件