首页 > 解决方案 > 为特定模块或依赖禁用 android.enableJetifier

问题描述

在我的以下设置中运行 Android Studio 3.2 gradle.properties

android.useAndroidX=true
android.enableJetifier=true

我有一个带有一些 C/Java 代码的本机项目。使用这些设置,编译将失败并显示以下错误消息:

org.gradle.api.artifacts.transform.ArtifactTransformException:无法使用转换 JetifyTransform 转换文件“android.jar”以匹配属性 {artifactType=processed-jar}
java.lang.RuntimeException:无法转换“C:\Android\sdk” \platforms\android-28\android.jar' 使用 Jetifier。

我相信它不喜欢我的 gradle 文件:

apply plugin: 'java'
...
dependencies {
   implementation files("${mySdkDir}/android.jar")
}

我知道我可以全局关闭enableJetifier,这确实会使这个错误消失。但是,我只想为这个特定的模块/依赖项禁用 jetifier。

如何设置enableJetifier=false原生/java 模块项目?

标签: androidgradleandroidx

解决方案


问题可能不是如何禁用模块的 Jetifier -

因为这是因为模块使用了错误的插件。

apply plugin: "com.android.application"
// apply plugin: "com.android.library"

android {
    ...
}

没有办法禁用模块的 Jetifier,因为它是一个项目范围的功能......所以解决这个问题的唯一方法是不要在块android.jar中明确列出。dependencies它甚至不打算被打包,因此它在那里没有丢失任何东西——它也不打算由 Jetifier 处理,这仅仅是将它声明为依赖项的结果。


推荐阅读