问题:我正在编写一个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及以上的软件包,但仍然可以在早期版本上运行该应用程序?
任何建议都将不胜感激。谢谢!
答案 0 :(得分:1)
我最终选择了图书馆计划解决方案。绝大多数应用程序代码都在库项目中,但与Open Accessory相关的所有内容都已移至其自己的项目中。它实际上最终很容易维护,因为共享了这么多代码。不需要复杂的构建脚本!