向后兼容性和Android Open Accessory库

时间:2012-02-04 00:06:57

标签: android reflection compatibility backwards-compatibility android-hardware

问题:我正在编写一个Android应用,其功能之一需要Open Accessory兼容性,仅适用于3.1及更高版本(以及某些2.3版本的后端版本)。 4)。我需要的软件包(android.hardware.usb或android.future.usb)在早期的API级别中完全不存在,但我需要该应用程序至少在Android 2.2上运行。现在,它甚至不会安装(我在Eclipse中得到“INSTALL_FAILED_MISSING_SHARED_LIBRARY”)。

我做了一些研究并提出了以下可能的解决方案,但我需要帮助选择哪一个是“最好的”(最容易实现,最干净,最容易维护,最符合逻辑......)或者是否有我忽略了另一种解决方案。


解决方案#1:创建项目的两个分支:一个支持配件,一个用于旧手机。

专业:保持清洁,我可以将一个项目指定为仅限手机的项目,另一个项目仅限平板电脑。

Con:要求我设置一个库项目或处理某种自定义构建脚本,这样我就不必在两个项目中复制所有代码。


解决方案#2:使用反射在运行时手动加载必要的类,如果该类不存在则抛出异常。

Pro:我可以保持向后兼容性而无需制作多个项目。

Con:看起来有点混乱/ hacky


简而言之...... 我如何使用仅存在于API级别12及以上的软件包,但仍然可以在早期版本上运行该应用程序?

任何建议都将不胜感激。谢谢!

1 个答案:

答案 0 :(得分:1)

我最终选择了图书馆计划解决方案。绝大多数应用程序代码都在库项目中,但与Open Accessory相关的所有内容都已移至其自己的项目中。它实际上最终很容易维护,因为共享了这么多代码。不需要复杂的构建脚本!