34

我有一个包含 2 个模块的项目:一个具有构建类型debugrelease和的应用程序 (Java) 以及该应用程序使用enterprise的 Kotlin 库 (releasedebug)。

我正在使用 AndroidX 并在我的gradle.properties

android.useAndroidX=true
android.enableJetifier=true

如果我通过 Gradle 运行项目,我会收到一堆编译错误(预期)。但是,如果我尝试在 Android Studio(3.2 Beta 5)中使用它,特别是在尝试与 Gradle 模型同步时,我会得到以下信息:

Unable to resolve dependency for ':app@debug/compileClasspath': Failed to transform file 'some-lib-release.aar' to match attributes {artifactType=processed-aar} using transform JetifyTransform
Unable to resolve dependency for ':app@debugAndroidTest/compileClasspath': Failed to transform file 'some-lib-release.aar' to match attributes {artifactType=processed-aar} using transform JetifyTransform
Unable to resolve dependency for ':app@debugUnitTest/compileClasspath': Failed to transform file 'some-lib-release.aar' to match attributes {artifactType=processed-aar} using transform JetifyTransform
Unable to resolve dependency for ':app@release/compileClasspath': Failed to transform file 'some-lib-release.aar' to match attributes {artifactType=processed-aar} using transform JetifyTransform
Unable to resolve dependency for ':app@releaseUnitTest/compileClasspath': Failed to transform file 'some-lib-release.aar' to match attributes {artifactType=processed-aar} using transform JetifyTransform
Unable to resolve dependency for ':app@enterprise/compileClasspath': Failed to transform file 'some-lib-release.aar' to match attributes {artifactType=processed-aar} using transform JetifyTransform
Unable to resolve dependency for ':app@enterpriseUnitTest/compileClasspath': Failed to transform file 'some-lib-release.aar' to match attributes {artifactType=processed-aar} using transform JetifyTransform

我的settings.gradle

include ':app',':some-lib'
project(':some-lib').projectDir = file ('../some-lib/lib')

库模块最终将成为这个应用程序和其他应用程序使用的它自己的库,但是当我在处理它时,我将它构建为应用程序的一部分。在我切换到 AndroidX 之前,一切都很好。

app模块将依赖项声明为:

implementation project(path: ':some-lib', configuration: 'default')

如果我configuration: 'default'在声明依赖项时省略了这一点,我会得到:

Unable to resolve dependency for ':app@enterprise/compileClasspath': Could not resolve project :some-lib.
Unable to resolve dependency for ':app@enterpriseUnitTest/compileClasspath': Could not resolve project :some-lib.

关于我在这里做错了什么的任何想法?

4

8 回答 8

14

该错误似乎是由损坏的 Jetified 文件引起的。

从 Gradle 缓存文件夹中仅删除损坏的 .aar:

rm ~/.gradle/caches/modules-2/files-2.1/path-to/some-release.aar

“路径到”可能是包名,例如,com.example.somerelease

有时可以从错误消息本身中获取要删除的文件的路径,然后将其剪切并粘贴到终端中以执行rm命令。

删除整个文件夹不是最佳解决方案,因为所有依赖项都需要再次 Jetified。如果您已经遇到腐败问题,您可能会再次遇到该问题。

于 2019-05-23T03:51:06.033 回答
12

我可以发誓我已经尝试过了,但是matchingFallbacks为构建类型指定一组就可以了:

buildTypes {
    release {
        // blah blah
        matchingFallbacks = ['release']
    }
    enterprise {
        // blah blah
        matchingFallbacks = ['release']
    }
    debug {
        // blah blah
        matchingFallbacks = ['debug']
    }
}

更多在这里

于 2018-08-13T17:20:35.127 回答
3

试试这个:

implementation fileTree(include:[':some-lib'], dir: "../lib/path")
于 2018-11-08T23:42:20.130 回答
2

我得到了解决方案..只需将以下行输入 build.gradle(app)

compileOptions {
        sourceCompatibility '1.8'
        targetCompatibility '1.8'
    }
于 2019-08-01T07:25:27.857 回答
1

解决此问题的选项(优先级):

注意:仅当上一个选项不起作用时才执行下一步)

  1. 将库声明更新为以下内容:implementation project(path: ':yourLibraryname', configuration: 'default')
  2. Android Studio > 文件 > Invalidate Caches/Restart.
  3. 转到 Users > (Current User) > .gradle > delete caches 文件夹并再次打开 Android Studio。
  4. 分别“组装”那个特定的库。(使用 Android Studio 的 RHS 上可用的 Gradle 选项。
于 2020-01-31T22:42:19.593 回答
0

我今天也遇到了这样的问题,希望我解决了。在我的例子中,.aar 文件的名称是“open-web-sdk-release.aar”。

错误在这里, implementation files("libs/open-web-sdk-release").

我将其替换为,implementation project(":open-web-sdk-release")

使用此链接... https://developer.android.com/studio/build#module-level

于 2020-08-14T09:52:23.533 回答
0

我通过缩短Gradle User Home的路径解决了同样的问题:

  1. 在终端:export GRADLE_USER_HOME=/home/.gradle

  2. 在 android studio 中:文件 | 设置 | 构建、执行、部署 | 构建工具 | 摇篮 | Gradle 用户主页/home/.gradle

  3. 构建项目。

于 2021-09-11T13:22:06.497 回答
0

有效的是将我的 gradle 版本更新到最新版本

于 2021-10-05T11:39:51.437 回答