编译针对API 23 Android Marshmallow的Google下载库

5

我正在使用谷歌下载库作为“Android SDK”管理器分发的扩展包下载。由于尚未迁移到AS / Gradle,因此使用Eclipse / Ant进行构建 - 但任何解决方案都将有所帮助。

在API 23中,Apache HTTP消失了。我已经实施了一种解决方法来使Google的LVL编译。(Lvl library and android marshmallow

但是下载库是一个更大的难题,不确定是否真的想要修复Google的代码 - 如果必要,可能只需编写自己的代码。

有人知道方便的“插入式”(-ish)替换库或适当的解决方法吗?

~~

'com.google.android.vending.expansion.downloader.impl.AndroidHttpClient'中未提供的导入项编译错误

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


你好,你解决了吗?这真的很令人沮丧,任务几乎完成了,但卡在这一点上,因为我们不能使用他们自己的库,因为它已经过时了,随着Android 6的推出,哇...! - mfaisalhyder
坦白地说,我对许多API 22到23迁移问题感到沮丧 - 这个apache东西、dex方法限制、权限更改等等。因此,我暂停了这个努力,只是将我的应用程序留在API 22上。随后,我开始了一个全新的Android Studio / gradle项目。(顺便说一句,我的IOS项目要容易得多,但遗憾的是,这是将苹果与某种非苹果水果进行比较) - DevByStarlight
1个回答

3
好的,通过github搜索找到了解决方案。具有讽刺意味的是,在stackoverflow上也提到了这个问题——我想我在搜索时没有使用正确的关键词。
所以,如果你恰好到达这里,请跳到SMarek的问题/答案/解决方案,并给予+1的答案。
解决方案:(https://dev59.com/sI7ea4cB1Zd3GeqPAmWP) 库:(https://github.com/smarek/httpclient-android)
编辑:
注意:截至2015年10月26日,SMarek上面的库不能直接成功构建
与此同时,对于Ant用户来说,似乎有一个“更简单”的解决方案,可以代替gradle用户的“usesLibrary org.apache.http.legacy”选项。
  • SDK/platforms/android-23/optional/org.apache.http.legacy.jar复制到应用程序的./libs目录中
  • (并将jar添加到构建路径classpath等)
  • 然后在proguard中添加以下内容

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

注意:android.net 'dontwarn'将掩盖OpenSSL调用(“android.net.http.SslCertificate”)。在我的情况下,它来自我没有使用的WebKit(尽管第三方库可能会使用它)
不幸的是,它将我的应用程序推到了65k的限制之上。永远不会无聊。

永远不会无聊 xD(哦,谢谢你的好回答!) - Rick77

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接