让我们假设我有一个设备A,我的应用程序被编译两次:第一次设置compileSDK = 8,第二次设置compileSDK = 22。 当我现在从Android系统调用函数时,系统可能会返回两个不同的值或对象吗? 我认为这是不可能的,因为这取决于在设备上运行的系统,并且针对编译SDK的编译过程仅断言它是有效的 - 但我的一个同事声明这可能在这里有不同的输出。 (对不起,这里没有任何例子..)
答案 0 :(得分:1)
编译版本只是告诉编译器哪些android类和函数可用。例如如果您尝试使用v11中引入的方法并且您的编译版本是8,那么您将收到编译错误。
我想如果有一个在8到11之间变化的常量值,它可能会以不同的方式编译到你的应用程序,但这不太可能,因为android开发人员会知道会导致的问题,这会破坏他们的原则forward compatibility:
由于几乎所有对框架API的更改都是附加的,因此使用任何给定版本的API(由其API级别指定)开发的Android应用程序与更高版本的Android平台和更高的API级别向前兼容。 / p>
即便如此,here的建议是:
通常,您应该针对应用程序可以支持的最低版本的平台编译您的应用程序。
即。编译版本= min sdk版本
(请注意,当您需要来自更高版本API的API功能时,会有一个例外,但是您打算通过检查Build.VERSION
安全地回退。在这种情况下,您需要比最小版本更高的编译版本)
解决你的陈述:
我认为这是不可能的,因为这取决于系统运行
请务必注意,API高于targetSdkVersion
的设备会尝试模拟到较低的target API level:
随着Android随着每个新版本的发展,一些行为甚至外观都可能会发生变化。但是,如果平台的API级别高于应用程序
targetSdkVersion
声明的版本,系统可能会启用兼容性行为,以确保您的应用程序继续以您期望的方式工作。