【问题标题】:Does DefaultHttpClient still work running on Android 6?DefaultHttpClient 是否仍然可以在 Android 6 上运行?
【发布时间】:2015-10-07 09:33:49
【问题描述】:

离开 API22 上的目标并在 Android 6 平台设备上运行应用程序,我看到 DefaultHttpClient 仍在工作,即使新平台不支持它。

这怎么可能,它在兼容模式下工作吗?

【问题讨论】:

标签: android apk androidhttpclient android-6.0-marshmallow android-compatibility


【解决方案1】:

它不受支持并不意味着它已被删除。在代码中,您经常会看到“已弃用”的函数。这些是不受支持的功能,但故意没有被删除。

在这种情况下,您将使用 Android API22 库中的功能。为了保留以前 API 的向后兼容性功能,几乎从未完全从实际的 Android 环境中删除。

在使用 API 级别 22 编译某些内容时,APK 实际上会包含该库的部分内容。在这种情况下,这意味着来自 API22 的 DefaultHttpClient 实际上包含在您的应用程序中。它不使用手机上(不是)的版本。您的应用中要包含哪些部分取决于:

android {
    compileSdkVersion 23
    buildToolsVersion "23.0.0"

    defaultConfig {
        minSdkVersion 17
        targetSdkVersion 23
    }
}

API 级别 23 中缺少但在级别 17 中可用的所有内容都将包含在您的应用中。

【讨论】:

  • 我认为应该强调几乎从来没有。我已经看到实际上从 SDK 中删除了一些方法/类(例如 android.provider.Browser.BookmarkColumns),如果它在某些时候发生在实际设备中,我不会感到惊讶,尽管我确信他们会有一个很好的理由这样做。在使用已弃用的东西时,最好尝试遵循 API 更改并正确测试应用程序。
  • @Zharf 添加了重点 ;)
  • 但我的实际 targetSdkVersion 设置为 22 而不是 23,我不确定缺少的 DefaultHttpClient 是否在 APK 中链接并在运行时使用。你有一些关于编译 APK 的文档链接吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2014-08-09
  • 1970-01-01
  • 1970-01-01
  • 2018-07-04
  • 2021-01-03
  • 2011-01-05
相关资源
最近更新 更多