android源码编译sdk

转载 2016年05月31日 15:55:37
首先是这个问题如何修改。 
在/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)可以在除规则以外的地方打印出变量的值通过这个方法找出了实际建立要编译的文件列表的地方。 

Andriod源码正确的编译方式 
适用范围:针对Linux的环境 

针对版本:Android源码Version1.5及以上 

前提条件:1、编译源码的各种工具已经安装完毕; 
                  2、进入Android源码的根目录,如:/work/android2.1/ 

编译命令:make update-api; make PRODUCT-sdk-sdk; 

命令说明:1、make update-api   #如果你在Android源码中添加了自定义的包、类、方法或者你修改了Android源码中标识为@hide的方法、类,你需要这些内容对 Application可见并且需要编译进SDK的Document中的话,这个命令是必须的(其实还有另外一种手工修改的方式替代这个命令的,呵呵); 
                  2、make PRODUCT-sdk-sdk   #编译源码并且声称SDK,这个方法解决了之前使用make sdk命令编译SDK的一个bug,就是R文件不能自动生成,需要手动更新一个jar文件才可以,这个文章本博客中也有涉及。 

异常现象:如果在源码中添加了一些style、theme、drawable、package、class、method,编译时会出现有out/目录中的一些异常现象,一般不是特别严重的,主要是针对有些文件找不到,此时你可以在执行以下命令: 
make clean 
再执行:make update-api;make PRODUCT-sdk-sdk 


Android学习笔记之编译系统(六)framework的编译过程

framework的编译是对framework目录下所有的子目录的编译。framework在编译后会生成几个重要的jar包。他们是framework.jar、core.jar、ext.jar、fram...
  • hailushijie
  • hailushijie
  • 2013年03月10日 00:12
  • 11098

编译Android Framework下的资源文件

1./frameworks/base/api   Android app开发所使用的API current.txt文件下,是app开发所引用的包、类以及接口 2./frameworks/base/co...
  • kangtingting01
  • kangtingting01
  • 2015年03月13日 14:55
  • 1690

Android源码编译SDK

1 源码下载     由于无法直接从Google官网下载Android源码,因此只能从其它途径获取,例如高通开源网就是一个不错的地方。本文在高通开源网上下载release分支中包含msm8909平台的...
  • Q1302182594
  • Q1302182594
  • 2016年08月08日 12:01
  • 2680

自己动手编译最新Android源码及SDK(Ubuntu)

在Android Studio代码调试一文中,简单的介绍了代码调试的一些技巧.现在我们来谈谈android源码编译的一些事.(俺认为,作为android developer人人都应该有一份自己Andr...
  • dd864140130
  • dd864140130
  • 2016年06月20日 01:54
  • 32431

android编译内置应用以及调用隐藏API(@hide)

Android系统内置有:Browser(浏览器)、Mms(彩信/短信)、Phone(电话)、Contacts(联系人)等众多的核心应用。 然而,在SDK开发环境(即Eclipse + ADT) 下...
  • xuewater
  • xuewater
  • 2014年08月13日 10:35
  • 2043

Mac系统Android M源码编译并导入Android Studio查看

一. Mac OS X(10.11.4)编译环境设置1.1 创建大小写敏感的磁盘镜像可以通过磁盘管理工具进行设置,也可以通过以下命令生成70g的镜像文件sudo hdiutil create -typ...
  • harichen
  • harichen
  • 2016年08月23日 14:07
  • 2156

android源码_SDK_ADT_编译.doc

  • 2011年08月25日 14:48
  • 14KB
  • 下载

Android源码编译SDK

1 源码下载     由于无法直接从Google官网下载Android源码,因此只能从其它途径获取,例如高通开源网就是一个不错的地方。本文在高通开源网上下载release分支中包含msm8909平台的...
  • Q1302182594
  • Q1302182594
  • 2016年08月08日 12:01
  • 2680

UBUNTU 10.10 编译Android 2.3.1源码以及SDK

UBUNTU 10.10 需要的包sudo apt-get install git-core gnupg flex bison gperf build-essential zip curl zlib1...
  • win2k3net
  • win2k3net
  • 2011年07月28日 14:10
  • 2083

Android 4.4源码编译过程(包括SDK)

Android源码下载完后的目录如下: 整个代码的大小为:25.559GB。 一、构建系统 如下用于构建Android源码树的指令应用于所有的代码分支,包括master分支。 1.选择分支...
  • wuxiaoer717
  • wuxiaoer717
  • 2014年01月08日 17:39
  • 3659
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:android源码编译sdk
举报原因:
原因补充:

(最多只允许输入30个字)