Javadoc 识别@hide标记Tag之doclava

在开发Java SDK时,遇到需要隐藏某些方法不暴露给开发者的问题。通过添加@hide注解但发现javadoc仍显示这些接口。解决方法是使用Doclava工具。详细步骤包括下载doclava jar包,使用特定命令行生成javadoc,避开Android Studio内置生成的限制。虽然尝试在Android Studio内配置未成功,但命令行方式已能有效隐藏@hide标记的方法。如果你知道如何在Android Studio中配置,欢迎分享。

最近在开发java sdk, 但是sdk中的有些方法不想暴露给开发者。于是按照android的注释给这些接口

加上了@hide的标记,但是在生成javadoc的时候发现这些接口还是出现了。并且看到在生成javadoc的日志中

提示了@hide标签无法识别的错误。

百度了下,很多地方说要使用google的docklava。于是在网上找了很多方法,都失败了。

自己在github上搜索了下doclava然后根据其中的一个命令结合自己的工程最终测试成功。

下面说下步骤:

  1. 下载一个doclava的jar包:doclava1.0.6.
  2. 使用命令执行: javadoc -d 生成javadoc的目录 -package 包名 -doclet com.google.doclava.Doclava -docletpath /yourpath/doclava-1.0.6.jar -sourcepath src/main/java(代码目录) -subpackages 子包名 -classpath /home/tssh/workspace/Sdk/platforms/android-29/android.jar<
### `@hide` 注解在 Java 中的使用方法和示例 `@hide` 并不是 Java 标准注解,而是 Android 源码中自定义的一种注释标记,用于控制 API 文档的生成。它通常被用于隐藏某些类、方法或字段,使其不在生成的 SDK 文档中显示,从而防止开发者直接使用这些非公开 API。尽管 `@hide` 不属于 Java 原生注解体系,但其使用方式与标准注解类似,通常以 Javadoc 注释的形式出现在代码中[^1]。 #### 使用方法 `@hide` 通常以 `/** @hide */` 的形式出现在类、方法或字段的注释中。它不会影响编译过程,也不会对运行时行为产生任何作用,仅用于控制 API 文档的生成。例如: ```java /** @hide */ public class HiddenClass { // 类内容 } ``` 上述代码中,`HiddenClass` 被标记为 `@hide`,因此在生成的 SDK 文档中不会出现该类的描述。同样地,也可以将 `@hide` 应用于方法或字段: ```java public class Example { /** @hide */ public void hiddenMethod() { // 方法实现 } } ``` 这种方式可以有效隐藏某些尚未稳定或不推荐使用的 API,避免开发者误用[^1]。 #### 示例说明 在 Android 系统源码中,`@hide` 被广泛用于隐藏内部 API。例如,在 `ActivityManager` 类中存在如下方法定义: ```java /** @hide */ public static int checkUidPermission(String permission, int uid) { try { return AppGlobals.getPackageManager().checkUidPermission(permission, uid); } catch (RemoteException e) { Slog.e(TAG, "PackageManager is dead?!?", e); } return PackageManager.PERMISSION_DENIED; } ``` 上述方法虽然在系统源码中是公开的,但由于被标记为 `@hide`,它不会出现在 Android SDK 的官方文档中。开发者无法通过常规方式访问该方法,但可以通过反射机制调用它。需要注意的是,这种访问方式存在兼容性风险,因为隐藏 API 可能在未来的版本中被移除或修改[^1]。 #### 开发建议 尽管 `@hide` 提供了一种隐藏 API 的机制,但它并不具备访问控制能力。开发者应避免依赖这些隐藏 API,因为它们可能在不同设备或系统版本中表现不一致。若确实需要访问隐藏 API,可以通过反射或替换 `android.jar` 的方式实现,但这种方式不推荐用于正式发布的应用中,以免引发兼容性问题[^1]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值