【问题标题】:2 files found with path 'META-INF/LGPL2.11'找到 2 个路径为“META-INF/LGPL2.11”的文件
【发布时间】:2021-10-28 23:14:15
【问题描述】:

有人知道如何调试吗?我无法弄清楚是哪些库产生了问题。

旁注,它仅在我尝试运行 Android 测试时发生,所以我最好的猜测是它与某些测​​试库有关。


    testImplementation "androidx.room:room-testing:$version_room"
    testImplementation 'junit:junit:4.13.2'
    androidTestImplementation 'androidx.test.ext:junit:1.1.3'
    androidTestImplementation 'androidx.test.espresso:espresso-core:3.4.0'
    androidTestImplementation 'androidx.test.espresso:espresso-contrib:3.4.0'
    // Compose Tests
    androidTestImplementation "androidx.compose.ui:ui-test-junit4:$version_compose"
    debugImplementation "androidx.compose.ui:ui-test-manifest:$version_compose"
    // Hilt test
    androidTestImplementation "com.google.dagger:hilt-android-testing:$version_hilt"
    kaptAndroidTest "com.google.dagger:hilt-android-compiler:$version_hilt"
    debugImplementation 'androidx.fragment:fragment-testing:1.3.6'
Execution failed for task ':app:mergeDebugAndroidTestJavaResource'.
> A failure occurred while executing com.android.build.gradle.internal.tasks.MergeJavaResWorkAction
   > 2 files found with path 'META-INF/LGPL2.1' from inputs:
      - /home/lbenevento/.gradle/caches/transforms-3/1e2dfa6057fe4e701d175f47b1099efa/transformed/jetified-jna-platform-5.5.0.jar
      - /home/lbenevento/.gradle/caches/transforms-3/405542266c1c406c39ff1a20cb26a332/transformed/jetified-jna-5.5.0.jar
     Adding a packagingOptions block may help, please refer to
     https://google.github.io/android-gradle-dsl/current/com.android.build.gradle.internal.dsl.PackagingOptions.html
     for more information

* Try:
Run with --info or --debug option to get more log output. Run with --scan to get full insights.

* Exception is:
org.gradle.api.tasks.TaskExecutionException: Execution failed for task ':app:mergeDebugAndroidTestJavaResource'.
    at org.gradle.api.internal.tasks.execution.ExecuteActionsTaskExecuter.lambda$executeIfValid$1(ExecuteActionsTaskExecuter.java:187)
    at org.gradle.internal.Try$Failure.ifSuccessfulOrElse(Try.java:268)
...

这是完整的错误:https://pastebin.com/74cLGMR9

【问题讨论】:

  • 当我添加androidTestImplementation "androidx.compose.ui:ui-test-junit4:$version_compose"时,这也发生在我身上
  • 好的,很高兴知道,所以我们可能应该排除该依赖项的一些子依赖项。

标签: android gradle android-testing android-jetifier


【解决方案1】:

当我添加 androidTestImplementation "androidx.compose.ui:ui-test-junit4:$version_compose" 时,这发生在我身上。

参考this posting 中的建议,我决定使用pickFirst 而不是exclude

根据PackagingOptions documentationpickFirst 将允许第一次出现的文件与 APK 一起打包,而 exclude 将排除所有出现的文件。

这最终对我有用:

android {
    packagingOptions {
        pickFirst 'META-INF/AL2.0'
        pickFirst 'META-INF/LGPL2.1'
    }
}

【讨论】:

  • 它确实对我有用。但是我仍然不知道到底是什么问题,我们怎么知道是什么依赖导致了它,你有更多的见解吗?
【解决方案2】:

所以 excludepickFirst 在 kotlin DSL 中已经被弃用了。将以下内容放入您的build.gradle.kts

android {   
    packagingOptions {
        resources.excludes.apply {
            add("META-INF/LICENSE")
            add("META-INF/*.properties")
            add("META-INF/AL2.0")
            add("META-INF/LGPL2.1")
        }
    }
}

【讨论】:

  • kotlin DSL 有 resources.pickFirsts
【解决方案3】:

这对我来说解决了类似的问题:

android {
    packagingOptions {
        exclude 'META-INF/LICENSE'
        exclude 'META-INF/*.properties'
        exclude 'META-INF/AL2.0'
        exclude 'META-INF/LGPL2.1'
    }
}

【讨论】:

  • 是的,我见过这个解决方案,但它是什么意思?我想我们排除了捆绑到 APK 中的一些路径,但是我们怎么知道那里没有我们需要的东西呢?你有更多信息吗?还是谢谢你!
  • 嘿 Lorenzo 嗨,很遗憾我没有关于此的更多信息,也没有调查过。 LICENSE 文件似乎很重要...
猜你喜欢
  • 2018-01-17
  • 2012-08-21
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-07-13
  • 1970-01-01
相关资源
最近更新 更多