【发布时间】:2012-12-28 08:43:25
【问题描述】:
我正在通过反射调用一个函数,该函数自 froyo 以来就可用。如何标记此调用需要 froyo?
有注释@TargetApi(Build.VERSION_CODES.FROYO) 但这只是防止警告我想在此版本不匹配时生成警告。
如果SDK站点没有办法,是否可以编写这样的注释?我不熟悉。
【问题讨论】:
标签: android annotations compiler-warnings
我正在通过反射调用一个函数,该函数自 froyo 以来就可用。如何标记此调用需要 froyo?
有注释@TargetApi(Build.VERSION_CODES.FROYO) 但这只是防止警告我想在此版本不匹配时生成警告。
如果SDK站点没有办法,是否可以编写这样的注释?我不熟悉。
【问题讨论】:
标签: android annotations compiler-warnings
注释只是元数据,需要工具来实际处理它们,没有 lint 检查来做你想做的相反的事情:根据http://tools.android.com/tips/lint-checks 表明某事需要特定的 API。
如果您提供 API,最好在函数的 Javadoc 中记录要求,以便调用者知道该特定调用需要 Froyo。在函数中,如果不满足此先决条件或以其他方式处理它,您可能应该抛出异常。
如果您要创建库,另一种选择是将该项目的 minSdk 版本设置为 8 或更高版本。
您也可以编写自己的 lint 规则,我猜它会进行自定义检查。有关编写 lint 规则的更多详细信息,请参见:http://tools.android.com/tips/lint-custom-rules。缺点是您的 api 用户必须执行一些自定义设置才能激活规则。
【讨论】:
我完全忘了提到这一点,但这个注解 @RequiresApi 实际上是早在 2016 年在 Support Lib v24 中引入的,after raising a bugreport。
【讨论】: