【发布时间】:2017-05-24 20:51:01
【问题描述】:
我正在使用 Android Volley 网络库,在我添加 Twilio 客户端 SDK 之前,该库在调试 + 发布模式下运行良好。现在它在调试模式下可以正常工作,但在发布模式下会抛出此错误
E/Volley: [105358] NetworkDispatcher.run: Unhandled exception java.lang.RuntimeException: Stub!
java.lang.RuntimeException: Stub!
at org.apache.a.h.<init>(SourceFile:6)
at com.android.volley.toolbox.HurlStack.performRequest(SourceFile:109)
at com.android.volley.toolbox.BasicNetwork.performRequest(SourceFile:97)
at com.android.volley.NetworkDispatcher.run(SourceFile:114)
取自Android volley string reqest的error接口的日志
01-10 16:42:27.330 522-522/? D/LOGINACTIVITY: java.lang.RuntimeException: Stub!-java.lang.RuntimeException: Stub!-java.lang.RuntimeException: Stub!
已经寻找了相同的内容并得到了一些回复,他们要求将JUint 保留在依赖项列表的顶部。错误仍然存在。任何形式的帮助将不胜感激。 TIA
更新 1:
添加代码库
StringRequest strReq = new StringRequest(Request.Method.POST,
AppConfig.URL_LOGIN, new Response.Listener<String>() {
@Override
public void onResponse(String response) {
....
}
}, new Response.ErrorListener() {
@Override
public void onErrorResponse(VolleyError error) {
Log.d("LOGINACTIVITY", error.getLocalizedMessage() + "-" + error.getMessage() + "-" + error.getCause());
}
}) {
@Override
protected Map<String, String> getParams() {
// Posting parameters to login url
Map<String, String> params = new HashMap<String, String>();
params.put("email", email);
params.put("password", password);
return params;
}
};
// Adding request to request queue
strReq.setShouldCache(false);
strReq.setRetryPolicy(new DefaultRetryPolicy(AppConfig.DEFAULT_RETRY_TIME, DefaultRetryPolicy.DEFAULT_MAX_RETRIES, DefaultRetryPolicy.DEFAULT_BACKOFF_MULT));
AppController.getInstance().addToRequestQueue(strReq, tag_string_req);
更新 2:
添加了用例
- 应用启动并请求用户允许位置、短信读取等权限..
- 一旦用户同意这些权限集,用户就可以输入电子邮件 ID 和密码。
- Email-id 和密码是通过 getParam() 传递的参数。
- 当通过 volley StringRequest 请求以下内容时,它最终会转到“OnErrorResponse”,其中错误消息是“java.lang.RuntimeException: Stub!”
更新 3:
添加了Proguard规则
# Twilio Client
-keep class com.twilio.** { *; }
# Apache HttpClient
-dontwarn org.apache.http.**
-keepattributes InnerClasses
-keep public class android.net.http.SslError
-keep public class android.webkit.WebViewClient
-dontwarn android.webkit.WebView
-dontwarn android.net.http.SslError
-dontwarn android.webkit.WebViewClient
-keepattributes EnclosingMethod
【问题讨论】:
-
能否请您发布代码,您的应用程序崩溃的地方
-
它没有崩溃,而是每次都会触发错误界面。贴出代码
-
@VictorPetrovski 请检查更新后的问题
-
嗨,您目前在哪里尝试运行您的应用程序?设备还是模拟器?
-
@MarcosPlacona 嗨,我正在设备上运行它
标签: android android-volley twilio proguard