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