【问题标题】:Backwards compatibility and Android Open Accessory libraries向后兼容性和 Android Open Accessory 库
【发布时间】:2012-02-04 00:06:56
【问题描述】:

问题:我正在编写一个 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:使用反射在运行时手动加载必要的类,如果类不存在则抛出异常。

专业人士:我可以保持向后兼容性,而无需创建多个项目。

骗局: 看起来有点乱/乱


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

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

【问题讨论】:

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


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-08-05
      • 2014-02-28
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-04-03
      • 2011-02-06
      相关资源
      最近更新 更多