如何在运行时检查支持库/AppCompat 库版本?
How to check the Support Library / AppCompat library version at Runtime?
我们有一个适用于 Android 的 SDK,它需要支持库 v4 和 targetSdk 23(这意味着支持库也应该是 23)。出于商业原因,我必须升级 SDK,这样即使应用程序是针对 API 21 编译的,它也应该可以工作。
这意味着一些对支持库的调用应该根据应用程序的当前支持库版本(不是当前的API级别)有条件地完成,所以我在这里有 3 个选项(按最佳到最差排名):
1 - 在方法调用之前检查支持库版本(这是我还没有弄清楚该怎么做,(如果可能的话))。
2 - 使用反射。
3 - 使用 Try Catch 块。
那么对于第一个选项,是否可以在运行时检查支持库版本?
我会用我最终选择的方法来回答我的问题:
无法在运行时检查支持库/AppCompat 库修订。
通常您已经知道要使用哪个版本的支持库/AppCompat 库版本,因为它在 App 依赖项中明确声明。但是,由于在这种情况下,SDK 代码在任何条件下都应该 运行(或者至少是库的最小版本),所以做了一些不同的事情来解决问题:
1 - 使用 Java 反射检查方法的可用性。
2 - 使用反射和 try-catch
块调用方法(以确保应用程序稳定性)
3 - 使用 catch
块提供的信息确定 AppCompat 版本。
4 - 后续调用不使用反射,因为已经检查了方法的存在,并且已经找到了最小版本。
我们有一个适用于 Android 的 SDK,它需要支持库 v4 和 targetSdk 23(这意味着支持库也应该是 23)。出于商业原因,我必须升级 SDK,这样即使应用程序是针对 API 21 编译的,它也应该可以工作。
这意味着一些对支持库的调用应该根据应用程序的当前支持库版本(不是当前的API级别)有条件地完成,所以我在这里有 3 个选项(按最佳到最差排名):
1 - 在方法调用之前检查支持库版本(这是我还没有弄清楚该怎么做,(如果可能的话))。
2 - 使用反射。
3 - 使用 Try Catch 块。
那么对于第一个选项,是否可以在运行时检查支持库版本?
我会用我最终选择的方法来回答我的问题:
无法在运行时检查支持库/AppCompat 库修订。
通常您已经知道要使用哪个版本的支持库/AppCompat 库版本,因为它在 App 依赖项中明确声明。但是,由于在这种情况下,SDK 代码在任何条件下都应该 运行(或者至少是库的最小版本),所以做了一些不同的事情来解决问题:
1 - 使用 Java 反射检查方法的可用性。
2 - 使用反射和 try-catch
块调用方法(以确保应用程序稳定性)
3 - 使用 catch
块提供的信息确定 AppCompat 版本。
4 - 后续调用不使用反射,因为已经检查了方法的存在,并且已经找到了最小版本。