我看了下 ListView 的源码,import 中报红的部分注解,点击可以跳转。报红的部分成员变量可以在父类中找到。
但是像 ViewRootImpl 类就找不到了。如果想要研究系统源码的话,直接使用 Android SDK 并不方便。
在别人的文章中看到的:
在研究 Android SDK 源码的时候,经常会发现部分 API 报红,点击无法跳转,这对于研究源码来说非常的不方便。
Android 有两种类型的 API 不能通过 SDK 访问。
一种是在 com.android.internal 包中的 API,称之为 internal API 。
另一种是被标记为 @
hide 属性的类和方法,这是一组被隐藏的 API,称之为 hidden API 。
当使用 Android SDK 进行开发的时候,应用默认引用了 android.jar ,它位于 SDKDir\platforms\android-X 目录下( X 代表 API 级别),默认移除了所有的被 @
hide 标识的方法或者类以及 internal 包下的类。当应用在设备上运行时,它会加载 framework.jar 。简单来说,framework.jar 和 android.jar 等同,但是没有移除 internal API 和 hidden API 。Hidden API 之所以被隐藏,是想阻止开发者使用 SDK 中未完成或不稳定的部分。因为这些 API 可能有问题:
1. 隐藏的 API 在未来的 Android 版本中可能被删除。
2. 可能会被修改方法签名或字段类型。
3. 设备制造商还可能会删除或修改隐藏的 API,这可能会影响这部分设备。
引用的两篇文章:
https://zhuanlan.zhihu.com/p/33241064https://www.jianshu.com/p/fbf45770ecc8