android - 如何在增加 Android 目标 SDK 时识别潜在的不兼容

标签 android android-api-levels

我想尝试将需要目标 SDK 级别 26 的功能(通知 channel )添加到当前目标 SDK 级别 22 的开源 Android 项目。

查看通知 channel 的文档,我看到了一些令人不安的事情:显然增加目标级别可能会导致以前有效使用 API 的功能不同——在这种情况下,将不再显示未指定 channel 的通知.这告诉我,仅仅改变目标级别,可能还会有其他事情发生。

从级别 22 更改为级别 26 时,如何找到项目中需要检查可能不兼容的每个 API 调用?或者,有没有一种方法可以隔离代码段,以便我没有更改的代码仍然使用级别 22,而只有新代码使用 26?

最佳答案

I want to attempt to add a feature (notification channels) which requires target SDK level 26

如果您将 targetSdkVersion 设置为 26 或更高,则需要通知 channel 。如果您的 targetSdkVersion 设置低于 26,则不需要通知 channel ,但据我所知,如果您在 API 级别 26+ 设备上运行,您仍然可以设置它们。就个人而言,我从来没有尝试过这个;使您的 targetSdkVersion 保持最新在现代 Android 应用开发中相当重要。

How can I find every API call in the project that I need to examine for possible incompatibility when changing from level 22 to level 26?

一般来说,你不能。欢迎您阅读 Android 的发行说明;在过去的几个版本中,谷歌在明确指出由 targetSdkVersion 触发的更改方面做得更好。您还可以阅读 JavaDocs 以了解相关的 Build.VERSION_CODES 值(例如 the JavaDoc for M ),因为它们列出了由 targetSdkVersion 触发的更改。 IDE 可能会给您一些警告。除此之外,这是一个测试问题。

Alternatively, is there a way to isolate sections of code so that the code I’m not changing still uses level 22, and only the new code uses 26?

将它们放在完全独立的应用程序中。否则,不。 targetSdkVersion 是针对每个应用的设置,而不是针对每个文件或每个类的设置。

关于android - 如何在增加 Android 目标 SDK 时识别潜在的不兼容,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/49343741/

相关文章:

kotlin - Android正式支持哪个Kotlin版本?

android - 停止记录 Android Beacon 库

java - 按钮方法突然停止工作

android - android中每行中带有添加和删除按钮的ListView

javascript - Android webview加载本地javascript

android - 如果我在 API 级别 21 (5.0) 上制作应用程序,它可以与更新版本的 android 一起使用吗?

java - Android API-21 中 DateTimeFormatter 的替代品

android - 关闭自定义对话框问题

android - : Should explicitly set 'android:fullBackupContent' to avoid backing up the GCM device specific regId?是什么意思

android - API 级别 29 java 中不推荐使用 Environment.getExternalStorageDirectory()