如何修复'android.support.design.widget'无法安全重写的构建错误?
解决Jetifier无法重写android.support.design.widget字符串字面量的问题
问题原因
错误提示说明项目中存在硬编码android.support.design.widget包名的依赖库,这类库通常通过反射调用Support库组件,Jetifier自动转换工具无法安全修改字符串字面量,导致转换失败。从你的配置来看,核心问题来自老旧的com.github.hani-momanii:SuperNova-Emoji:1.1库,同时根build.gradle也存在配置错误。
解决方案
1. 修复根build.gradle的错误配置
根build.gradle的classpath仅用于配置Gradle插件,不应添加普通依赖库,移除以下错误行:
classpath 'com.github.hani-momanii:SuperNova-Emoji:1.1'
修改后的根build.gradle buildscript部分:
buildscript { repositories { maven { url 'https://jitpack.io' } google() mavenCentral() gradlePluginPortal() jcenter() } dependencies { classpath 'com.android.tools.build:gradle:7.2.2' classpath 'com.google.gms:google-services:4.3.10' classpath 'gradle.plugin.com.onesignal:onesignal-gradle-plugin:[0.12.10, 0.99.99]' } }
2. 替换老旧的SuperNova-Emoji库
com.github.hani-momanii:SuperNova-Emoji:1.1是多年未更新的库,完全基于Support库,无AndroidX适配。你有两个选择:
- 方案A:改用官方AndroidX Emoji库
移除旧库引用,完善官方Emoji支持:// 移除旧库 // implementation 'com.github.hani-momanii:SuperNova-Emoji:1.1' // 完善AndroidX Emoji依赖 implementation 'androidx.emoji:emoji:1.2.0' implementation 'androidx.emoji:emoji-appcompat:1.2.0' implementation 'androidx.emoji:emoji-bundled:1.2.0' - 方案B:使用社区适配的AndroidX版本
若需保留原库功能,可使用社区fork的适配版本:implementation 'com.github.varunest:SuperNova-Emoji:2.0'
3. 排查其他潜在老旧依赖
检查以下可能未适配AndroidX的库,尝试更新或替换:
com.github.OMARIHAMZA:StoryView:1.0.2-alpha:更新至最新版本,或替换为AndroidX兼容的故事视图库com.github.sharish:ShimmerRecyclerView:v1.3:升级到v1.4及以上的AndroidX适配版本
4. 彻底清理并同步项目
执行命令清理项目缓存:
./gradlew clean ./gradlew build --refresh-dependencies
之后在Android Studio中点击「Sync Project with Gradle Files」重新同步。
5. 确认Jetifier配置有效性
确保gradle.properties中核心配置正确:
android.useAndroidX=true android.enableJetifier=true
内容的提问来源于stack exchange,提问作者KING
相关产品推荐
相关产品推荐

