Anroid源码入门Word下载.docx

上传人:b****2 文档编号:15380636 上传时间:2022-10-29 格式:DOCX 页数:9 大小:50.62KB
下载 相关 举报
Anroid源码入门Word下载.docx_第1页
第1页 / 共9页
Anroid源码入门Word下载.docx_第2页
第2页 / 共9页
Anroid源码入门Word下载.docx_第3页
第3页 / 共9页
Anroid源码入门Word下载.docx_第4页
第4页 / 共9页
Anroid源码入门Word下载.docx_第5页
第5页 / 共9页
点击查看更多>>
下载资源
资源描述

Anroid源码入门Word下载.docx

《Anroid源码入门Word下载.docx》由会员分享,可在线阅读,更多相关《Anroid源码入门Word下载.docx(9页珍藏版)》请在冰豆网上搜索。

Anroid源码入门Word下载.docx

License:

glibc使用的是LGPL,而bionic使用的BSD

Andoird的源码大多采用了ASL和BSD,至于为什么没有采用GPL,可以参考下面的文章。

<

http:

//cq-

大小:

显然bionic要小,毕竟android是正对嵌入式平台,flash可不像硬盘动辄几百G。

运行速度:

同样,ArmCPU的运行速度对这种底层的C库提出了更高的要求。

而且作为专门针对android开发的底层库,google可以在bionic中内建某些android特性的支持。

总的来说,bionic相对于glic更轻量级,更适合android,且没有传染性。

这个目录在我们的开发只能算个路人,一般不会去修改里面的代码,甚至都不需要去打开他。

Build:

Build目录存放的是buildandroid源码过程中需要用到的各种脚本和工具。

这个目录对我们来说还是比较的重要的,虽然不一定会经常修改里面的代码,但是里面的Makefile对于弄清楚android的编译流程是很有帮助的。

此目录的结构如下:

buildspec.mk.defaultcleanspec.mkcoreenvsetup.shhistorylibstargettools

请记住core这个子目录,里面的一大堆Makefile在接下会接触到。

不夸张的说,看明白了core,就弄明白了android的这一大堆的源码是如何一一被编译并生成最后的目标文件。

Target目录存放的是一些通用的编译目标,如generic,emulator等。

如果我们在编译时不指定特殊的目标,则会编译这些通用的目标。

Dalvik:

此目录存放JAVA虚拟机的相关代码,无视。

Development:

这个目录存放的是android开发时需要的各种模板以及仿真工具,对于portingandroid来说,意义不大。

External:

进去到这个目录,可以发现里面存放着很多tool和lib,如bison,bluez,bzip2等,这些tool和lib经过编译之后会放到目标镜像中。

如果我们需要在Android系统中加入一些额外的tool或者lib,可以选择在external目录下增加子目录。

Frameworks:

此目录存放应用程序的框架层代码。

一般将Android从架构上分为4个层次,自下而上一次是:

LinuxKernel,Librariesandruntime,Applicationframework,application。

那么本目录对应其中的applicationframework层。

进入此文件夹,里面的源码大多都是java源码。

因为applicationframework的下层已经提供了javaruntime,这一层次的代码已能直接运行java程序。

如果要修改Android的界面,有可能涉及到此目录的源码。

Hardware:

存放硬件相关的lib。

这一部分的代码相对较少,且是C语言写成,有兴趣可以进入研究一下。

Kernel:

毫无疑问,这个目录放的是linuxkernel,android-1.6-x86有两个kernel版本可以选择,2.6.29和2.6.32,默认kernel是2.6.29,如果要使用2.6.32,需要在kernel目录下执行命令:

Gitcheckout–bandroid-2.6.32x86/android-2.6.32

关于kernel的编译,需要注意以下几点:

1,编译的目录并不在kernel本身的目录,而在out/vendor/product/obj/kernel目录下。

2,正因为1,所以如果在编译kernel时,需要链接某个现成的lib,需要将该lib拷贝到out/vendor/product/obj/kernel的对应位置

对于android的kernel的特性,直接引用android官方的描述:

TheAndroidLinuxkernelincludesenhancementstotheLinux2.6kernelthatprovideadditionaldriverstosupporttheAndroidplatform,including:

