[英]java.lang.RuntimeException: Stub! in Android with Mockito
[英]Android volley proguard throws java.lang.RuntimeException: Stub
我使用的是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字符串的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:
添加用例
更新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
如果某天有人覺得有用,我會發布我的解決方案。
在Android SDK 23中使用Proguard和com.apache.http.legacy庫時,會發生這種情況。
實際上,在調用它們時,所有方法都將被拋出錯誤消息“ Stub!”的異常。 真可愛。
真正的android.jar實現位於模擬器或您的真正Android設備上。
因此,更改proguard規則可以解決以下問題,好像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
來源鏈接至SO答案
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.