Android 自定义 Linting 在发布到远程存储库后工作一半了

问题描述 投票:0回答:1

我有一个 android 库,我为其创建了 2 个 linting 规则。该项目中有 3 个包,主要的一个包含示例应用程序、lib 包和 linting 包。我能找到的 lib 和 lint 模块之间的唯一链接位于 lib

build.gradle

    lintPublish(project(':app:linter_pkg'))

当我尝试 linting 规则时一切都很好,同时将库引入到示例中,就像这样

 implementation project(path: ':app:myLib')

但是,一旦我将库作为

.aar
发布到 github 包,并且使用远程包将库引入示例应用程序中,其中一个 linting 规则就会停止工作。

这对我来说没有任何意义。当库与本地链接一起使用时,这两个规则都有效,因此显然代码可以工作。我似乎没有错误地发布 linting 规则,因为其中一条规则仍然有效。因此

aar
会被正确下载并链接。

我还检查了我发布的构建文件和

.class
文件,并将它们与本地链接 lint 时 Android Studio 生成的文件进行比较,它们是相同的。

知道什么会导致这种行为,只有一半的构建被破坏吗?

android maven lint android-lint
1个回答
0
投票

当您使用远程包引入库时,可能有多种原因导致您的 linting 规则之一停止工作。您可以检查以下几件事:

  1. 验证 Lint 依赖项:确保 linting 包作为依赖项包含在示例应用程序的 build.gradle 文件中。应该是这样的:
groovy
implementation project(path: ':app:linter_pkg')
  1. 依赖项冲突:检查 linting 包与示例应用程序中的其他依赖项之间是否存在任何依赖项冲突。冲突的依赖关系可能会导致其中一项 linting 规则出现问题。您可以使用

    ./gradlew app:dependencies
    命令查看依赖关系树并检查是否存在冲突。

  2. Lint 配置:确保在示例应用程序的 build.gradle 文件中正确设置 lint 配置。确保

    lintChecks
    任务在构建过程中正在执行。您可以通过运行
    ./gradlew app:lint
    命令来检查它,看看它是否包含您的自定义 linting 规则。

  3. ProGuard/R8 混淆:如果您在示例应用程序中使用 ProGuard 或 R8 混淆,则混淆过程可能会影响 linting 规则。在这种情况下,您可能需要配置 ProGuard/R8 以保留 linting 规则所需的必要类和方法。

  4. Lint Gradle 插件版本:检查您在库和示例应用程序中是否使用相同版本的 lint Gradle 插件。不同版本的 lint 插件之间的不兼容性可能会导致自定义 linting 规则出现问题。

  5. Lint 检查配置:确保在 linting 包的 build.gradle 文件中正确配置自定义 linting 规则。确保规则已注册并包含在

    lintChecks
    任务中。

通过检查这些要点,您应该能够识别在将库用作远程包时可能导致 linting 规则停止工作的任何潜在问题。

© www.soinside.com 2019 - 2024. All rights reserved.