Das Problem:Wie kann org.apache.http.legacy mit ProGuard (azure mobile services) funktionieren?
Ich benutze Android mobile Dienste, die auf androidhttpclient beruht.
Referenzieren org.apache.http.legacy behebt alle Probleme und die App läuft einwandfrei. Mit Progress geht es aber immer wieder um Probleme.
Das Problem tritt in zwei Szenarien auf. Wenn ich das Export-Kontrollkästchen aktiviere (im Jave-Build-Pfad), bekomme ich einen "Stub!" Ausnahme wie erwartet (siehe Diskussion unten) (siehe Screenshot für die Checkbox ich spreche)
Die Runtime-Crash vom Typ: "Stub":
java.lang.RuntimeException: Unable to start activity ComponentInfo{com.stuffd/com.stuffd.MainActivity}: java.lang.RuntimeException: Stub!
at android.app.ActivityThread.performLaunchActivity(ActivityThread.java:2345)
at android.app.ActivityThread.handleLaunchActivity(ActivityThread.java:2405)
at android.app.ActivityThread.access$800(ActivityThread.java:149)
at android.app.ActivityThread$H.handleMessage(ActivityThread.java:1324)
at android.os.Handler.dispatchMessage(Handler.java:102)
at android.os.Looper.loop(Looper.java:211)
at android.app.ActivityThread.main(ActivityThread.java:5317)
at java.lang.reflect.Method.invoke(Method.java)
at java.lang.reflect.Method.invoke(Method.java:372)
at com.android.internal.os.ZygoteInit$MethodAndArgsCaller.run(ZygoteInit.java:1016)
at com.android.internal.os.ZygoteInit.main(ZygoteInit.java:811)
Caused by: java.lang.RuntimeException: Stub!
at org.apache.http.message.AbstractHttpMessage.(AbstractHttpMessage.java:7)
at org.apache.http.client.methods.HttpRequestBase.(HttpRequestBase.java:7)
at org.apache.http.client.methods.HttpGet.(HttpGet.java:8)
at com.microsoft.windowsazure.mobileservices.table.MobileServiceJsonTable.executeGetRecords(MobileServiceJsonTable.java:952)
at com.microsoft.windowsazure.mobileservices.table.MobileServiceJsonTable.executeUrlQuery(MobileServiceJsonTable.java:183)
at com.microsoft.windowsazure.mobileservices.table.MobileServiceJsonTable.execute(MobileServiceJsonTable.java:160)
at com.microsoft.windowsazure.mobileservices.table.MobileServiceTable.execute(MobileServiceTable.java:158)
at com.microsoft.windowsazure.mobileservices.table.MobileServiceTable.execute(MobileServiceTable.java:249)
at com.microsoft.windowsazure.mobileservices.table.query.ExecutableQuery.execute(ExecutableQuery.java:101)
Wenn jedoch Ich habe das Kontrollkästchen deaktiviert (wie vorgeschlagen - siehe unten), bekomme ich und AbstractMethodError Ausnahme.
java.lang.RuntimeException: An error occured while executing doInBackground()
at android.os.AsyncTask$3.done(AsyncTask.java:300)
at java.util.concurrent.FutureTask.finishCompletion(FutureTask.java:355)
at java.util.concurrent.FutureTask.setException(FutureTask.java:222)
at java.util.concurrent.FutureTask.run(FutureTask.java:242)
at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1112)
at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:587)
at java.lang.Thread.run(Thread.java:811)
Caused by: java.lang.AbstractMethodError: abstract method "java.lang.String org.apache.http.client.methods.HttpRequestBase.getMethod()"
at android.net.http.AndroidHttpClient.getMethod(AndroidHttpClient.java:283)
at android.net.http.AndroidHttpClient.execute(AndroidHttpClient.java:301)
proguard config:
-dontwarn org.apache.http.**
-dontwarn android.net.http.**
-dontwarn com.microsoft.windowsazure.mobileservices.**
Hat jemand in diesem Lauf und hat es herausgefunden?
nicht sicher, was bauen Werkzeuge, die Sie verwenden, aber im Allgemeinen, verknüpfen die Stub-Bibliothek in Ihr Projekt. Bauen Sie dagegen als bereitgestellte Abhängigkeit auf. –
@KevinKrumwiede das ist eine Sache, org.apache.http.legacy sollte nicht eine Stub-Bibliothek sein ... fand einen anderen Link, der darauf hinweist, dass es ein Klassenpfad-Bestellproblem ist (https://groups.google.com/forum/#!topic/robolectric/guRK1b8aEIQ), aber Dinge zu bewegen scheint nicht zu helfen. – rothschild86
Ja, es soll eine Stub-Bibliothek sein. Das gesamte Android SDK ist eine Stub-Bibliothek. Apache HTTP ist weiterhin auf API 23-Geräten vorhanden. Es wurde gerade aus der Hauptstubbibliothek entfernt, um seine Verwendung weiter zu verhindern. –