美文网首页
Android-SDK源码

Android-SDK源码

作者: Zephyr_07 | 来源:发表于2019-10-14 11:02 被阅读0次
    背景

    在查看Android API源码时,Android.jar内部有大量@hide注解的代码。Android隐藏API是因为不能保证这些API还存在新系统版本,所以尽量少用隐藏API!因此,Android.jar并不完整,要么实现为空要么类缺失,不利于源码的研究。谷歌百度之后,寻觅了三种方法以获取源码。

    关于@hide注解

    简单来说编程工具(AndroidStudio等)是引用SDK中的android.jar,这个包里没有hide和internal相关的类、属性和方法的,它是个删减版。当app开发完成装到手机上或虚拟里运行时,引用的却是framework.jar,这个包是完整版。举个形象的例子,我们在开发app时,编译环境只给了我们一个碗让我们去盛饭但是没有筷子,只有当app运行时,运行环境才会给我们一双筷子,这时我们才能吃饭。
    也就是说hide只作用于编译期,在运行期它是没有作用的,所以才能通过反谢去调用hide方法。

    获取源码

    方法一 在SDK Manager中下载源码,一般存放于SDK根目录下 \sdk\sources\android-xx。但经对比, 这种方式获取的源码依然有大部分的缺失。

    方法二 在万能的GitHub已有人去除Android.jar中@hide注解, 可反编译使用。
    地址: https://github.com/anggrayudi/android-hidden-api
    eg: 可替换SDK/platforms/android-版本/Android.jar。直接使用隐藏API,不需要反射,Android.jar并不会打包到APK,所以去除@hide的Android.jar,只是欺骗IDE/编译器,方便程序员查看使用!

    方法三 在线查阅完整源码
    安卓社区 https://www.androidos.net.cn/android/8.0.0_r4/xref
    androidxref http://androidxref.com/8.0.0_r4/xref/

    方法四 官方下载源码(十分庞大)
    清华镜像 https://mirrors.tuna.tsinghua.edu.cn/help/AOSP/
    官方 https://source.android.google.cn/setup/develop

    参考文章:
    https://www.jianshu.com/p/c5d061d16b30
    https://blog.csdn.net/lxhpkm01/article/details/55506968

    相关文章

      网友评论

          本文标题:Android-SDK源码

          本文链接:https://www.haomeiwen.com/subject/guxcmctx.html