如何在 Eclipse 中使用 Legacy Apache 以支持 Android M

Posted

技术标签:

【中文标题】如何在 Eclipse 中使用 Legacy Apache 以支持 Android M【英文标题】:How to use Legacy Apache in Eclipse in order to support Android M 【发布时间】:2015-09-01 09:43:07 【问题描述】:

android M 上,Google 已经完全移除了对 Apache HTTP 客户端的支持。

这也可能是许多应用在 Android M 上崩溃的原因。

来自 Google 开发资源:

此预览版移除了对 Apache HTTP 客户端的支持。如果你的应用 正在使用此客户端并针对 Android 2.3(API 级别 9)或更高版本, 改用 HttpURLConnection 类。这个API更高效 因为它通过透明压缩减少了网络使用,并且 响应缓存,并最大限度地降低功耗。继续使用 Apache HTTP API,您必须首先声明以下内容 build.gradle 文件中的编译时依赖项:

android  useLibrary 'org.apache.http.legacy' 

Android 正在从 OpenSSL 迁移到 BoringSSL 库。如果您使用的是 Android NDK 您的应用程序,不要链接到不是 NDK API 的一部分,例如 libcrypto.so 和 libssl.so。这些 库不是公共 API,可能会更改或中断,恕不另行通知 跨版本和设备。此外,您可能会暴露于 安全漏洞。相反,修改您的本机代码以调用 Java 加密 API 通过 JNI 或静态链接到 您选择的密码库。

我正在使用Eclipse,但我没有Gradle,有什么解决方法吗?

我确实需要快速更新应用,但我现在无法将其移植到 Android Studio

【问题讨论】:

这可能是个问题,Eclipse ADT 现在已被弃用。 Android 团队不会对 Eclipse 进行任何此类更改。但是,您可以手动将 HttpClient 库添加到您的应用中,看看会发生什么。 @Knossos 它应该会在年底之前获得更新,然后它将不再受支持(至少从我读过的内容来看),试试吧,ty 所以我花了几个小时通过一个新的 HttpClient jar 放在我的库中进行升级(因为一切都被弃用了),然后遇到了这个错误。谷歌要了我的命。 【参考方案1】:

找到Android/Sdk/platforms/android-23/optional中的org.apache.http.legacy.jar,将其添加到您的依赖项中。

【讨论】:

比我想象的要容易得多:P Ty!最后一个问题是 100% 确定:我在运行最新版本的 Android 6.0 的模拟器上尝试了我的应用程序,它运行良好,这意味着在真实设备上应用程序将以相同的方式运行,对吧? (我的意思是,使用 org.apache.http.legacy.jar 库不会有问题) 我真的不能为你保证,即使我在Android studio上使用它我也有同样的疑问 Ty 很多 :) 明天我会在装有 Android M 的真实设备上试用它,所以我会确定! 你能告诉我如何将它添加为对 Eclipse 的依赖吗? @wit221 在你的 libs 文件夹中拖动 org.apache.http.legacy.jar 就完成了!

以上是关于如何在 Eclipse 中使用 Legacy Apache 以支持 Android M的主要内容,如果未能解决你的问题,请参考以下文章

eclipse缺少org.apache.http.legacy的解决办法

Eclipse 用SpringIDE的Spring Legacy project导入时pom.xml报错

如何使用 Legacy OpenGL 绘制不同颜色的线条?

Android打包问题:resources.ap_不存在

Legacy BIOS Boot 是如何启动或引导的

如何通过 BigQuery 连接将 use_legacy_sql=False 传递给 Airflow DAG 中的 SqlSensor?