Android源码编译系列博客:
Android.bp你真的了解吗
Android.bp入门指南之Android.mk转换成Android.bp
Android.bp入门指南之浅析Android.bp语法
Android.bp正确姿势添加宏控制编译指南
Android高版本P/Q/R源码编译指南
如何在线查看Android源码自带学习文档docs
又有好久没有写点偏重实战类型的博客了,最近一直都在捣鼓源码分析和项目相关事情,是时候来点偏重实战类型的博客了。捯饬点啥实战的呢,正好前两天有个驱动的同事询问我怎么查看Android源码自带学习文档docs,我当时随口一说直接通过浏览器查看呗(后面才发现docs下面的不是可以直接通过浏览器查看的)!好吗,当时我也是随口一说,因为通常我都是上谷歌中文官方网站,其实Android源码中已经很贴心的给开发者提供好了开发文档了(这个宝藏一直没有被我开发,真是遗憾啊!)。而且中文网站有时候的资料还不是很全,这就需要我们fanqiang(不要问我为啥用拼音,提示审核不通过)上google官网查阅一些资料(这个可是一个技术活),这对于许多读者来说就很困难了。所以带着这个目的,我将带领读者怎么在本地在线查看Android源码自带学习文档docs!
注意:本篇的介绍是基于Android 7.xx平台为基础的,并且我特意查阅了Android 9 10 11没有发现类似的docs的目录文档了,这个就奇怪了,好像是分散在各个目录,如果有读者有清楚的也可以告诉我!
在开始具体的操作步骤介绍以前,必须来个有图有真相,不然读者都不会和我混了!
由于Android源码自带学习文档的构建,并不是简单的html网页或者文本文档构成,需要通过专门的工具进行查看,而其中最最关键的就是python环境的构建和Google App Engine的构建了。这里我对二者简单介绍下。
python那怕不会但是基本都有听说过,它号称除了不会生娃啥都干的逆天语言。具体的参阅百度百科Python介绍。
Python是一种跨平台的计算机程序设计语言。 是一个高层次的结合了解释性、编译性、互动性和面向对象的脚本语言。最初被设计用于编写自动化脚本(shell),随着版本的不断更新和语言新功能的添加,越多被用于独立的、大型项目的开发.
这个对于绝大部分读者来说就应该比较陌生了,它是谷歌提供的一种开发套件(具体的我也不懂)!有兴趣的参见百度百科Google App Engine的详细介绍。
Google App Engine 是一种让您可以在 Google 的基础架构上运行您的网络应用程序。Google App Engine 应用程序易于构建和维护,并可根据您的访问量和数据存储需要的增长轻松扩展。使用 Google App Engine,将不再需要维护服务器:您只需上传您的应用程序,它便可立即为您的用户提供服务。
并且为了方便读者,我这里奉上我自己验证OK的Python和Google App Engine的组合套件,详见地址谷歌自带文档查看工具(良心价格,绝不收钱)。
工具也准备OK了,完事具备只欠东风了!那还等啥呢,直接开干。Android源码工程下自带的学习文档目录为你整个Android源码的根目录的docs下面,如下所示:
ityuan@pd:~/XXX/ap$ ls -l
total 1636
drwxr-xr-x 3 ityuan pd 4096 Oct 1 2018 abi
-rw-r--r-- 1 ityuan pd 3472 Nov 30 2018 about.html
lrwxrwxrwx 1 ityuan pd 19 Oct 1 2018 Android.bp -> build/soong/root.bp
drwxr-xr-x 20 ityuan pd 4096 Nov 30 2018 art
drwxr-xr-x 11 ityuan pd 4096 Oct 16 2019 bionic
-rw-r--r-- 1 ityuan pd 60076 Sep 30 09:57 BOA_newLcd.patch
drwxr-xr-x 4 ityuan pd 4096 Oct 1 2018 bootable
lrwxrwxrwx 1 ityuan pd 26 Oct 1 2018 bootstrap.bash -> build/soong/bootstrap.bash
drwxr-xr-x 9 ityuan pd 4096 Dec 2 16:43 build
-rwxr-xr-x 1 ityuan pd 5775 Oct 1 2018 build.sh
drwxr-xr-x 11 ityuan pd 4096 Nov 30 2018 cts
drwxr-xr-x 9 ityuan pd 4096 Oct 1 2018 dalvik
drwxr-xr-x 5 ityuan pd 4096 Dec 1 11:01 developers
drwxr-xr-x 20 ityuan pd 4096 Dec 1 11:01 development
drwxr-xr-x 7 ityuan pd 4096 Oct 1 2018 device
drwxr-xr-x 3 ityuan pd 4096 Oct 1 2018 docs
上面可以看到我们的docs目录就在更目录下面,我们看下它的目录结构,如下:
可以看到里面有一个README,有了这个就比较好操作了。这里我就不展开了,我也是按照这个步骤进行相关操作的(当然读者也可以自行阅读)。
这里我们在Android编译环境构建OK之后,直接在根目录执行如下命令:
ityuan@pd:~/XXX/ap$ make -j32 online-sac-docs
vendor/qcom/build/tasks/generate_extra_images.mk:449: warning: overriding commands for target `kernelclean'
device/qcom/common/generate_extra_images.mk:449: warning: ignoring old commands for target `kernelclean'
Starting build with ninja
ninja: Entering directory `.'
[100% 1/1] Docs droiddoc: out/target/common/docs/online-sac
DroidDoc took 17 sec. to write docs to out/target/common/docs/online-sac
#### make completed successfully (01:34 (mm:ss)) ####
执行完毕以后,会在你的Android源码out目录下生成/out/target/common/docs/online-sac文件夹,该文件夹就是可以供前面所说的Google App Engine进行解析的了。我们简单看下该生成文件的目录结构(看了也白看,反正看不懂!)。
一切都搞定了,是时候享受胜利的喜悦了。那么我们要怎么通过浏览器查看我们的文档呢!这里就要使用到我们最最开始说的Python和google_appengine神器了。
注意:
1.我的google_appengine安装目录是在D:\安装程序\Google\google_appengine目录
2.我将生成的整个docs目录拷贝到了D:\安装程序\Google\docs目录
在开始执行相关命令前,我们简单看下google_appengine的安装目录结构,如下:
然后我们在google_appengine目录执行如下的命令(注意其中的dev_appserver.py为上面描红的):
python dev_appserver.py D:\安装程序\Google\docs\online-sac
这样我们的服务端就运行OK了,运行的结果如下:
D:\安装程序\Google\google_appengine
λ python dev_appserver.py D:\安装程序\Google\docs\online-sac
WARNING 2020-12-24 07:33:48,657 urlfetch_stub.py:111] No ssl package found. urlfetch will not be able to validate SSL certificates.
WARNING 2020-12-24 07:33:49,312 rdbms_mysqldb.py:74] The rdbms API is not available because the MySQLdb library could not be loaded.
Warning: You are using a Python runtime (2.5) that is older than the production runtime environment (2.7). Your application may be dependent on Python behaviors that have changed and may not work correctly when deployed to production.
INFO 2020-12-24 07:33:50,240 appengine_rpc.py:160] Server: appengine.google.com
INFO 2020-12-24 07:33:50,252 appcfg.py:582] Checking for updates to the SDK.
INFO 2020-12-24 07:33:52,424 appcfg.py:616] This SDK release is newer than the advertised release.
WARNING 2020-12-24 07:33:52,424 datastore_file_stub.py:513] Could not read datastore data from c:\users\tangkw\appdata\local\temp\dev_appserver.datastore
WARNING 2020-12-24 07:33:52,582 dev_appserver.py:3394] Could not initialize images API; you are likely missing the Python "PIL" module. ImportError: No module named _imaging
INFO 2020-12-24 07:33:52,621 dev_appserver_multiprocess.py:647] Running application dev~google.com:sourceandroid-staging on port 8080: http://localhost:8080
INFO 2020-12-24 07:33:52,624 dev_appserver_multiprocess.py:649] Admin console is available at: http://localhost:8080/_ah/admin
INFO 2020-12-24 07:39:44,257 dev_appserver.py:2884] "GET /source/building.html HTTP/1.1" 200 -
INFO 2020-12-24 07:39:44,305 dev_appserver.py:2884] "GET /assets/css/default.css HTTP/1.1" 200 -
INFO 2020-12-24 07:39:44,609 dev_appserver.py:2884] "GET /assets/js/android_3p-bundle.js HTTP/1.1" 304 -
INFO 2020-12-24 07:39:44,658 dev_appserver.py:2884] "GET /assets/js/docs.js HTTP/1.1" 304 -
INFO 2020-12-24 07:39:44,676 dev_appserver.py:2884] "GET /assets/images/sac_logo.png HTTP/1.1" 304 -
INFO 2020-12-24 07:40:05,256 dev_appserver.py:2884] "GET /assets/images/styles/disclosure_down.png HTTP/1.1" 200 -
INFO 2020-12-24 07:40:05,273 dev_appserver.py:2884] "GET /assets/images/icon_more.png HTTP/1.1" 200 -
INFO 2020-12-24 07:40:05,309 dev_appserver.py:2884] "GET /reference/lists.js?_=1608795604990 HTTP/1.1" 200 -
ERROR 2020-12-24 07:40:05,315 dev_appserver.py:1966] Error encountered reading file "D:\安装程序\Google\docs\online-sac\reference/gcm_lists.js":
[Errno 2] No such file or directory: 'D:\\\xb0\xb2\xd7\xb0\xb3\xcc\xd0\xf2\\Google\\docs\\online-sac\\reference/gcm_lists.js'
INFO 2020-12-24 07:40:05,316 dev_appserver.py:2884] "GET /reference/gcm_lists.js?_=1608795604991 HTTP/1.1" 404 -
INFO 2020-12-24 07:40:05,335 dev_appserver.py:2884] "GET /assets/images/styles/disclosure_up.png HTTP/1.1" 200 -
INFO 2020-12-24 07:40:05,354 dev_appserver.py:2884] "GET /assets/images/styles/gototop.png HTTP/1.1" 200 -
INFO 2020-12-24 07:40:05,371 dev_appserver.py:2884] "GET /assets/images/close.png HTTP/1.1" 200 -
INFO 2020-12-24 07:40:05,387 dev_appserver.py:2884] "GET /assets/images/icon_search.png HTTP/1.1" 200 -
INFO 2020-12-24 07:40:05,404 dev_appserver.py:2884] "GET /assets/images/more_bottom.png HTTP/1.1" 200 -
INFO 2020-12-24 07:40:05,513 dev_appserver.py:2884] "GET /assets/images/more_mid.png HTTP/1.1" 200 -
INFO 2020-12-24 07:40:05,812 dev_appserver.py:2884] "GET /assets/images/more_top.png HTTP/1.1" 200 -
好了,服务端运行OK了!怎么没有弹出界面啊!上述的命令我们可以理解为是服务端已经运行了,我们必须通过我们的浏览器客户端进行访问。我们打开浏览器,执行访问服务器,如下:
好了今天的博客如何在线查看Android源码自带学习文档就到这里了,由于这是一篇实战类型的博客所以也没有多少总结的了,跟着干就行了。总之,青山不改绿水长流先到这里了。如果本博客对你有所帮助,麻烦关注或者点个赞,如果觉得很烂也可以踩一脚!谢谢各位了!!