1. 问题背景与现象描述
最近在Android项目迁移到AndroidX的过程中,遇到了一个典型的类加载失败错误。具体表现为:当我把项目中的com.android.support:appcompat-v7依赖替换为androidx.appcompat:appcompat后,应用启动时直接崩溃,报错信息如下:
code复制java.lang.RuntimeException: Unable to instantiate activity ComponentInfo{com.xxx.xxx/com.xxx.xxx.Activity}: java.lang.ClassNotFoundException: Didn't find class "com.xxx.xxx.Activity" on path: DexPathList[[zip file "/data/app/~~baaKkw-87dI4m8cV_WF1fg==/com.xxx.xxx-KfCiNYkMd3T_0yXDcKpSWA==/base.apk"],nativeLibraryDirectories=[/data/app/~~baaKkw-87dI4m8cV_WF1fg==/com.xxx.xxx-KfCiNYkMd3T_0yXDcKpSWA==/lib/arm64, /data/app/~~baaKkw-87dI4m8cV_WF1fg==/com.xxx.xxx-
这个错误表面上看是找不到Activity类,但实际上背后隐藏着更深层次的问题。经过排查,发现项目中存在混合引用的情况:主工程已经迁移到AndroidX(使用androidx.appcompat.app.AppCompatActivity),但依赖的某个aar库仍然在使用旧的support库(android.support.v7.app.AppCompatActivity)。
需要模型API调用? 免费领10W Token,多模型网关一键接入 Claude、DeepSeek 等主流模型。
2. 问题根源分析
2.1 AndroidX与Support库的兼容性问题
AndroidX是Android对原始Support库的重构版本,两者在功能上是等效的,但包名完全不同。当项目中同时存在两种引用时,就会导致类加载冲突。具体到我们的案例:
- 主工程代码:
java复制import androidx.appco
