2012-12-28 149 views
3

我正在通过从froyo可用的反射调用函数。我怎么能标记这个电话需要froyo?SDK版本需要注释

有注释@TargetApi(Build.VERSION_CODES.FROYO)但这只是防止警告,如果这个版本不匹配,我想产生警告。

如果从SDK站点没有办法可以编写这样的注释吗?我对此并不熟悉。

+0

另请参阅[Android bug 42194](http://code.google.com/p/android/issues/detail?id=42194)。 – rekire

回答

1

注解只是元数据,需要工具来实际处理它们,没有lint检查做你想要的相反:表明某些东西需要根据http://tools.android.com/tips/lint-checks的某个API。

如果您正在提供API,最好在函数的Javadoc中记录需求,以便调用者知道该特定调用需要Froyo。在该函数中,如果这个前提条件不满足或者以其他方式处理,您可能会引发异常。

如果您正在创建库,另一个选项是将该项目的minSdk版本设置为8或更高。

你也可以编写你自己的lint规则来做自定义检查,我猜。关于编写皮棉规则的更多细节在这里:http://tools.android.com/tips/lint-custom-rules。缺点是你的API的用户必须执行一些自定义设置来激活规则。

+0

你可能是对的,但是lint如何知道函数从x版本开始流行? – rekire

+0

您必须仔细研究lint源代码,也许Android SDK会以某种方式进行注释,我没有检查过。 – botteaap

+1

我检查了lint源代码... Lint有这个类https://android.googlesource.com/platform/sdk/+/tools_r21.1/lint/libs/lint_checks/src/main/java/com/android/ tools/lint/checks/ApiLookup.java,它从$ ANDROID_HOME/platform-tools/api/api-versions.xml加载API版本 – botteaap