首页 > 解决方案 > 使用 android.tools.lint 执行 JetifyTransform 失败

问题描述

项目build.gradle

buildscript {
    ext.kotlin_version = '1.3.72'
    repositories {
        google()
        jcenter()

    }
    dependencies {
        classpath 'com.android.tools.build:gradle:3.6.3'
        classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
    }
    ...
}

毕业包装:

distributionUrl=https\://services.gradle.org/distributions/gradle-6.3-all.zip

库模块build.gradle依赖项:

dependencies {
    compileOnly "com.android.tools.lint:lint-api:26.6.3"
//    compileOnly "com.android.tools.lint:lint-checks:26.6.3"
    testImplementation "com.android.tools.lint:lint-tests:26.6.3"
}

如果我运行gradle assemble

任务 ':lint-rules:compileDebugKotlin' 执行失败。

无法解析配置 ':lint-rules:debugCompileClasspath' 的所有工件。无法将工件“common.jar (com.android.tools:common:26.6.3)”转换为匹配属性 {artifactType=android-classes, org.gradle.libraryelements=jar, org.gradle.usage=java-runtime} . JetifyTransform 执行失败:/Users/.../.gradle/caches/modules-2/files-2.1/com.android.tools/common/26.6.3/660d537bd70cc816f63b4b038a529177f402448a/common-26.6.3.jar。无法使用 Jetifier 转换“/Users/.../.gradle/caches/modules-2/files-2.1/com.android.tools/common/26.6.3/660d537bd70cc816f63b4b038a529177f402448a/common-26.6.3.jar”。原因:给定的工件包含带有包引用“android.support.design.widget”的字符串文字,无法安全地重写。

如果我取消注释lint-checks导入,它会添加:

无法转换'/Users/.../.gradle/caches/modules-2/files-2.1/com.android.tools.lint/lint-checks/26.6.3/aa1f7a4caa8cbc70f85e4c97409270ce7d7a7eab/lint-checks-26.6.3。 jar' 使用 Jetifier。原因:重复条目:通知。(使用 --stacktrace 运行以获取更多详细信息。)

我试图禁用 Jetifier,但这是最糟糕的。我试图从 lint 中排除 tools:common 并手动导入,但它也不起作用。

我被困在这里,我错过了什么?

标签: androidgradleandroid-gradle-pluginandroid-lintgradle-dependencies

解决方案


我发现了问题,我的 build.gradle 使用的是 applyplugin: 'com.android.library'而不是java-library'^^


推荐阅读