androidsdk编译--如何将源代码加入android.jar,以及make原理

合集下载
  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

androidsdk编译--如何将源代码加⼊android.jar,以及make原理
⾸先是这个问题如何修改。

在/frameworks/base/Android.mk中,找到如下⾏:
packages_to_document :=
在该变量的赋值语句最后添加
xxxxx (这⾥是你的包的名称,⽐如com/sina/ui,其实这⾥就是你的源代码在/frameworks/base/<你的模块>/java/下⾯的⼀部分路径,只要能够唯⼀的匹配到你的代码即可)
即可。

该添加的含义是使MAKE系统在制作OFF-LINE DOCUMENT时包含我们的package.
以此类推,添加其他新的package也可以这样做。

下⾯简单把android make sdk的过程写⼀下来说明为什么做这样的修改。

调查时是反过来调查的。

说明还是按照MAKEFILE的⽣成的顺序来说明吧。

⾸先在/frameworks/base/Android.mk中定义了进⾏sdk building的基本⽬标对象。

包括对哪些.java⽂件需要⽣成API⽂档,以及这些⽂档的路径。

然后在/build/core/droiddoc.mk中定义了最终进⾏build的规则和语句。

Android使⽤javadoc这个⼯具来⽣成所有API⽂档。

Javadoc这个⼯具可以带⼀个参数指定⼀个⽂件,该⽂件包含了所有要⽣成⽂档的源⽂件的名字(全路径)。

该⽂件的内容就是通过在/framework/base/android.mk⾥的变量⽣成的。

当然在droiddoc.mk中还添加了build过程中⽣成的intermediates⽬录下的⽂件。

另外javadoc还可以指定定制的doclet(doclet是基于javadoc特定的API开发的⼩程序,该程序负责实际的⽂档输出).android的编译系统就包含了这样⼀个doclet叫DroidDoc。

可以在/build/tools/DroidDoc⽬录下找到该⼯具的全部源代码。

正是该⼯具在⽣成HTML的同时在/out/target/common/obj/JAVA_LIBRARIES/android_stubs_current_intermediates下⾯copy(或者说重新⽣成了)所有将⽣成到android.jar中的所有源代码(.java⽂件).
该⼯具把所有⽣成document的源⽂件重新按Package组织⽣成在以上⽬录下。

然后进⾏编译和打包成android.jar。

根据以上分析,其实android.jar⽂件是各个公布出来的 API 的源⽂件经过javadoc重新组织以后再次编译产⽣的。

故,android.jar的内容实际上受到javadoc的notation控制和makefile的控制。

对于android中已存在的代码⽐如wifi native,可以通过修改源代码中javadoc的notation 的⽅法重新build得到新的包含wifi native接⼝的android.jar(将源⽂件中的@hide这个notation换成别的,然后make update-api;make sdk)。

⽽对于新加⼊的代码,则需要如上⽅法来修改makefile了。

下⾯总结⼀下调查过程中涉及到的知识:
1) javadoc和doclet,简单的看了⼀下⼯具的使⽤和参数,另外看了⼀下DriodDoc这个doclet的源代码,找出哪⾥⽣成的.java源⽂件。

2.makefile分析,android的make showcommands命令可以和任何其他⽬标⼀起使⽤来察看make过程中实际做了⼀些什么事情。

(这点还需要调查这个showcommands如何实现的,因为make -d这个命令给出的信息对于找到问题帮助不⼤)
3.在跟踪makefile build过程时,使⽤$(warning xxxxx)和$(error xxxx)可以在除规则以外的地⽅打印出变量的值通过这个⽅法找出了实际建⽴要编译的⽂件列表的地⽅。

相关文档
最新文档