添加依赖后Android Jetifier转换失败问题求助
解决Jetifier转换common-31.4.2.jar失败的构建错误
问题本质
该错误是由于Jetifier尝试转换com.android.tools:common:31.4.2时,发现该工件包含硬编码的android.support.design.widget字符串字面量。这类引用无法被Jetifier安全重写,通常是因为库使用了反射或注解处理器,依赖硬编码的旧Support包路径。
解决方案
1. 排除特定依赖的Jetifier转换
在项目根目录的gradle.properties中添加配置,指定不对com.android.tools:common进行Jetify转换:
android.jetifier.blacklist=com.android.tools:common
如果只想针对特定版本排除:
android.jetifier.blacklist=com.android.tools:common:31.4.2
2. 升级间接依赖到AndroidX兼容版本
先定位引入com.android.tools:common:31.4.2的来源,使用Gradle命令查看依赖树:
./gradlew app:dependencies --configuration gcmDebugUnitTestCompileClasspath
找到依赖该jar的父依赖,将其升级到最新版本——新版本通常已适配AndroidX,无需Jetifier转换。
3. 全局禁用Jetifier(最后手段)
若上述方法无效,可全局关闭Jetifier,但需注意这可能导致其他旧Support库依赖出现兼容性问题:
在gradle.properties中修改:
android.enableJetifier=false
注意事项
- 排除Jetifier后,需确认
com.android.tools:common本身不会因依赖旧Support包引发运行时错误。 - 升级依赖时,需验证新版本与项目其他依赖的兼容性,避免引入新冲突。
内容的提问来源于stack exchange,提问作者Reza
相关产品推荐
相关产品推荐

