gpt4 book ai didi

android - 目标 API 和 minSDK 的目的是什么

转载 作者:塔克拉玛干 更新时间:2023-11-02 22:50:10 24 4
gpt4 key购买 nike

有人可以向我解释一下项目目标和最小 SDK 之间的区别吗?我希望我的应用程序能够在 Donut 设备上运行,而我构建的目标为 7 的 APK 运行良好。当我在 4 (1.6) 的 Android list 中设置明确的最小 SDK 时,编译器对我提示说目标超出了最小值。我将目标重置为 4 只是为了看看会发生什么,现在我遇到了编译器错误。一个例子是 android.app.Service 中的 START_NOT_STICKY 常量。它在 API 级别 4 中不存在,但在 API 级别 7 中存在。Service.onStartCommand() 也是如此。在 API 级别 7 中,您需要明确覆盖此方法,而在 API 级别 4 中则不需要。

尽管如此,为什么该应用程序仍能在 1.6 中运行?当关联的 API 级别不知道时,1.6 怎么知道如何使用 SERVICE_NOT_STICKY?

最佳答案

如果您想使用一些新奇的功能,但也想保持向后兼容性,这就是 targetSdkVersion 和 minSdkVersion 发挥作用的地方。

为了保持向后兼容性,您需要谨慎对待 minSdkVersion 以上的每个新 API。即通过反射或使用 Build.VERSION.SDK_INT 仔细检查您是否可以访问它们.如果您不这样做,您的应用程序将崩溃并烧毁,因为它找不到您尝试使用的 API。

您还需要阅读有关已更改 API(即 Service .onStartCommand(..))的每一行文档,以便您可以以向后兼容的方式正确处理它获取的每条数据。

关于常量,它们很可能作为字符串/整数编译到您的代码中,当旧版本得到一个未知数时,它只是忽略它。然而,这是一个理论,因此您应该在广泛使用它之前对其进行测试。

此外,据我所知,系统不会检查 minSdkVersion 或 targetSdkVersion。只有 Android Market 可以做到这一点。因此,如果您获得了一些不应该在您的设备上运行的应用程序,并且您仍然尝试使用它们,那么再次崩溃并刻录。

关于android - 目标 API 和 minSDK 的目的是什么,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/2755598/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com