这两天打开as 出现红一片警告,提示
Cannot access 'androidx.activity.result.ActivityResultCaller' which is a supertype of 'com.xxxxx.SplashActivity'. Check your module classpath for missing or conflicting dependencies
Cannot access 'androidx.activity.result.ActivityResultRegistryOwner' which is a supertype of 'com.xxxxx.SplashActivity'. Check your module classpath for missing or conflicting dependencies
反复clean 工程无效,查看Git修改记录,最近也未对build.gradle 相关文件进行过修改,莫名其妙的错误,虽然知道是库文件的问题,但是却不知道是哪个文件引起的。Google查询了一下问题,有遇到过相同问题的,具体查看下面链接
android - Cannot access 'androidx.activity.result.ActivityResultCaller' - Stack Overflow
全网搜索问题的的答案,基本都是和上面这个帖子相关。
gradle 在加载依赖库时会加载最新的库,若库文件最新版本和老版本的结构有调整,必然会出现无法找到对应的类或者目录冲突等文件存在,或者包结构的问题。
但是在使用上面方法尝试去解决问题时,错误并未完全修复。在AS中打开报错类的Problems面板中 ,发现原有的两个错误 ActivityResultCaller消失了 ActivityResultRegistryOwner 还存在。
帖子中也有回复存在ActivityResultRegistryOwner 错误 问题,但解决方案无效。
尝试找到冲突或缺少的库。
通过命令 gradle 项目:dependencies > test.txt 导入到txt 中查看 依赖库 未果
搜索 ActivityResultRegistryOwner 类 发现
想到解决ActivityResultCaller 时导入了
implementation "androidx.activity:activity-ktx:1.2.0-alpha03"
查看AS中 导入的库包含的文件
没有 ActivityResultRegistryOwner 难怪报错 ,那直接导入 androidx.activity:activity:1.2.0 增加对应类是否能修复问题呢。
implementation "androidx.activity:activity:1.2.0"
导入依赖库,同步代码,问题修复。大片的红代码消失,编译正常。
查看AS中对应库文件内容
发现里面居然同时存在 上面问题中的两个缺失类。那是不是第二个导入的依赖库就能解决问题呢。注释掉
// implementation "androidx.activity:activity-ktx:1.2.0-alpha03" implementation "androidx.activity:activity:1.2.0" 同步代码,问题修复,运行代码,跑在手机上 App运行正常。问题解决!!!!!!! 啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊啊,准备下班!!!!!!!!