微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

依赖缺失但存在于 APK 中,如何?

如何解决依赖缺失但存在于 APK 中,如何?

我有一个 MyLocationService 库,它依赖于 huawei_location_service。里面我有 HMSLocationService 类,它是唯一一个使用 huawei_location_service 类的类,我使用 relfection 来访问那个班。意思是,如果我们在华为上运行应用程序并且如果有来自 huawei_location_service 的依赖,我会得到位置,否则不会。并且应用程序应该可以在非华为设备上完美运行,而不依赖于 huawei_location_service

因此,当我构建 MyLocationService.aar 时,我从它的 pom 文件删除huawei_location_service 依赖项。之后,我创建了一个新应用程序并添加了来自 MyLocationService.aar 的依赖项。当我使用命令gradlew app:dependencies检查依赖项时,我没有看到任何来自华为的依赖项,但是当我创建一个apk并对其进行分析时,在classes.dex中有来自{{1}的类}.

问题:怎么可能?还有其他方法可以实现我想要的吗?

附言我也分析了MyLocationService.aar,没有发现任何华为依赖。有没有其他方法可以检查*.aar文件的依赖关系而不是android studio的pom或分析工具?

解决方法

所以如果有人会误认为我,这个答案会有所帮助。

我在 classes.dex 中看到的存储库和类不是来自 hms 库。由于我在自定义类中有导入,因此导入的文本是我在 classes.dex 中看到 huawei 文件夹的原因。还要注意大小,你可以看到它们是 20 个字节。

所以我删除了导入,重新生成了我的库,创建了apk并对其进行了分析和woala,看不到huawei文件夹。

附言*.aars 不包含任何库,如果你不设置transitive=true。并且您需要在您自己的应用程序中添加您的库所需的依赖项。

P.S.S.如果您在本地或全局发布您的库,maven(Gradle 使用 maven)会创建元数据,即所谓的 POM 文件,作为识别库需要的所有依赖项的助手。

enter image description here

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。