Android volley proguard 抛出 java.lang.RuntimeException : Stub

标签 android android-volley twilio proguard

我正在使用 Android Volley 网络库,在我添加 Twilio 客户端 SDK 之前,它在调试 + Release模式下工作得非常好。现在它在 Debug模式下工作正常,但在 Release模式下抛出此错误

 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字符串reqiest的error接口(interface)的日志

01-10 16:42:27.330 522-522/? D/LOGINACTIVITY: java.lang.RuntimeException: Stub!-java.lang.RuntimeException: Stub!-java.lang.RuntimeException: Stub!

寻找相同的东西并在他们要求将 JUint 保持在依赖列表顶部的地方得到一些回应。错误仍然存​​在。任何形式的帮助将不胜感激。时间差

更新 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:

添加了用例

  1. 应用程序启动并请求用户允许位置、短信读取等权限..
  2. 一旦用户同意这些权限,用户就可以输入电子邮件 ID 和密码。
  3. Email-id 和 password 是通过 getParam() 传递的参数。
  4. 当通过 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

最佳答案

我会发布我的解决方案,以防有一天有人发现它有用。

“ stub !”的原因

This happens when using Proguard and the com.apache.http.legacy library in Android SDK 23.

As a matter of fact, all the methods are stubbed out to throw an exception with the message “Stub!” when you call them. How cute.

The real android.jar implementations live on the emulator, or your real Android device.

因此更改混淆器规则解决了以下问题,似乎 twilio 使用的是旧的 http 库或不确定的东西。

所以,这是我目前的解决方案

   # Twilio Client
 -keep class com.twilio.** { *; }

-keep class org.webrtc.** { *; }
-keep class com.twilio.video.** { *; }
-keepattributes InnerClasses

-keep class org.apache.http.** { *; }
-keep class org.apache.commons.codec.** { *; }
-keep class org.apache.commons.logging.** { *; }
-keep class android.net.compatibility.** { *; }
-keep class android.net.http.** { *; }
-keep class com.android.internal.http.multipart.** { *; }
-dontwarn org.apache.http.**
-dontwarn android.webkit.**

-keepattributes EnclosingMethod

来源Link to SO answer

关于Android volley proguard 抛出 java.lang.RuntimeException : Stub,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41567579/

相关文章:

java - WeatherLib -- Volley.jar 错误导致应用程序崩溃

javascript - 我如何可靠地获取特定参与者离开(和加入)twilio 房间的时间戳?

ios - 将模块添加到解析服务器

android - 在 Google 音乐播放器中播放歌曲时出现问题

android - 解析 UI 层次结构 XML 文件时出现 Ubuntu uiautomatorviewer 错误

android - 如何在android中使用Volley执行文件上传?

android - 如何使用 volley 库 android 创建圆角图像

python - 通过 Twilio 以短信形式发送 MySql 数据

Android gradle 问题 'Failed to resolve: support-core-ui'

android - 错误 : Theme. 半透明和 FLAG_ACTIVITY_REORDER_TO_FRONT