Dagger Hilt单例类出现NoClassDefFoundError问题求助
排查NoClassDefFoundError(找不到IAccessEnablerDelegate类)的方案
1. 依赖引入问题
- 确认Adobe Pass SDK的依赖是否正确添加到项目中:
- 若是maven依赖,检查Module级别的build.gradle里是否有完整声明,例如:
implementation 'com.adobe.adobepass:accessenabler:x.y.z' // 替换成实际版本号 - 若是本地aar/jar包,确认文件已放在libs目录,且build.gradle中配置了
implementation fileTree(dir: 'libs', include: ['*.jar', '*.aar'])或单独引入对应文件。 - 执行
./gradlew clean build --refresh-dependencies刷新依赖缓存,确保依赖同步到位。
- 若是maven依赖,检查Module级别的build.gradle里是否有完整声明,例如:
2. 混淆/打包问题
- 若开启了混淆,检查proguard规则是否遗漏Adobe Pass SDK的类,需添加保留规则:
-keep class com.adobe.adobepass.accessenabler.api.** { *; } -keep interface com.adobe.adobepass.accessenabler.api.** { *; } - 确认R8优化没有误删相关类,检查R8配置中未标记Adobe的类为可移除。
3. 多模块依赖与类加载问题
- 若项目是多模块结构,确认包含
IAccessEnablerDelegate的依赖已传递到ViewModel所在模块——要么ViewModel模块直接引入SDK依赖,要么依赖包含SDK的模块。 - 排查是否存在类加载器冲突:比如不同模块引入了不同版本的Adobe SDK,统一所有模块的SDK版本即可。
4. Hilt配置与注入问题
- 确认Hilt配置完整:Application类是否加了
@HiltAndroidApp注解,AndroidManifest里是否注册了该Application。 - 检查
AccessEnablerDelegate的继承关系:确认它确实正确继承了IAccessEnablerDelegate,包名、类名没有拼写错误。 - 尝试直接注入
AdobePassAuthentication而非Provider<AdobePassAuthentication>,排除Provider注入时的类加载异常。
5. 构建变体与缓存问题
- 检查当前运行的构建变体(debug/release)是否正确引入了SDK依赖,避免部分变体未配置依赖的情况。
- 执行
./gradlew clean清理构建缓存,再重新构建运行,排除旧缓存产物导致的类缺失。
内容的提问来源于stack exchange,提问作者WISHY
相关产品推荐
相关产品推荐

