android java注释,Android库的Android API级别注释

我正在写一个Android库 . lbirary中的绝大多数界面都支持Android API级别10或更高级别 . 但是,某些功能需要更高的API级别 . 例如,库的一部分需要API 18用于蓝牙低功耗 .

为了具体起见,我们假设该库生成三个类 ClassA , ClassB 和 ClassC . ClassA 使用API 10中提供的功能, ClassB 使用API 14中提供的功能, ClassC 使用API 18中提供的功能 .

我希望能够在有人使用我的库中的类而没有项目中所需的API级别时触发lint问题(警告/错误)(除非他们使用适当的注释来抑制警告),类似于已经构建的 - 在lint使用的NewApi问题中 .

搜索后,我找到了以下可能的解决方案:

1)此解决方案不符合lint:将库拆分为三个.jar文件,例如 lib_10.jar ,其中包括使用API 10中可用功能的所有类(示例中为ClassA), lib_14.jar 包含使用可用功能的所有类在API 14(示例中为ClassB)和 lib_18.jar 中,包括使用API 18中可用功能的所有类(示例中为ClassC) . 此解决方案允许可移植性,但会使代码库的后续可维护性变得复杂,并且可能还需要一些代码重复 .

2)创建我自己的注释(例如, @RequireAndroidApi(API_LEVEL) 指示带注释的类/方法/等所需的最低API级别)并使用 lint-api.jar ( http://tools.android.com/tips/lint-custom-rules )创建自定义lint规则,以检查任何带注释的类的使用情况/方法/ etc ... API低于要求 . 以后看起来像这样的东西:

@RequireAndroidApi(10)

Class ClassA {

}

@RequireAndroidApi(14)

Class ClassB {

}

@RequireAndroidApi(18)

Class ClassC {

}

问题是我找不到lint API的好文档,似乎这是重新发明lint已经支持的功能的轮子(lint已经检查了“NewApi”问题) .

3)最后,我成功编辑了 /platform-tools/api/api-versions.xml ,以便指出每个类所需的API级别,如下所示:

...

这导致lint以与Android API相同的方式触发NewApi问题 . 我喜欢这种类型的解决方案,因为它不会重新发明轮子,因此以这种方式抛出的任何错误都会利用Eclipse或Android Studio中编写的建议解决方案来处理问题(即Eclipse中的"quick fixes") . 此解决方案的问题在于它需要编辑随Android SDK一起提供的 api-versions.xml ,这使得此解决方案在释放库时不会非常便携,原因如下:a) api-versions.xml 文件不是项目的本地文件并且更改了行为所有android项目的lint,包括那些不使用库的项目;和b)每次从Android SDK管理器更新SDK时都会覆盖 api-versions.xml ,这会覆盖所做的任何更改 .

我想知道是否有一个更简单的解决方案来实现这个"minimum API errors/warnings"或者是否有办法编写一个类似于 api-versions.xml 的单独文件,可以放在项目目录中,只要lint在有问题的项目上运行,就可以通过lint读取(类似于 lint.xml ) .

感谢您在这个问题的长期描述中与我联系,我提前感谢您的帮助 .

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值