修改Android包名后出现ClassNotFoundException路径拼接错误如何解决
修复方案
该报错是包名修改不彻底导致新旧包名拼接出现异常路径,按以下步骤排查即可解决:
根因定位
你修改包名时仅更新了部分配置,旧包名com.utok.ph在残留配置中作为前缀和新包名quiznew.utok.ph拼接,最终生成了不存在的路径com.utok.ph.quiznew.utok.ph。
分步修复
- 检查app模块级
build.gradle文件,确认applicationId字段已完全修改为quiznew.utok.ph,无残留旧包名内容 - 检查
AndroidManifest.xml文件:- 根节点的
package属性需修改为quiznew.utok.ph - 所有四大组件(Activity/Service/BroadcastReceiver/ContentProvider)的
android:name属性,如果使用绝对路径写法需统一替换为新包名前缀,使用.类名的相对路径写法无需调整 - 排查所有自定义权限、
provider标签的android:authorities属性,清除残留的旧包名
- 根节点的
- 全局搜索项目内所有资源文件(
strings.xml、arrays.xml等),替换所有硬编码的旧包名字符串 - 全局搜索业务代码,替换所有非
BuildConfig.APPLICATION_ID引用的硬编码包名 - 清理构建缓存后重新打包:
执行命令:
或在Android Studio中点击./gradlew cleanBuild -> Clean Project,再执行Rebuild Project - 若使用了自定义
Application类,确认AndroidManifest.xml中application节点的android:name属性指向的类路径正确
特殊场景排查
如果执行上述步骤后问题仍存在,检查你接入的第三方SDK(推送、统计、分享类等)的初始化配置、插件配置项,是否还残留旧包名参数。
内容的提问来源于stack exchange,提问作者Clinton Canarias
相关产品推荐
相关产品推荐