∙Binder:

anOpenBinder-baseddrivertofacilitateinter-processcommunication(IPC)intheAndroidplatform.

∙AndroidPowerManagement:

alightweightpowermanagementdriverbuiltontopofstandardLinuxpowermanagementbutoptimizedforembeddedsystems.

∙LowMemoryKiller:

Basedonhintsfromtheuserspace,thelowmemorykillercankilloffprocessestofreeupmemoryasnecessary.ItisdesignedtoprovidemoreflexibilitythantheOutOfMemory(OOM)killerinthestandardkernel.

∙Logger:

Alightweightloggingdeviceusedtocapturesystem,radio,logdata,etc.

∙USBGadget:

UsestheUSBfunctionframework.

∙Android/PMEM:

ThePMEM(physicalmemory)driverisusedtoprovidecontiguousphysicalmemoryregionstouserspacelibrariesthatinteractwiththedigitalsignalprocessor(DSP)andotherhardwarethatcannotcopewithscatter-gather.

∙AndroidAlarm:

Adriverwhichprovidestimersthatcanwakethedeviceupfromsleepandamonotonictimebasethatrunswhilethedeviceisasleep.

LookforAndroid-specificenhancementsinthefollowingdirectories:

∙/drivers/android

∙/drivers/misc

∙/include/linux

Packages:

之前说frameworks对应了四层架构中的applicationframework层,那么本目录则对应了application层。

里面都是各种上层application的java源码。

如果想在android系统中添加上层应用程序,应该在本文件夹中的apps子目录添加。

Out:

此目录在为编译之前是不会出现的,在经过一次编译之后才会出现。

如果在编译时加入了TARGET_PRODUCT=eeepc的参数,那么、/vendor/asus/eeepc/目录下的编译规则会被采用,同时会生成/out/target/product/eeepc/的目录,如果编译成功,该目录下的文件列表应如下:

clean_steps.mkgrubinstallerkernelprevious_build_config.mkrootsystemusb_boot

eeepc_usb.imginitrd.imginstall.imgobjramdisk.imgsymbolssystem.sfsusb_tmp.img

其中eeepc_usb.img是最终镜像;

usb_temp.img是未安装grub的中间镜像,usb_boot目录则是usb_temp.img对应的目录;

kernel,initrd.img,install.img,ramdisk.img,system.sfs是更早的中间产物,grub,installer,root,system则是对应的未打包的目录;

obj是最初期的中间产物,可以看成是编译目录,比如kernel的编译并不会在/kernel目录中生成任何obj文件,全部都在obj目录中。

之所以在out目录上费了较多的笔墨,是因为弄清楚out目录中的结构可以更好的了解android的编译流程,另外我们也可以在编译过程中,通过对out目录的操作,去改变最终镜像里的内容。

比如我们在system目录中加入一些tool和lib,则会在最终镜像中体现出来。

当然这种更改方式只是一种暂时性的,可以作为调试手段,不能正式发布。

Prebuild:

各种平台下的预编译脚本,无视。

System;

存放Anroid系统的底层库和tool。

System目录和external目录中的代码构成了android四层架构中的library和runtime层。

Vendor:

此目录存放了特定硬件平台的编译配置。

Android-1.6-x86的release源码默认提供了eeepc和q1u两款设备的编译配置。

如果我们需要增加新的硬件平台,则需要在此目录中增加内容。

Makefile:

前面介绍的都是目录,Makefile是android顶层目录中唯一的一个文件,也许是太寂寞的原因,Makefile里面只有三行的文字:

###DONOTEDITTHISFILE###

includebuild/core/main.mk

而其中真正干活的只有中间的一行,谁能想到android这么庞大的代码群的顶层Makefile会如此的简单。

实际上这个Makefile只是个介绍人,他将带着我们去认识真正的顶层Makefile----build/core/main.mk。

三,剖析Makefile

上一章介绍完了android的代码结构,并留了一个介绍人,以便我们进入android的Makefile世界。

现在我们就随着这个介绍人去一探究竟。

Makefile

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 医药卫生 > 基础医学

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1