समस्या:ProGuard (Azure मोबाइल सेवाओं) के साथ org.apache.http.legacy कैसे काम करें?
मैं एंड्रॉइड मोबाइल सेवाओं का उपयोग कर रहा हूं, जो एंड्रॉइडhttpclient पर निर्भर करता है।
संदर्भ org.apache.http.legacy सभी समस्याओं का समाधान करता है और ऐप ठीक ठीक चलता है। हालांकि, प्रोजेक्ट के साथ, मैं मुद्दों में भाग लेता रहता हूं।
समस्या दो परिदृश्यों में निभाती है। अगर मैं निर्यात चेकबॉक्स चेक करता हूं (जेव बिल्ड पथ में), मुझे 'स्टब!' मिलता है अपवाद के रूप में उम्मीद (नीचे चर्चा को देखें) (स्क्रीनशॉट देखें जिसके लिए मैं के बारे में बात कर रहा हूँ चेकबॉक्स)
प्रकार के क्रम दुर्घटना: "स्टब":
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)
यदि फिर भी, मैं चेकबॉक्स को अनचेक करता हूं (जैसा कि सुझाया गया है - नीचे चर्चा देखें), मुझे मिलता है और AbstractMethodError अपवाद।
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.**
किसी और को इस में चलाने की है और यह पता लगा लिया गया है?
सुनिश्चित नहीं हैं कि उपकरणों का उपयोग कर रहे बनाते हैं लेकिन सामान्य शब्दों में, अपने प्रोजेक्ट में ठूंठ पुस्तकालय लिंक न करें। एक प्रदत्त निर्भरता के रूप में बस इसके खिलाफ निर्माण करें। –
@ केविन क्रुमविइड यह एक चीज है, org.apache.http.legacy को स्टब लाइब्रेरी नहीं माना जाता है ... एक और लिंक मिला है जो यह क्लासपाथ ऑर्डरिंग समस्या है (https://groups.google.com/forum/#!topic/robolectric/guRK1b8aEIQ), लेकिन चीजों को चारों ओर ले जाने में मदद नहीं लगती है। – rothschild86
हां, यह एक स्टब लाइब्रेरी माना जाता है। संपूर्ण एंड्रॉइड एसडीके एक स्टब लाइब्रेरी है। अपाचे HTTP अभी भी एपीआई 23 उपकरणों पर मौजूद है। इसके उपयोग को और हतोत्साहित करने के लिए इसे मुख्य स्टब लाइब्रेरी से बाहर ले जाया गया था। –