无法使用转换 JetifyTransform 转换文件“some-lib-release.aar”以匹配属性 {artifactType=processed-aar}

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

我有一个包含 2 个模块的项目:一个具有构建类型

debug
release
enterprise
的应用程序 (Java) 以及应用程序使用的 Kotlin 库(
release
debug
)。

我正在使用 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.

关于我在这里做错了什么有什么想法吗?

android android-studio androidx android-studio-3.2 android-jetifier
11个回答
21
投票

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

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

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

“路径”可能是包名称,例如,

com.example.somerelease

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

rm
命令。

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


14
投票

我可以发誓我已经尝试过这个,但是为构建类型指定一组

matchingFallbacks
就达到了目的:

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

更多这里


4
投票

试试这个:

implementation fileTree(include:[':some-lib'], dir: "../lib/path")

4
投票

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

compileOptions {
        sourceCompatibility '1.8'
        targetCompatibility '1.8'
    }

2
投票

当我使用 jdk11 构建应用程序时,这种情况发生在我身上。

切换到jdk8对我来说很有效。

* What went wrong:
Execution failed for task ':****:kaptGenerateStubsDebugKotlin'.
> Could not resolve all files for configuration ':****'.
   > Failed to transform coreService.jar (project :coreService) to match attributes {artifactType=android-classes, org.gradle.category=library, org.gradle.dependency.bundling=external, org.gradle.jvm.version=11, org.gradle.libraryelements=jar, org.gradle.usage=java-api, org.jetbrains.kotlin.localToProject=public, org.jetbrains.kotlin.platform.type=jvm}.
      > Execution failed for JetifyTransform: ****/build/libs/coreService.jar.
         > Failed to transform '****/build/libs/coreService.jar' using Jetifier. Reason: null. (Run with --stacktrace for more details.)

1
投票

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

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

  1. 将库声明更新为以下内容:
    implementation project(path: ':yourLibraryname', configuration: 'default')
  2. Android Studio > 文件 >
    Invalidate Caches/Restart
  3. 转到用户 >(当前用户)> .gradle > 删除缓存文件夹并再次打开 Android Studio。
  4. 汇编”分别指定特定库。 (使用 Android Studio 的 RHS 上提供的 Gradle 选项。

1
投票

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


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.


0
投票
我通过缩短到

Gradle 用户主页的路径解决了同样的问题:

  1. 在终端:

    export GRADLE_USER_HOME=/home/.gradle

    
    

  2. 在android studio中:文件|设置|构建、执行、部署 |构建工具|

    摇篮 | Gradle 用户主页/home/.gradle

    
    

  3. 构建项目。


0
投票
compileOptions { sourceCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8 } kotlinOptions { jvmTarget = '1.8' }
    

0
投票
我通过删除此文件夹解决了类似的问题:

C:/UserName/.gradle/cashes/gradleVersion
并再次同步我的项目。

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