提问者:小点点

更改targetSdkVersion时的应用程序行为


如果<code>targetSdkVersion

我的应用程序< code>targetSdkVersion是27版本,我运行在< code>8.0.0[26]设备上。我得到了下面链接中描述的< code > IllegalStateException ,因为我使用了一个对话框< code>Activity。

只有全屏不透明的活动才能请求方向

有两个建议的选项。从AndroidManifest.xml中删除android:在屏幕上定位="肖像"或将Target etSdkVersion更改为26。这两个解决方案都适合我。

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

那么,当我们在这里更改<code>targetSdkVersion</code>时,应用程序的行为会发生怎样的变化?


共2个答案

匿名用户

是的,您的应用程序可能会以不同的方式运行。将 targetSDKVersion 设置为 27 时,将针对 API 27 SDK 编译应用,并与 API 27 库链接。如果较新的 SDK 和库包含应用代码不允许的更改,则你的应用可能会例外。降低 targetSDKVersion 意味着应用是针对早期的 SDK 构建的,你不需要为以后的 SDK 更改修改代码,因此没有例外。但是,您将无法使用更高版本的 SDK 的新功能,并缩短了应用在 Play 商店中的停留时间,因为较旧的 API 最终会被删除。

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

匿名用户

是的,Android文档提到了< code>targetSdkVersion改变时的行为变化。例如,在API 19中,我们被告知Android 4.4的WebView在针对API 19级和更低级别的应用程序中以“古怪模式”运行,并且< code>AlarmManager和< code>ContentResolver对此类应用程序保留了一些旧的行为。我们还被告知Android 6中wifi配置的一个小变化,它检查< code>targetSdkVersion是否为20或更低,如果< code>targetSdkVersion为23或更低,则在Android 7中链接到非NDK平台库的操作会暂时停止。更引人注目的是Android 8的一系列行为变化,其中一些会在给你新行为之前检查< code>targetSdkVersion是否为26或以上。基本上,他们希望你阅读每一个新出现的API的“行为改变”部分。