Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/design-patterns/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Android 目标API和minSDK的目的是什么_Android - Fatal编程技术网

Android 目标API和minSDK的目的是什么

Android 目标API和minSDK的目的是什么,android,Android,有人能给我解释一下项目目标和最小SDK之间的区别吗?我希望我的应用程序能在甜甜圈设备上运行,而我用目标7构建的APK运行得很好。当我在Android清单4(1.6)中设置了一个显式的最小SDK时,编译器向我抱怨目标超出了最小值。我将目标值重置为4,只是为了看看会发生什么,现在出现了编译器错误。例如android.app.Service中的START_NOT_STICKY常量。它不存在于API级别4中,但存在于API级别7中。Service.onStartCommand()也是如此。在API级别7

有人能给我解释一下项目目标和最小SDK之间的区别吗?我希望我的应用程序能在甜甜圈设备上运行,而我用目标7构建的APK运行得很好。当我在Android清单4(1.6)中设置了一个显式的最小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发挥作用的地方

为了保持向后兼容性,您需要谨慎对待Minsdk版本之上的每个新API。Ie通过使用反射或使用。如果不这样做,您的应用程序将崩溃并烧毁,因为它找不到您尝试使用的API

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

关于常量,它们很可能作为字符串/整数编译到代码中,当旧版本获得未知值时,它会忽略它。然而,这是一个理论,所以在广泛使用它之前,你应该先测试一下

此外,据我所知,系统不会检查minSdkVersion或targetSdkVersion。只有安卓市场能做到这一点。因此,如果你掌握了一些不应该在你的设备上运行的应用程序,而你仍然试图使用它们,那么再次崩溃并烧掉它们