2

问题:我正在编写一个 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:创建项目的两个分支:一个支持配件,一个用于旧手机。

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

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


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

优点:我可以保持向后兼容性,而不必制作多个项目。

缺点:看起来有点凌乱/hacky


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

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

4

1 回答 1

1

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

于 2012-06-01T19:55:02.243 回答