android - OkHttp3 类未找到异常但存在于 apk 的 dex 文件中
问题描述
我正在构建一个使用 okhttp 版本 3.10.0 的 android 库,它到目前为止工作。没有编译器问题,测试应用程序中的请求正常,一切都很好。一旦我想在另一个应用程序中包含构建的 aar 文件,我就会得到一个 ClassNotFoundException
Caused by: java.lang.ClassNotFoundException: Didn't find class "okhttp3.OkHttpClient" on path: DexPathList[...]
我已经尝试了我在网络上(在库项目和应用程序中)可以找到的任何 proguard 规则的所有可能组合,甚至禁用了 proguard 以确保它不是一些混淆或优化问题。
buildTypes {
release {
minifyEnabled false
useProguard false
}
debug {
minifyEnabled false
useProguard false
}
}
我还分析了android studio中构建的apk,并在apk的classes.dex文件的正确包中找到了我需要的类。所以我完全不知道什么会导致这个异常。
gradle 版本是 lib 中的 2.1.3 和应用程序中的 2.2.2。如果您需要更多信息,请告诉我,并提前致谢。
更新:将 OkHttp 包含为应用程序项目的单独依赖项就可以了。看起来类没有正确复制。它们以某种方式存在但无法使用/找到(这有意义吗?)。
解决方案
尝试重新启用 proguard 并将此规则添加到proguard-rules.pro
-keep class okhttp3.** { *; }
-dontwarn okhttp3.**
告诉我如果得到另一个ClassNotFoundException
推荐阅读
- python - Python 给出 ImportError: No module named sqlalchemy.util._collections in pycharm
- java - JavaFX:有对话窗口时的Platform.exit()
- python - 使用更有效的方法处理数据,例如 python 中的并行
- ios - Firebase 删除帐户以及 iOS 上的数据库和存储
- angular - Angular 6 mat-对话框验证
- javascript - 网络连接丢失时处理 Ajax
- android - Greendao 生成类 android 需要很多时间
- ignite - 新节点加入或释放时点燃集群卡住
- function - 没有参数类型的过程声明的行为是什么?
- amazon-web-services - 是否可以从 AWS 账户中检索角色 ARN 并使用变量引用它?