4

我使用Google的下載庫進行擴展包下載,通過'Android SDK'管理器分發。使用Eclipse/Ant進行構建還沒有遷移到AS/Gradle - 但任何解決方案都有幫助。編譯谷歌下載庫調用API 23 Android Marshmallow

在API 23中,Apache HTTP消失了。我已經實施了一個解決方法來讓Google的LVL編譯。 (Lvl library and android marshmallow

但下載庫是一個更大的野獸來解決和不知道我真的想修復谷歌的代碼 - 可能只是寫我自己的,如果有必要。

有誰知道一個方便的「放入」(-ish)替換庫或適當的解決方法嗎?

~~

編譯爲 'com.google.android.vending.expansion.downloader.impl.AndroidHttpClient'

進口org.apache.http.Header不可用進口的錯誤; import org.apache.http.HttpEntity; import org.apache.http.HttpEntityEnclosingRequest; import org.apache.http.HttpException; import org.apache.http.HttpHost; import org.apache.http.HttpRequest; import org.apache.http.HttpRequestInterceptor; import org.apache.http.HttpResponse; import org.apache.http.client.ClientProtocolException; import org.apache.http.client.HttpClient; import org.apache.http.client.ResponseHandler; import org.apache.http.client.methods.HttpUriRequest; import org.apache.http.client.params.HttpClientParams; import org.apache.http.client.protocol.ClientContext; import org.apache.http.conn.ClientConnectionManager; import org.apache.http.conn.scheme.PlainSocketFactory; import org.apache.http.conn.scheme.Scheme; import org.apache.http.conn.scheme.SchemeRegistry; import org.apache.http.conn.scheme.SocketFactory; import org.apache.http.conn.ssl.SSLSocketFactory; import org.apache.http.entity.AbstractHttpEntity; import org.apache.http.entity.ByteArrayEntity; import org.apache.http.impl.client.DefaultHttpClient; import org.apache.http.impl.client.RequestWrapper; import org.apache.http.impl.conn.tsccm.ThreadSafeClientConnManager; import org.apache.http.params.BasicHttpParams; import org.apache.http.params.HttpConnectionParams; import org.apache.http.params.HttpParams; import org.apache.http.params.HttpProtocolParams; import org.apache.http.protocol.BasicHttpContext; import org.apache.http.protocol.BasicHttpProcessor; import org.apache.http.protocol.HttpContext;

+0

嗨你有解決它嗎?真的令人沮喪的是,任務幾乎完成,並被卡在這一點,我們不能使用他們自己的庫因爲他們使它與android 6發射過時,哇...! –

+0

坦率地說,我對許多API 22到23的遷移問題感到沮喪 - 這個apache的東西,dex方法的限制,權限的改變等等。於是我暫停了這個努力,並且把我的應用程序留在API 22中。 (從頭開始,我的IOS項目遠遠更容易遷移,但唉,這是比較蘋果和某種非蘋果水果) – DevByStarlight

回答

3
好的,有點github搜索,並找到了解決方案。具有諷刺意味的是,它也在stackoverflow中提到 - 我只是沒有在我的搜索中使用正確的關鍵字。 所以,如果你碰巧到達這裏,然後反彈到SMarek的問題/答案/解決方案,並給出答案+1。 解決方案:(http://stackoverflow.com/q/32178854/735533) 庫:(https:// github。COM/smarek/HttpClient的-機器人)

編輯:

注:截至2015年10月26日的,SMarek的圖書館上面並沒有完全成功打造爲-是

同時,事實證明,對於Ant用戶來說,有一種「更容易」的插入式解決方案來代替Gradle用戶的「usesLibrary org.apache.http.legacy」選項。

  • 複製SDK/platforms/android-23/optional/org.apache.http.legacy.jar到應用程序的目錄./libs
  • (並添加罐子到構建路徑的類路徑等)
  • 然後添加以下的ProGuard

    -keep class org.apache.http.** { *; }
    -dontwarn org.apache.http.**
    -dontwarn android.net.**

注意:android.net'dontwarn'將掩蓋OpenSSL調用(「android.net.http.SslCertificate」)。在我的情況下,它來自WebKit,我沒有使用(雖然第三方庫可能)

不幸的是,它推動我的應用超過了65k的限制。從來沒有悶的時候。

+0

「從來沒有沉悶的時刻「xD(哦,並感謝你的偉大答案!) – Rick77