1、环境:
android studio 2.1;
gradle 1.2.3;
2、异常:
java.lang.NoClassDefFoundError: org.apache.http.entity.mime.MultipartEntity
at com.umeng.socialize.net.utils.UClient.httpRequestPost(UClient.java:138)
at com.umeng.socialize.net.utils.UClient.execute(UClient.java:81)
at com.umeng.socialize.net.base.SocializeClient.execute(SocializeClient.java:28)
at com.umeng.socialize.controller.impl.b.a(ShareServiceImpl.java:731)
at com.umeng.socialize.controller.impl.b.a(ShareServiceImpl.java:74)
at com.umeng.socialize.controller.impl.b$4.a(ShareServiceImpl.java:632)
at com.umeng.socialize.controller.impl.b$4.doInBackground(ShareServiceImpl.java:612)
at com.umeng.socialize.common.UMAsyncTask$1.run(UMAsyncTask.java:61)
at android.os.Handler.handleCallback(Handler.java:733)
at android.os.Handler.dispatchMessage(Handler.java:95)
at android.os.Looper.loop(Looper.java:136)
at android.os.HandlerThread.run(HandlerThread.java:61)
3、说明:
org.apache.http.entity.mime.MultipartEntity位于httpmime-4.1.3.jar中(友盟分享里的包);
包已经添加到项目中如图所示;
按理说包已经添加进去了,为什么还会出现上述异常呢?
带着疑问我反复折腾项目!
4、本项目比较大,已经通过multidex进行分包:
5、这样解决的:
无用:尝试将build版本升级到24.0.1,gradle版本升级到2.1.0都不起作用,中途clean过几次;
有用:最后将httpmime-4.1.3.jar移除项目再重新添加,clean项目,运行到该功能处没再出现异常。
6、测试:
还原:将build版本和gradle版本等修改过的都恢复到最初(控制变量法);
操作:将httpmime-4.1.3.jar移除后,clean再运行,出现相同异常;又将其添加进项目后,clean再运行,正常。
7、结论:
根据测试结果,那意思就是说,这是android studio的坑吗?表面看着是把包添加进去了实际上却没有!