Failed to transform file 'some-lib-release.aar

2019-04-05 04:22发布

问题:

I have a project with 2 modules: an app (Java) with build types debug, release, and enterprise and a Kotlin library (release and debug) used by the app.

I'm using AndroidX and have the following in my gradle.properties:

android.useAndroidX=true
android.enableJetifier=true

If I run the project through Gradle, I get a bunch of compile errors (expected). But if I try to use it from within Android Studio (3.2 Beta 5), specifically when trying to sync with the Gradle model, I get this:

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

My settings.gradle:

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

The library module will eventually be its own library used by this app and others, but while I'm working on it I build it as a part of the app. Things were working fine until I switched to AndroidX.

The app module declares the dependency as:

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

If I leave out the configuration: 'default' bit when declaring the dependency, I get:

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.

Any ideas on what I'm doing wrong here?

回答1:

I could swear I had already tried this, but specifying a set of matchingFallbacks for the build types did the trick:

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

More here



回答2:

Try this:

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