【问题标题】:Compiling Google Download Library targing API 23 Android Marshmallow编译针对 API 23 Android Marshmallow 的 Google 下载库
【发布时间】:2015-10-26 23:46:46
【问题描述】:

我正在使用 Google 的下载库来下载通过“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.HttpEntityEnclosureRequest; 导入 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 发布时让它过时了,哇...!
  • 坦率地说,我对一些 API 22 到 23 迁移问题感到沮丧 - 这个 apache 问题、dex 方法限制、权限更改等。因此我暂停了努力,我只是离开了我的应用程序在 API 22。(随后从头开始了一个新的 Android Studio / gradle 项目。(fwiw,我的 IOS 项目更容易迁移,但是,唉,这是将苹果与某种非苹果进行比较-水果)

标签: android android-6.0-marshmallow android-download-manager androidhttpclient


【解决方案1】:
好的,在github上搜索了一下,找到了解决方案。具有讽刺意味的是,stackoverflow 中也提到了它——我想我只是在搜索中没有使用正确的关键字。 因此,如果您碰巧来到这里,请继续阅读 SMarek 的问题/答案/解决方案并给出 +1 答案。 解决方案:(http://stackoverflow.com/q/32178854/735533) 库:(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(尽管 3rd 方库可能)

不幸的是,它使我的应用程序超过了 65k 限制。永远不会沉闷。

【讨论】:

  • “永远不会无聊”xD(哦,感谢您的出色回答!)
猜你喜欢
  • 1970-01-01
  • 2016-11-01
  • 2017-01-01
  • 2015-11-12
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-06-28
  • 2016-05-08
相关资源
最近更新 更多