禁用特定模块或依赖的android.enableJetifier

l33*_*33t 9 android gradle androidx

使用以下设置运行Android Studio 3.2 gradle.properties:

android.useAndroidX=true
android.enableJetifier=true
Run Code Online (Sandbox Code Playgroud)

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

org.gradle.api.artifacts.transform.ArtifactTransformException:无法使用transform 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")
}
Run Code Online (Sandbox Code Playgroud)

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

如何设置enableJetifier=false本机/ java模块项目?

Mar*_*ler 1

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

因为这是由于使用了错误的模块插件造成的。

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

android {
    ...
}
Run Code Online (Sandbox Code Playgroud)

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