Android Gradle插件3.5.0:“;未能转换工件"&引用;JetifyTransform的执行失败;
我们将Android Gradle插件从3.4.2升级到3.5.0(Gradle从5.1.1升级到5.4.1) 之后,构建在几个子模块中开始失败。尝试汇编任何构建变量都会产生以下错误(命令行和Android Studio中的错误相同):Android Gradle插件3.5.0:“;未能转换工件"&引用;JetifyTransform的执行失败;,android,android-gradle-plugin,android-jetifier,Android,Android Gradle Plugin,Android Jetifier,我们将Android Gradle插件从3.4.2升级到3.5.0(Gradle从5.1.1升级到5.4.1) 之后,构建在几个子模块中开始失败。尝试汇编任何构建变量都会产生以下错误(命令行和Android Studio中的错误相同): >未能将工件“bottom-navigation.aar(项目:bottom-navigation)”转换为匹配属性{artifactType=jar}。 >JetifyTransform的执行失败:/bottom navigation/build/output
>未能将工件“bottom-navigation.aar(项目:bottom-navigation)”转换为匹配属性{artifactType=jar}。
>JetifyTransform的执行失败:/bottom navigation/build/outputs/aar/bottom-navigation-release.aar。
>无法使用Jetifier转换“/bottom navigation/build/outputs/aar/bottom navigation release.aar”。
原因:无法在“文件映射(from=/bottom navigation/build/outputs/aar/bottom-navigation-release.aar,to=/bottom navigation/build/.transforms/9b2af95a5f0e0055110660c22ff05ab5/jetified bottom navigation release.aar)”处打开库。(有关详细信息,请使用--stacktrace运行。)
有没有办法解决这个问题
我试过的
- AS中的“使缓存无效”,并清除
~/.Gradle/caches中的所有Gradle缓存
- 所有的建议
- 我检查了有问题的模块是否使用
(而不是apply插件: “com.android.library”
)com.android.application
- 我尝试在受影响的模块中将appcompat依赖项更新为
,并删除该依赖项androidx.appcompat:appcompat:1.1.0
- 我检查了有问题的模块是否使用
/gradlew clean assembleBetaRelease
在/gradlew assembleBetaRelease
工作时失败
而且,有时我会得到AAPT:error:attribute。。。找不到
而不是上面的未能转换工件
错误
回到Gradle插件3.4.2,所有这些问题都消失了
编辑2019年10月:Gradle插件3.5.1仍然存在这种奇怪的行为编辑2019年11月和3.5.2。升级到Gradle 5.6也没有帮助。有点奇怪,但我让它重新工作了。显然,这只是Android Gradle插件中与缓存相关的暂时故障 帮助我: 解决这个问题的简单方法是在构建变量之间切换。这将刷新缓存的副本并解决问题 由于项目同步失败,我无法在Android Studio中实现这一点,但在命令行上我尝试了另一种变体(在我的例子中,
/gradlew assemblebetatebug
之前使用了/gradlew assemblebateralease
)。构建通过了,之后它也适用于所有其他变体,Android Studio中的Gradle sync也开始工作了
编辑:实际上这还没有完全解决;见更新的问题
2019年12月更新:bundle*
命令工作正常,只有assemble*
在Android Gradle插件3.5.3中仍然失败。Android Studio中的构建工作正常。显然,这不是一个常见的问题,我不知道我正在从事的特定项目中到底是什么导致了这一问题
更新4/2020:现在有了Android Gradle插件3.6.2(和Gradle 5.6.4),可以在本地为我构建工作,我可以更新项目。在CircleCI上,构建仍然偶尔会因“未能转换工件”而失败,但重新运行修复了它。想想看有点奇怪,但我又让它工作起来了。显然,这只是Android Gradle插件中与缓存相关的暂时故障 帮助我: 解决这个问题的简单方法是在构建变量之间切换。这将刷新缓存的副本并解决问题 由于项目同步失败,我无法在Android Studio中实现这一点,但在命令行上我尝试了另一种变体(在我的例子中,
/gradlew assemblebetatebug
之前使用了/gradlew assemblebateralease
)。构建通过了,之后它也适用于所有其他变体,Android Studio中的Gradle sync也开始工作了
编辑:实际上这还没有完全解决;见更新的问题
2019年12月更新:bundle*
命令工作正常,只有assemble*
在Android Gradle插件3.5.3中仍然失败。Android Studio中的构建工作正常。显然,这不是一个常见的问题,我不知道我正在从事的特定项目中到底是什么导致了这一问题
更新4/2020:现在有了Android Gradle插件3.6.2(和Gradle 5.6.4),可以在本地为我构建工作,我可以更新项目。在CircleCI上,构建仍然偶尔会因“未能转换工件”而失败,但重新运行修复了它。想想看,你是否错过了gradle.properties文件中的android.useAndroidX=true&
android.enableJetifier=true
?是否正在使用React原生项目?@JeelVankhede:我们在项目范围内的gradle.properties中都有它们。@sajadabbasi:no,此项目与React Native无关。@Jonik请验证您在任何模块中都没有任何支持库工件。您是否错过了gradle.properties文件中的android.useAndroidX=true&android.enableJetifier=true
?是否正在使用React Native项目?@JeelVankhede:我们在整个项目范围内都有这两个项目gradle.properties.@sajadabbasi:不,这个项目与React Native没有任何关系。@Jonik请确认您在任何模块中都没有任何支持库工件。事实上,这个问题比那更严重-现在我再次遇到它,例如当我运行/gradlew clean AssembleBase
,而/gradlew assembleBatarelease> 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.)