- Java 双重比较
- java - 比较器与 Apache BeanComparator
- Objective-C 完成 block 导致额外的方法调用?
- database - RESTful URI 是否应该公开数据库主键?
我的应用程序正在崩溃,如下面的日志所示。
这些代码我用了很久,现在突然崩溃了。
应用程序只有在我启用 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)
Profurd 规则
-overloadaggressively
-useuniqueclassmembernames
-dontwarn org.apache.http.**
#-keep interface modules.** { *; }
#Crashlytics
#-keepattributes *Annotation*
#-keepattributes SourceFile,LineNumberTable
#-keep class com.crashlytics.** { *; }
#-dontwarn com.crashlytics.**
#end crashlytics
-dontpreverify
-repackageclasses 'android_spt'
-allowaccessmodification
-optimizations !code/simplification/arithmetic,!field/*,!class/merging/*
-keepattributes *Annotation*
-keep public class * extends android.app.Activity
-keep public class * extends android.app.Application
-keep public class * extends android.app.Service
-keep public class * extends android.content.BroadcastReceiver
-keep public class * extends android.content.ContentProvider
-keep public class * extends android.view.View {
public <init>(android.content.Context);
public <init>(android.content.Context, android.util.AttributeSet);
public <init>(android.content.Context, android.util.AttributeSet, int);
public void set*(...);
}
-keepclasseswithmembers class * {
public <init>(android.content.Context, android.util.AttributeSet);
}
-keepclasseswithmembers class * {
public <init>(android.content.Context, android.util.AttributeSet, int);
}
-keepclassmembers class * extends android.content.Context {
public void *(android.view.View);
public void *(android.view.MenuItem);
}
-keepclassmembers class * implements android.os.Parcelable {
static ** CREATOR;
}
-keepclassmembers class **.R$* {
public static <fields>;
}
-keepclassmembers class * {
@android.webkit.JavascriptInterface <methods>;
}
这是代码,我正在使用 volley 向服务器发送多部分数据,应用程序在 mBuilder.build();
public class BaseUploadHttpRequest<T> extends Request<T> {
private static final int TIMEOUT_RETRY_POLICY = 15000;
private static Map<String, String> mParams = new HashMap<String, String>();
private static Map<String, File> mFiles = new HashMap<String, File>();
private final Object deserializer;
private final Class<T> clazz;
private final Listener<T> listener;
private MultipartEntityBuilder mBuilder = MultipartEntityBuilder.create();
public BaseUploadHttpRequest(String url, Class<T> clazz, Map<String, String> params, Map<String, File> files, Listener<T> listener,
ErrorListener errorListener, Object deserializer) {
super(Method.POST, url, errorListener);
setRetryPolicy(new DefaultRetryPolicy(
TIMEOUT_RETRY_POLICY,
DefaultRetryPolicy.DEFAULT_MAX_RETRIES,
DefaultRetryPolicy.DEFAULT_BACKOFF_MULT));
this.clazz = clazz;
this.listener = listener;
this.deserializer = deserializer;
mFiles.putAll(files);
//mHeader.putAll(appendHeader);
mParams.putAll(params);
buildMultipartEntity();
}
@Override
public Map<String, String> getHeaders() throws AuthFailureError {
Map<String, String> headers = super.getHeaders();
if (headers == null
|| headers.equals(Collections.emptyMap())) {
headers = new HashMap<String, String>();
}
headers.put("Accept", "application/json");
return headers;
}
private void buildMultipartEntity() {
int count = 0;
for (String key : mFiles.keySet()) {
File file = mFiles.get(key);
String fileName = file.getName();
mBuilder.addBinaryBody(key, file, ContentType.create("image/jpeg"), fileName);
}
try {
for (String key : mParams.keySet()) {
mBuilder.addTextBody(key, mParams.get(key));
}
} catch (Exception e) {
VolleyLog.e("Exception");
}
mBuilder.setMode(HttpMultipartMode.BROWSER_COMPATIBLE);
mBuilder.setLaxMode().setBoundary("xx").setCharset(Charset.forName("UTF-8"));
}
@Override
public String getBodyContentType() {
return mBuilder.build().getContentType().getValue();
}
@Override
public byte[] getBody() throws AuthFailureError {
ByteArrayOutputStream bos = new ByteArrayOutputStream();
try {
HttpEntity httpEntity= mBuilder.build(); /// application crash our here
httpEntity.writeTo(bos);
} catch (IOException e) {
VolleyLog.e("IOException writing to ByteArrayOutputStream bos, building the multipart request.");
}
return bos.toByteArray();
}
@Override
protected void deliverResponse(T response) {
listener.onResponse(response);
}
}
我正在使用实现文件('libs/httpclient-osgi-4.3.jar')
和volley 实现'com.android.volley:volley:1.1.0'
最佳答案
试试这个。 Proguard 应该忽略外部库,因为外部库已经被压缩。
有时,proguard 会在再次重新压缩外部库时导致错误
-keep class org.apache.** { *; }
将上面添加到下面
-dontwarn org.apache.http.**
-keep class org.apache.** { *; } // add it here
关于android - 启用proguard后的java.lang.NoSuchMethodError Org/apache/http/util/ByteArrayBuffer,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48785697/
在 Tomcat 6/Ubuntu 12.04 上启动 Grails 2.1.0 应用程序时出现以下错误。 Error 500 - Internal Server Error. groovy.lang
在运行 Storm 拓扑时,我收到此错误。拓扑完美运行 5 分钟,没有任何错误,然后失败。我正在使用 Config.TOPOLOGY_TICK_TUPLE_FREQ_SECS as 300 sec i
我有一个 jsp 代码在其中一台机器上运行良好。但是当我复制到另一台机器时,我得到了这个 no such method found 异常。我是 Spring 的新手。有人可以解释我错过了什么吗? 以下
已关闭。此问题需要 debugging details 。目前不接受答案。 编辑问题以包含 desired behavior, a specific problem or error, and the
我的代码在下面给出了一个错误; Exception in thread "main" java.lang.NoSuchMethodError: com/myApp/Client.cypherCBC(L
我正在尝试一个 Restful web 服务示例,所以当我要访问 url 时,我遇到了异常 java.lang.NoSuchMethodError: jersey.repackaged.com.goo
我正在将一个 Spring web 项目转换为一个 Maven 项目,但我收到了这个错误: java.lang.NoSuchMethodError: org.jboss.logging.Logger.
在我的项目中,我有一个像这样的枚举: public enum MyEnum { FIRST(1), SECOND(2); private int value; private MyEnum(int v
我创建了这个简单的示例,用于读取 Linux 正常运行时间: public String getMachineUptime() throws IOException { String[] di
我正在使用 Eclipse,并且正在使用 Java。我的目标是使用 bogoSort 方法对 vector 进行排序在一个 vector (vectorExample)中适应我的 vector 类型,
我正在运行以下查询。它显示一条错误消息。如何解决这个错误? ListrouteList=null; List companyList = session.createS
我有以下模型类: @Entity @Table(name="user_content") @org.hibernate.annotations.NamedQueries({ @org.
我有那个错误。这是我的代码: GmailSettingsService service = new GmailSettingsService(APPLICATION_NAME, DOMAIN_NAME
实际上我在执行我的java程序时遇到了下面提到的错误 Exception in thread "pool-1-thread-1" java.lang.ClassCastException: jav
java.lang.ClassCastException: java.lang.Float cannot be cast to java.lang.String 我在以下代码中遇到此异常: Strin
我正在尝试从 linkedhashset 中检索随机元素。下面是我的代码,但它每次都给我异常。 private static void generateRandomUserId(Set userIds
我已经完成了 Android 中的代码: List spinnerArray = new ArrayList(); for (int i = 0; i item = (LinkedTreeMap)
这个问题已经有答案了: Explanation of ClassCastException in Java (12 个回答) 已关闭 6 年前。 我已经编写了 java 到 Json 的代码,同时从页
这个问题在这里已经有了答案: ClassCastException java.lang.Long cannot be cast to clojure.lang.IFn (4 个答案) 关闭 6 年前
我在运行时遇到问题来编译这段代码,这给我一个错误,java.lang.Integer 无法转换为 Java.lang.Double。如果有人帮助我更正此代码,我将非常高兴 double x; pu
我是一名优秀的程序员,十分优秀!