迁移到AndroidX后,"转换失败"错误

Joh*_*lly 11 android android-studio android-gradle-plugin

我正在使用Android Studio 3.2 Canary 14,我正在尝试迁移现有项目以供使用AndroidX.它来自https://developer.android.com/topic/libraries/support-library/androidx-rn,我必须设置android.enableJetifier=true(这是在我选择"Refactor to AndroidX .."选项时自动完成的).我还将目标API级别更新为28.还有其他人看到此问题吗?

无法使用Jetifier转换'/Users/jooreill/.gradle/caches/modules-2/files-2.1/com.google.firebase/firebase-perf/15.0.0/6e68f6e44b0c9d91756f903547ee3853349ae666/firebase-perf-15.0.0.aar' .原因:null.(有关更多详细信息,请使用--stacktrace运行.)要禁用Jetifier,请在gradle.properties文件中设置android.enableJetifier = false.

运行"清理"时发生上述错误.一般情况下,如果执行gradle同步,我会收到多个错误:

无法解析':app-instant @ debug/compileClasspath'的依赖关系:无法使用transform JetifyTransform转换文件'play-services-measurement-base-15.0.2.aar'以匹配属性{artifactType = jetified-aar}

小智 7

我在 Jenkins 上运行 assembleAndroidTest 时遇到了这个问题。最奇怪的是,这个任务在我的 Mac 终端上运行没有任何问题,但在 Jenkins 上失败了 -

Failed to transform file 'cucumber-java-1.2.5.jar' to match attributes {artifactType=processed-jar} using transform JetifyTransform
Run Code Online (Sandbox Code Playgroud)

几天来一直在寻找解决方案,并考虑了不同的建议 - 但没有一个有效。

最后,在 gradle.properties 中禁用 Jetifier 为我解决了这个问题。

android.enableJetifier=false
Run Code Online (Sandbox Code Playgroud)


小智 6

我能够通过从喷射中排除某个库来解决类似的问题,这可以通过添加到 gradle.properties 来完成:

android.jetifier.blacklist = ...
Run Code Online (Sandbox Code Playgroud)

请注意,此选项是作为临时解决方法添加到 Android Gradle 插件 3.3.0-rc01 中的。有关更多详细信息,请参阅https://issuetracker.google.com/issues/119135578#comment5。


irg*_*wer 5

对于那些在使用"Refactor to AndroidX ..."后遇到与Android Studio 3.2 Canary 15(或更高版本)相同问题的人:

我必须手动更新一些依赖项,即更改

    classpath 'io.fabric.tools:gradle:1.25.1'
Run Code Online (Sandbox Code Playgroud)

至

    classpath 'io.fabric.tools:gradle:1.27.0'
Run Code Online (Sandbox Code Playgroud)

在我的项目的build.gradle文件中.

如果您使用的是匕首,则必须升级到2.20或更高版本.

这是因为某些库尚未与AndroidX发行说明中的已知问题中提到的AndroidX重构兼容.