如何在运行时检查支持库/ AppCompat库版本?

时间:2016-07-01 14:30:43

标签: android runtime version android-support-library appcompat-v7-r22.1

我们有一个适用于Android的SDK,需要支持库v4和targetSdk 23(意味着支持库也应该是23)。出于商业原因,我必须升级SDK,因此即使应用程序是针对API 21编译的,它也应该可以工作。

这意味着根据应用程序的当前支持库版本(不是当前的API级别),有条件地调用支持库,所以我在这里有3个选项(按排名最好到最差):

1 - 在方法调用之前检查支持库版本(这是我没有想到的方法,(如果可能的话))。
2 - 使用反射 3 - 使用Try Catch块。

因此,对于第一个选项,是否可以在运行时检查支持库版本?

1 个答案:

答案 0 :(得分:1)

我将用我最终选择的方法回答我的问题:

无法在运行时检查支持库/ AppCompat库版本 通常,您已经知道要使用哪个版本的Support Library / AppCompat Library版本,因为它在App依赖项中已明确声明。但是,由于在这种情况下 SDK代码应该在任何条件下运行(或者至少是库的最小版本),为了解决问题,我们做了一些不同的事情:

1 - 使用Java Reflection检查方法可用性 2 - 使用反射和try-catch块调用方法(以确保App稳定性)
3 - 使用catch块提供的信息确定AppCompat版本 4 - 后续调用不使用反射,因为已经检查了方法的存在,并且已经找到了最小版本。