Android 启用progurd后,java.lang.NoSuchMethodError Lorg/apache/http/util/ByteArrayBuffer

Android 启用progurd后,java.lang.NoSuchMethodError Lorg/apache/http/util/ByteArrayBuffer,android,apache-httpclient-4.x,android-proguard,Android,Apache Httpclient 4.x,Android Proguard,我的应用程序正在崩溃,如下面的日志所示 我已经使用这些代码很长时间了,但现在它突然崩溃了 只有当我启用了progurd时,应用程序才会崩溃。如果不启用progurd,它就会工作 java.lang.NoSuchMethodError: No virtual method g([BII)V in class Lorg/apache/http/util/ByteArrayBuffer; or its super classes (declaration of 'org.apache.http.ut

我的应用程序正在崩溃,如下面的日志所示

我已经使用这些代码很长时间了,但现在它突然崩溃了

只有当我启用了progurd时,应用程序才会崩溃。如果不启用progurd,它就会工作

 java.lang.NoSuchMethodError: No virtual method g([BII)V in class Lorg/apache/http/util/ByteArrayBuffer; or its super classes (declaration of 'org.apache.http.util.ByteArrayBuffer' appears in /system/framework/org.apache.http.legacy.boot.jar)
     at android_support.bee.a(AbstractMultipartForm.java:55)
     at android_support.bee.<clinit>(AbstractMultipartForm.java:92)
     at android_support.bem.Iu(MultipartEntityBuilder.java:192)
     at android_support.bem.Iv(MultipartEntityBuilder.java:204)
     at android_support.bcx.mo(BaseUploadHttpRequest.java:119)
     at android_support.mp.b(HurlStack.java:245)
     at android_support.mp.a(HurlStack.java:219)
     at android_support.mp.a(HurlStack.java:97)
     at android_support.mi.c(BasicNetwork.java:131)
     at android_support.lz.processRequest(NetworkDispatcher.java:120)
     at android_support.lz.run(NetworkDispatcher.java:87)

我正在使用
实现文件('libs/httpclient-osgi-4.3.jar')
和volley
实现'com.android.volley:volley:1.1.0'
试试这个。Proguard应忽略外部库,因为外部库已被压缩

有时,proguard在重新压缩外部库时可能会导致错误

-keep class org.apache.** { *; }
-keep class org.apache.** { *; }
将上面添加到下面

-dontwarn org.apache.http.**
-keep class org.apache.** { *; } // add it here

请参阅:

首先从更新httpclient-osgi-4.3.jar到最新版本

然后修改progurd规则以保留类,如下所示

-dontwarn org.apache.http.**
-keep class org.apache.** { *; } // add it here
-keep class org.apache.** { *; }