繁体   English   中英

更改targetSdkVersion时的应用程序行为

[英]Application behavior when targetSdkVersion is changed

如果targetSdkVersion大于设备操作系统版本,并且如果我将targetSdkVersion降低到设备操作系统版本,那么应用程序的行为是否会有所不同?

我的应用程序targetSdkVersion为27,并且正在8.0.0[26]设备上运行。 如下面的链接所述,我得到一个IllegalStateException ,因为我使用的是对话框Activity

java.lang.IllegalStateException:仅全屏不透明活动可以请求方向

建议有两个选择。 AndroidManifest.xml删除android:screenOrientation="portrait"或将targetSdkVersion更改为26。这两种解决方案都对我targetSdkVersion

但是我的问题是关于将targetSdkVersion更改为26。当我们将targetSdkVersion从27降低到26并且设备OS为26时,应用程序的行为将如何改变? 由于设备运行于26, targetSdkVersion为27,因此我认为没有应用任何兼容模式。 我的理解是,当设备操作系统版本大于targetSdkVersion时,将应用兼容模式。

那么,当我们在此处更改targetSdkVersion时,应用程序行为将如何改变?

可能是的,您的应用程序的行为将有所不同。 当您将targetSDKVersion设置为27时,您的应用将针对API 27 SDK进行编译,并与API 27库链接。 如果更新的SDK和库包含您的应用程序代码不允许的更改,则您的应用程序可能会例外。 降低targetSDKVersion意味着该应用程序是根据早期的SDK构建的,并且您不需要为以后的SDK更改而修改代码,因此也不例外。 但是,由于最终会淘汰旧的API,您将无法使用更高版本的SDK的新功能,并缩短了该应用在Play商店中的停留时间。

请记住, targetSDKVersion与设备API支持无关。 它是SDK编译版本。 targetSDKVersion为26的设备将运行在支持API 27的设备上。如果您不使用API​​ 27的任何功能,则targetSDKVersion为27的设备将运行在26 API设备上(解决方法是使用新功能的支持库版本,如果已提供它们,有时支持库中不会出现新的API功能。

是的,Android文档提到了更改targetSdkVersion时的行为更改。 例如,在API 19中,我们被告知Android 4.4的WebView 在针对API级别18和更低的应用程序中以“怪异模式”运行 ,并且AlarmManagerContentResolver保留了此类应用程序的某些旧行为。 我们也被告知一个在Android的6零钱WifiConfiguration来检查,如果targetSdkVersion为20或更低,并且在Android的7链接到非NDK平台库临时死缓如果targetSdkVersion是23或更低。 更具戏剧性的是一系列Android 8行为更改 ,其中一些更改在为您提供新行为之前检查targetSdkVersion是否为26或更高。 基本上,他们希望您阅读每个出现的新API的“行为更改”部分。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM