假设我有一个设备 A,并且我的应用程序编译了两次:第一次设置compileSDK=8,第二次设置compileSDK=22。
当我现在从 Android 系统调用函数时,系统是否有可能返回两个不同的值或对象?
我认为这是不可能的,因为这取决于设备上运行的系统,并且针对编译 SDK 的编译过程仅断言它有效 - 但我的一位同事表示,这可能会产生不同的输出。 (抱歉这里没有任何例子..)
编译版本只是告诉你的编译器哪些 android 类和函数可用。例如如果您尝试使用 v11 中引入的方法并且您的编译版本是 8,那么您将收到编译错误。
我想如果有一个在 8 和 11 之间变化的恒定值,它可能会以与您的应用程序不同的方式进行编译,但这不太可能,因为 Android 开发人员会知道会导致的问题,并且会破坏他们的原则向前兼容性:
由于几乎所有对框架 API 的更改都是附加的,因此使用任何给定版本的 API(由其 API 级别指定)开发的 Android 应用程序都与更高版本的 Android 平台和更高的 API 级别向前兼容。
即便如此,来自的建议here is:
一般来说,您应该针对应用程序可以支持的尽可能低的平台版本来编译应用程序。
即编译版本=最小sdk版本
(请注意,一个例外是当您需要后续 API 中的 API 功能时,但您打算通过检查来安全地回退Build.VERSION。在这种情况下,您需要比最低版本更高的编译版本)。
针对您的陈述:
我认为这是不可能的,因为这取决于运行的系统
需要注意的是,API 高于targetSdkVersion
将尝试向下模仿目标 API 级别:
随着 Android 随着每个新版本的发展,某些行为甚至外观可能会发生变化。但是,如果平台的API级别高于您的应用程序声明的版本targetSdkVersion
,系统可能会启用兼容性行为,以确保您的应用程序继续按您期望的方式工作。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)