2

我们将 Android Gradle 插件从 3.4.2 更新到 3.5.0(并将 Gradle 从 5.1.1 更新到 5.4.1)。

之后,构建开始在一些子模块中失败。尝试assemble任何构建变体都会产生这种情况(命令行和 Android Studio 中的错误相同):

> Failed to transform artifact 'bottom-navigation.aar (project :bottom-navigation)' to match attributes {artifactType=jar}.
   > Execution failed for JetifyTransform: <project_root>/bottom-navigation/build/outputs/aar/bottom-navigation-release.aar.
      > Failed to transform '<project_root>/bottom-navigation/build/outputs/aar/bottom-navigation-release.aar' using Jetifier. 
        Reason: Cannot open a library at 'FileMapping(from=<project_root>/bottom-navigation/build/outputs/aar/bottom-navigation-release.aar, to=<project_root>/bottom-navigation/build/.transforms/9b2af95a5f0e0055110660c22ff05ab5/jetified-bottom-navigation-release.aar)'. (Run with --stacktrace for more details.)

任何想法如何解决这一问题?

我试过的

更新

Gradle 插件 3.5.0 中开始出现问题;构建在本地和我们的 CI 机器上对我来说表现不稳定。

例如,干净的构建失败./gradlew clean assembleBetaRelease./gradlew assembleBetaRelease工作时失败!

另外,有时我会得到AAPT: error: attribute ... not found而不是上述Failed to transform artifact错误。

恢复到 Gradle 插件 3.4.2,所有这些问题都消失了。

2019 年 10 月编辑:Gradle 插件 3.5.1 仍然出现这种奇怪的行为。编辑 2019 年 11 月和 3.5.2。升级到 Gradle 5.6 也无济于事。

4

1 回答 1

-1

有点奇怪,但我让它再次工作。显然只是与缓存相关的 Android Gradle 插件中的一个临时故障。

这个答案帮助了我:

解决此问题的简单方法是在构建变体之间切换。这会刷新缓存的副本并解决问题。

由于项目同步失败,我无法在 Android Studio 中执行此操作,但在命令行上我尝试了另一种变体(在我之前./gradlew assembleBetaDebug使用./gradlew assembleBetaRelease过的情况下)。构建通过了,之后它也适用于所有其他变体,Android Studio 中的 Gradle 同步也开始工作了!

编辑:实际上这并没有完全解决;请参阅更新的问题。

更新 12/2019bundle*命令工作正常,只是assemble*失败了——Android Gradle 插件 3.5.3 仍然失败。在 Android Studio 中构建工作正常。显然这不是一个常见问题,而且我不知道我正在从事的特定项目中究竟是什么导致了这种情况。

更新 04/2020:现在使用 Android Gradle 插件 3.6.2(和 Gradle 5.6.4)构建在本地为我工作,我能够更新项目。在 CircleCI 上,构建仍然偶尔会失败并显示“无法转换工件”,但重新运行会修复它。去搞清楚

于 2019-09-12T11:16:50.480 回答