在做七牛云图片上传时,报NoSuchMethodError异常,奇怪的是在Android7.0不报错,Android8.0和9.0报错,一致怀疑android版本带来的问题,猜测是图片路径的问题,结果走了很多弯路,最后确定路径没问题,就去好好看了看异常,有okhttp3字样,想着是不是项目里面依赖okhttp3的三方版本不一样结果导致NoSuchMethodError呢?说干就干,立马就进行尝试,果然是这问题;
同时感谢这位大佬的文章:https://blog.csdn.net/jxm007love/article/details/80748578
java.lang.NoSuchMethodError: No static method get(Ljava/lang/String;)Lokhttp3/MediaType;
in class Lokhttp3/MediaType; or its super classes (declaration of 'okhttp3.MediaType' appears
in /data/app/com.bgtnetwork.bgt-qGrsoPNkxgvwKPtYRFC7Vw==/base.apk:classes4.dex)
解决方法:
dependencies {
//直接指定okhttp的版本
implementation 'com.qiniu:qiniu-android-sdk:7.3.+'
//使用maven依赖方式,不使用jar包
implementation 'com.squareup.okhttp3:okhttp:3.11.0'
}
ps:2019.12.27更新,感谢Destiny提供的新问题,正常运行没问题,打包就报错,错误如图
结过追踪查找,最后确认是因为混淆的问题(debug包他没有混淆,所以没问题),在混淆文件里对报错的那个包进行了keep处理,成功解决。
-keep class com.qiniu.pili.droid.shortvideo.muxer.** { *; }
给自己做个笔记的同时也希望能帮助到别人,喜欢的点个关注,随时沟通探讨技术。
网友评论