一、环境说明:
1、VMware版本:8.0.3 build-703057
2、liunx系统:Ubuntu10.10
3、jdk:sun-java6-jdk
二、Ubuntu 10.10更新源列表
由于Ubuntu 10.10版本的源已经过期了,所以,需要对其进行更新,Ubuntu 10.10 已经发布了,下面提供更新源方法与更新源列表地址:
1.sudo gedit /etc/apt/sources.list
编辑你的源列表,将原来的内容全部删除,添加下面的源,复制到你的列表中,然后保存列表。
- ##Majorbugfixupdatesproducedafterthefinalreleaseofthe
- ##distribution.
- debhttp://old-releases.ubuntu.com/ubuntu/maverickmainrestricted
- deb-srchttp://old-releases.ubuntu.com/ubuntu/maverickmainrestricted
- debhttp://old-releases.ubuntu.com/ubuntu/maverick-updatesmainrestricted
- deb-srchttp://old-releases.ubuntu.com/ubuntu/maverick-updatesmainrestricted
- ##N.B.softwarefromthisrepositoryisENTIRELYUNSUPPORTEDbytheUbuntu
- ##team.Also,pleasenotethatsoftwareinuniverseWILLNOTreceiveany
- ##revieworupdatesfromtheUbuntusecurityteam.
- debhttp://old-releases.ubuntu.com/ubuntu/maverickuniverse
- deb-srchttp://old-releases.ubuntu.com/ubuntu/maverickuniverse
- debhttp://old-releases.ubuntu.com/ubuntu/maverick-updatesuniverse
- deb-srchttp://old-releases.ubuntu.com/ubuntu/maverick-updatesuniverse
- ##N.B.softwarefromthisrepositoryisENTIRELYUNSUPPORTEDbytheUbuntu
- ##team,andmaynotbeunderafreelicence.Pleasesatisfyyourselfasto
- ##yourrightstousethesoftware.Also,pleasenotethatsoftwarein
- ##multiverseWILLNOTreceiveanyrevieworupdatesfromtheUbuntu
- ##securityteam.
- debhttp://old-releases.ubuntu.com/ubuntu/maverickmultiverse
- deb-srchttp://old-releases.ubuntu.com/ubuntu/maverickmultiverse
- debhttp://old-releases.ubuntu.com/ubuntu/maverick-updatesmultiverse
- deb-srchttp://old-releases.ubuntu.com/ubuntu/maverick-updatesmultiverse
- ##Uncommentthefollowingtwolinestoaddsoftwarefromthe'backports'
- ##repository.
- ##N.B.softwarefromthisrepositorymaynothavebeentestedas
- ##extensivelyasthatcontainedinthemainrelease,althoughitincludes
- ##newerversionsofsomeapplicationswhichmayprovideusefulfeatures.
- ##Also,pleasenotethatsoftwareinbackportsWILLNOTreceiveanyreview
- ##orupdatesfromtheUbuntusecurityteam.
- #debhttp://us.old-releases.ubuntu.com/ubuntu/maverick-backportsmainrestricteduniversemultiverse
- #deb-srchttp://us.old-releases.ubuntu.com/ubuntu/maverick-backportsmainrestricteduniversemultiverse
2.sudo apt-get update 更新源列表信息
可以在运行“sudo apt-get update ”时查看一下错误信息,把不能连接的源删除再重新运行“sudo apt-get update ”。
3.sudo apt-get upgrade 升级
或者用ubuntu自带的更新管理器升级也可
二、安装jdk
1、执行:sudo gedit /etc/apt/sources.lis。打开源列表,在最后一行添加
- debhttp://us.archive.ubuntu.com/ubuntu/hardymultiverse
2、保存退出。
3、更新apt源sudo apt-get update
4、安装sun-java6-jdksudo apt-get install sun-java6-jdk
三、Android 源码的获取
要想获取android源码需要借助于几个软件,下面进行一次介绍:
1、ubuntu GIT 安装与使
- $sudoapt-getinstallgit
- $sudoapt-getinstallgit-core
通过命令更新版本库
- gitclonegit://git.kernel.org/pub/scm/git/git.git
2、安装curl
- $sudoapt-getinstallcurl
3、获取repo
按照说明,执行:
- $mkdir~/bin
- $PATH=~/bin:$PATH
- $curl"http://php.webtutor.pl/en/wp-content/uploads/2011/09/repo">~/bin/repo
下面就是修改它的属性:
- $chmoda+x~/bin/repo
- $PATH=~/bin:$PATH
4、开始下载android源码
首先执行:
- $repoinit-uhttps://android.googlesource.com/platform/manifest
然后再执行:
- $repoinit-uhttps://android.googlesource.com/platform/manifest-bandroid-2.3.3_r1
这个执行完了会有要求你输入姓名和邮箱的,但是邮箱一定是谷歌的就行,不过不用输入邮箱和密码也可以,直接按下Enter键就行。
然后创建目录用于存放下载下来的android源码:
- $mkdirAndriod
- $cdAndriod
- $repoinit-ugit://codeaurora.org/platform/manifest.git-bgingerbread
最后就是在线拉取android源码了:
- $reposync
嗯,如果已经开始进行下载了,表示已经顺利的开始下载android源码了。这个过程非常漫长,需要等待好长时间,大家慢慢等待吧,等待的过程中大家可以去做点其他的事情,然后就是慢慢等待吧!
当android源码下载完成后,就会在android目录下出现一些文件,对了,在下载的过程中,可能看不到那些文件,等下载完成后就会出现源码目录。以下是android源码的目录结构:
- |--Makefile
- |--bionic(bionicC库)
- |--bootable(启动引导相关代码)
- |--build(存放系统编译规则及generic等基础开发包配置)
- |--cts(Android兼容性测试套件标准)
- |--dalvik(dalvikJAVA虚拟机)
- |--development(应用程序开发相关)
- |--external(android使用的一些开源的模组)
- |--frameworks(核心框架——java及C++语言)
- |--hardware(部分厂家开源的硬解适配层HAL代码)
- |--out(编译完成后的代码输出与此目录)
- |--packages(应用程序包)
- |--prebuilt(x86和arm架构下预编译的一些资源)
- |--sdk(sdk及模拟器)
- |--system(底层文件系统库、应用及组件——C语言)
- `--vendor(厂商定制代码)
- bionic目录
- |--libc(C库)
- ||--arch-arm(ARM架构,包含系统调用汇编实现)
- ||--arch-x86(x86架构,包含系统调用汇编实现)
- ||--bionic(由C实现的功能,架构无关)
- ||--docs(文档)
- ||--include(头文件)
- ||--inet(?inet相关,具体作用不明)
- ||--kernel(Linux内核中的一些头文件)
- ||--netbsd(?nesbsd系统相关,具体作用不明)
- ||--private(?一些私有的头文件)
- ||--stdio(stdio实现)
- ||--stdlib(stdlib实现)
- ||--string(string函数实现)
- ||--tools(几个工具)
- ||--tzcode(时区相关代码)
- ||--unistd(unistd实现)
- |`--zoneinfo(时区信息)
- |--libdl(libdl实现,dl是动态链接,提供访问动态链接库的功能)
- |--libm(libm数学库的实现,)
- ||--alpha(apaha架构)
- ||--amd64(amd64架构)
- ||--arm(arm架构)
- ||--bsdsrc(?bsd的源码)
- ||--i386(i386架构)
- ||--i387(i387架构?)
- ||--ia64(ia64架构)
- ||--include(头文件)
- ||--man(数学函数,后缀名为.3,一些为freeBSD的库文件)
- ||--powerpc(powerpc架构)
- ||--sparc64(sparc64架构)
- |`--src(源代码)
- |--libstdc++(libstdc++C++实现库)
- ||--include(头文件)
- |`--src(源码)
- |--libthread_db(多线程程序的调试器库)
- |`--include(头文件)
- `--linker(动态链接器)
- `--arch(支持arm和x86两种架构)
- bootable目录
- .
- |--bootloader(适合各种bootloader的通用代码)
- |`--legacy(估计不能直接使用,可以参考)
- ||--arch_armv6(V6架构,几个简单的汇编文件)
- ||--arch_msm7k(高通7k处理器架构的几个基本驱动)
- ||--include(通用头文件和高通7k架构头文件)
- ||--libboot(启动库,都写得很简单)
- ||--libc(一些常用的c函数)
- ||--nandwrite(nandwirte函数实现)
- |`--usbloader(usbloader实现)
- |--diskinstaller(android镜像打包器,x86可生产iso)
- `--recovery(系统恢复相关)
- |--edify(升级脚本使用的edify脚本语言)
- |--etc(init.rc恢复脚本)
- |--minui(一个简单的UI)
- |--minzip(一个简单的压缩工具)
- |--mtdutils(mtd工具)
- |--res(资源)
- |`--images(一些图片)
- |--tools(工具)
- |`--ota(OTAOverTheAirUpdates升级工具)
- `--updater(升级器)
- build目录
- .
- |--core(核心编译规则)
- |--history(历史记录)
- |--libs
- |`--host(主机端库,有android“cp”功能替换)
- |--target(目标机编译对象)
- ||--board(开发平台)
- |||--emulator(模拟器)
- |||--generic(通用)
- |||--idea6410(自己添加的)
- ||`--sim(最简单)
- |`--product(开发平台对应的编译规则)
- |`--security(密钥相关)
- `--tools(编译中主机使用的工具及脚本)
- |--acp(Android"acp"Command)
- |--apicheck(api检查工具)
- |--applypatch(补丁工具)
- |--apriori(预链接工具)
- |--atree(tree工具)
- |--bin2asm(bin转换为asm工具)
- |--check_prereq(检查编译时间戳工具)
- |--dexpreopt(模拟器相关工具,具体功能不明)
- |--droiddoc(?作用不明,java语言,网上有人说和JDK5有关)
- |--fs_config(Thisprogramtakesalistoffilesanddirectories)
- |--fs_get_stats(获取文件系统状态)
- |--iself(判断是否ELF格式)
- |--isprelinked(判断是否prelinked)
- |--kcm(按键相关)
- |--lsd(Listsymboldependencies)
- |--releasetools(生成镜像的工具及脚本)
- |--rgb2565(rgb转换为565)
- |--signapk(apk签名工具)
- |--soslim(strip工具)
- `--zipalign(ziparchivealignmenttool)
- dalvik目录dalvik虚拟机
- .
- |--dalvikvm(main.c的目录)
- |--dexdump(dex反汇编)
- |--dexlist(ListallmethodsinallconcreteclassesinaDEXfile.)
- |--dexopt(预验证与优化)
- |--docs(文档)
- |--dvz(和zygote相关的一个命令)
- |--dx(dx工具,将多个java转换为dex)
- |--hit(?java语言写成)
- |--libcore(核心库)
- |--libcore-disabled(?禁用的库)
- |--libdex(dex的库)
- |--libnativehelper(SupportfunctionsforAndroid'sclasslibraries)
- |--tests(测试代码)
- |--tools(工具)
- `--vm(虚拟机实现)
- development目录(开发者需要的一些例程及工具)
- |--apps(一些核心应用程序)
- ||--BluetoothDebug(蓝牙调试程序)
- ||--CustomLocale(自定义区域设置)
- ||--Development(开发)
- ||--Fallback(和语言相关的一个程序)
- ||--FontLab(字库)
- ||--GestureBuilder(手势动作)
- ||--NinePatchLab(?)
- ||--OBJViewer(OBJ查看器)
- ||--SdkSetup(SDK安装器)
- ||--SpareParts(高级设置)
- ||--Term(远程登录)
- |`--launchperf(?)
- |--build(编译脚本模板)
- |--cmds(有个monkey工具)
- |--data(配置数据)
- |--docs(文档)
- |--host(主机端USB驱动等)
- |--ide(集成开发环境)
- |--ndk(本地开发套件——c语言开发套件)
- |--pdk(PlugDevelopmentKit)
- |--samples(例程)
- ||--AliasActivity(?)
- ||--ApiDemos(API演示程序)
- ||--BluetoothChat(蓝牙聊天)
- ||--BrowserPlugin(浏览器插件)
- ||--BusinessCard(商业卡)
- ||--Compass(指南针)
- ||--ContactManager(联系人管理器)
- ||--CubeLiveWallpaper(动态壁纸的一个简单例程)
- ||--FixedGridLayout(像是布局)
- ||--GlobalTime(全球时间)
- ||--HelloActivity(Hello)
- ||--Home(Home)
- ||--JetBoy(jetBoy游戏)
- ||--LunarLander(貌似又是一个游戏)
- ||--MailSync(邮件同步)
- ||--MultiResolution(多分辨率)
- ||--MySampleRss(RSS)
- ||--NotePad(记事本)
- ||--RSSReader(RSS阅读器)
- ||--SearchableDictionary(目录搜索)
- ||--SimpleJNI(JNI例程)
- ||--SkeletonApp(空壳APP)
- ||--Snake(snake程序)
- ||--SoftKeyboard(软键盘)
- ||--Wiktionary(?维基)
- |`--WiktionarySimple(?维基例程)
- |--scripts(脚本)
- |--sdk(sdk配置)
- |--simulator(?模拟器)
- |--testrunner(?测试用)
- `--tools(一些工具)
- external目录
- .
- |--aes(AES加密)
- |--apache-http(网页服务器)
- |--astl(ASTL(AndroidSTL)isaslimmed-downversionoftheregularC++STL.)
- |--bison(自动生成语法分析器,将无关文法转换成C、C++)
- |--blktrace(blktraceisablocklayerIOtracingmechanism)
- |--bluetooth(蓝牙相关、协议栈)
- |--bsdiff(diff工具)
- |--bzip2(压缩工具)
- |--clearsilver(html模板系统)
- |--dbus(低延时、低开销、高可用性的IPC机制)
- |--dhcpcd(DHCP服务)
- |--dosfstools(DOS文件系统工具)
- |--dropbear(SSH2的server)
- |--e2fsprogs(EXT2文件系统工具)
- |--elfcopy(复制ELF的工具)
- |--elfutils(ELF工具)
- |--embunit(EmbeddedUnitProject)
- |--emma(java代码覆盖率统计工具)
- |--esd(EnlightenedSoundDaemon,将多种音频流混合在一个设备上播放)
- |--expat(Expatisastream-orientedXMLparser.)
- |--fdlibm(FDLIBM(FreelyDistributableLIBM))
- |--freetype(字体)
- |--fsck_msdos(dos文件系统检查工具)
- |--gdata(google的无线数据相关)
- |--genext2fs(genext2fsgeneratesanext2filesystemasanormal(non-root)user)
- |--giflib(gif库)
- |--googleclient(google用户库)
- |--grub(ThisisGNUGRUB,theGRandUnifiedBootloader.)
- |--gtest(GoogleC++TestingFramework)
- |--icu4c(ICU(InternationalComponentforUnicode)在C/C++下的版本)
- |--ipsec-tools(ThispackageprovidesawaytousethenativeIPsecfunctionality)
- |--iptables(防火墙)
- |--jdiff(generateareportdescribingthedifferencebetweentwopublicJavaAPIs.)
- |--jhead(jpeg头部信息工具)
- |--jpeg(jpeg库)
- |--junit(JUnit是一个Java语言的单元测试框架)
- |--kernel-headers(内核的一些头文件)
- |--libffi(libffiisaforeignfunctioninterfacelibrary.)
- |--libpcap(网络数据包捕获函数)
- |--libpng(png库)
- |--libxml2(xml解析库)
- |--mtpd(一个命令)
- |--netcat(simpleUnixutilitywhichreadsandwritesdataacrossnetworkconnections)
- |--netperf(网络性能测量工具)
- |--neven(看代码和JNI相关)
- |--opencore(多媒体框架)
- |--openssl(SSL加密相关)
- |--openvpn(VPN开源库)
- |--oprofile(OProfile是Linux内核支持的一种性能分析机制。)
- |--ping(ping命令)
- |--ppp(pppd拨号命令,好像还没有chat)
- |--proguard(Javaclassfileshrinker,optimizer,obfuscator,andpreverifier)
- |--protobuf(aflexible,efficient,automatedmechanismforserializingstructureddata)
- |--qemu(arm模拟器)
- |--safe-iop(functionsforperformingsafeintegeroperations)
- |--skia(skia图形引擎)
- |--sonivox(soleMIDIsolutionforGoogleAndroidMobilePhonePlatform)
- |--speex(Speex编/解码API的使用(libspeex))
- |--sqlite(数据库)
- |--srec(Nuance公司提供的开源连续非特定人语音识别)
- |--strace(trace工具)
- |--svox(EmbeddedText-to-Speech)
- |--tagsoup(TagSoup是一个Java开发符合SAX的HTML解析器)
- |--tcpdump(抓TCP包的软件)
- |--tesseract(TesseractOpenSourceOCREngine.)
- |--tinyxml(TinyXmlisasimple,small,C++XMLparser)
- |--tremor(Istreamandfiledecoderprovidesanembeddable,integer-onlylibrary)
- |--webkit(浏览器核心)
- |--wpa_supplicant(无线网卡管理)
- |--xmlwriter(XML编辑工具)
- |--yaffs2(yaffs文件系统)
- `--zlib(ageneralpurposedatacompressionlibrary)
- frameworks目录(核心框架——java及C++语言)
- .
- |--base(基本内容)
- ||--api(?都是xml文件,定义了java的api?)
- ||--awt(AWT库)
- ||--build(空的)
- ||--camera(摄像头服务程序库)
- ||--cmds(重要命令:am、app_proce等)
- ||--core(核心库)
- ||--data(字体和声音等数据文件)
- ||--docs(文档)
- ||--graphics(图形相关)
- ||--include(头文件)
- ||--keystore(和数据签名证书相关)
- ||--libs(库)
- ||--location(地区库)
- ||--media(媒体相关库)
- ||--obex(蓝牙传输库)
- ||--opengl(2D-3D加速库)
- ||--packages(设置、TTS、VPN程序)
- ||--sax(XML解析器)
- ||--services(各种服务程序)
- ||--telephony(电话通讯管理)
- ||--test-runner(测试工具相关)
- ||--tests(各种测试)
- ||--tools(一些叫不上名的工具)
- ||--vpn(VPN)
- |`--wifi(无线网络)
- |--opt(可选部分)
- ||--com.google.android(有个framework.jar)
- ||--com.google.android.googlelogin(有个client.jar)
- |`--emoji(standardmessageelements)
- `--policies(Productpoliciesareoperatingsystemdirectionsaimedatspecificuses)
- `--base
- |--mid(MID设备)
- `--phone(手机类设备一般用这个,与锁屏有关的代码)
- hardware目录(部分厂家开源的硬解适配层HAL代码)
- |--broadcom(博通公司)
- |`--wlan(无线网卡)
- |--libhardware(硬件库)
- ||--include(头文件)
- |`--modules(Default(andpossiblyarchitecturedependents)HALmodules)
- ||--gralloc(gralloc显示相关)
- |`--overlay(Skeletonforthe"overlay"HALmodule.)
- |--libhardware_legacy(旧的硬件库)
- ||--flashlight(背光)
- ||--gps(GPS)
- ||--include(头文件)
- ||--mount(旧的挂载器)
- ||--power(电源)
- ||--qemu(模拟器)
- ||--qemu_tracing(模拟器跟踪)
- ||--tests(测试)
- ||--uevent(uevent)
- ||--vibrator(震动)
- |`--wifi(无线)
- |--msm7k(高通7k处理器开源抽象层)
- ||--boot(启动)
- ||--libaudio(声音库)
- ||--libaudio-qsd8k(qsd8k的声音相关库)
- ||--libcamera(摄像头库)
- ||--libcopybit(copybit库)
- ||--libgralloc(gralloc库)
- ||--libgralloc-qsd8k(qsd8k的gralloc库)
- ||--liblights(背光库)
- |`--librpc(RPC库)
- |--ril(无线电抽象层)
- ||--include(头文件)
- ||--libril(库)
- ||--reference-cdma-sms(cdma短信参考)
- ||--reference-ril(ril参考)
- |`--rild(ril后台服务程序)
- `--ti(ti公司开源HAL)
- |--omap3(omap3处理器)
- ||--dspbridge(DSP桥)
- ||--libopencorehw(opencore硬件库)
- ||--liboverlay(overlay硬件库)
- ||--libstagefrighthw(stagefright硬件库)
- |`--omx(omx组件)
- `--wlan(无线网卡)
- packages目录
- .
- |--apps(应用程序库)
- ||--AlarmClock(闹钟)
- ||--Bluetooth(蓝牙)
- ||--Browser(浏览器)
- ||--Calculator(计算器)
- ||--Calendar(日历)
- ||--Camera(相机)
- ||--CertInstaller(在Android中安装数字签名,被调用)
- ||--Contacts(拨号(调用)、联系人、通话记录)
- ||--DeskClock(桌面时钟)
- ||--Email(Email)
- ||--Gallery(相册,和Camera类似,多了列表)
- ||--Gallery3D(?3D相册)
- ||--GlobalSearch(为google搜索服务,提供底层应用)
- ||--GoogleSearch(google搜索)
- ||--HTMLViewer(浏览器附属界面,被浏览器应用调用,同时提供存储记录功能)
- ||--IM(即时通讯,为手机提供信号发送、接收、通信的服务)
- ||--Launcher(登陆启动项,显示图片框架等等图形界面)
- ||--Launcher2(登陆启动项,负责应用的调用)
- ||--Mms(?彩信业务)
- ||--Music(音乐播放器)
- ||--PackageInstaller(安装、卸载程序的响应)
- ||--Phone(电话拨号程序)
- ||--Provision(预设应用的状态,使能应用)
- ||--Settings(开机设定,包括电量、蓝牙、设备信息、界面、wifi等)
- ||--SoundRecorder(录音机,可计算存储所需空间和时间)
- ||--Stk(接收和发送短信)
- ||--Sync(空)-------○1
- ||--Updater(空)
- |`--VoiceDialer(语音识别通话)
- |--inputmethods(输入法)
- ||--LatinIME(拉丁文输入法)
- ||--OpenWnn(OpenWnn输入法)
- |`--PinyinIME(拼音输入法)
- |--providers(提供器,提供应用程序、界面所需的数据)
- ||--ApplicationsProvider(应用程序提供器,提供应用程序启动项、更新等)
- ||--CalendarProvider(日历提供器)
- ||--ContactsProvider(联系人提供器)
- ||--DownloadProvider(下载管理提供器)
- ||--DrmProvider(创建和更新数据库时调用)
- ||--GoogleContactsProvider(联系人提供器的子类,用以同步联系人)
- ||--GoogleSubscribedFeedsProvider(设置信息提供器)
- ||--ImProvider(空)
- ||--ManagementProvider(空)
- ||--MediaProvider(媒体提供器,提供存储数据)
- ||--TelephonyProvider(彩信提供器)
- ||--UserDictionaryProvider(用户字典提供器,提供用户常用字字典)
- |`--WebSearchProvider(空)
- |--services
- ||--EasService(空)
- |`--LockAndWipe(空)
- `--wallpapers(墙纸)
- |--Basic(基本墙纸,系统内置墙纸)
- |--LivePicker(选择动态壁纸)
- |--MagicSmoke(壁纸特殊效果)
- `--MusicVisualization(音乐可视化,图形随音乐而变化)
- ○1里面有一个隐藏的.git文件夹,内容都是一样的,没有有意义的代码,config看似乎是一个下载程序,因此认为这些文件夹下没有实质东西。
- prebuilt目录(x86和arm架构下预编译的一些资源)
- .
- |--android-arm(arm-android相关)
- ||--gdbserver(gdb调试器)
- |`--kernel(模拟的arm内核)
- |--android-x86(x86-android相关)
- |`--kernel(空的)
- |--common(通用编译好的代码,应该是java的)
- |--darwin-x86(drawinx86平台)
- |`--toolchain(工具链)
- ||--arm-eabi-4.2.1
- ||--arm-eabi-4.3.1
- |`--arm-eabi-4.4.0
- |--darwin-x86_64(drawinx8664bit平台)
- |--linux-x86(linuxx86平台)
- |`--toolchain(工具链,我们应该主要用这个)
- ||--arm-eabi-4.2.1
- ||--arm-eabi-4.3.1
- ||--arm-eabi-4.4.0
- |`--i686-unknown-linux-gnu-4.2.1(x86版编译器)
- |--linux-x86_64(linuxx8664bit平台)
- |--windows(windows平台)
- `--windows-x86_64(64bitwindows平台)
- system目录(底层文件系统库、应用及组件——C语言)
- .
- |--Bluetooth(蓝牙相关)
- |--core(系统核心工具盒接口)
- ||--adb(adb调试工具)
- ||--cpio(cpio工具,创建img)
- ||--debuggerd(调试工具)
- ||--fastboot(快速启动相关)
- ||--include(系统接口头文件)
- ||--init(init程序源代码)
- ||--libacc(轻量级C编译器)
- ||--libctest(libc测试相关)
- ||--libcutils(libc工具)
- ||--liblog(log库)
- ||--libmincrypt(加密库)
- ||--libnetutils(网络工具库)
- ||--libpixelflinger(图形处理库)
- ||--libsysutils(系统工具库)
- ||--libzipfile(zip库)
- ||--logcat(查看log工具)
- ||--logwrapper(log封装工具)
- ||--mkbootimg(制作启动boot.img的工具盒脚本)
- ||--netcfg(网络配置netcfg源码)
- ||--nexus(google最新手机的代码)
- ||--rootdir(rootfs,包含一些etc下的脚本和配置)
- ||--sh(shell代码)
- ||--toolbox(toolbox,类似busybox的工具集)
- |`--vold(SD卡管理器)
- |--extras(额外工具)
- ||--latencytop(atoolforsoftwaredevelopers,identifyingsystemlatencyhappen)
- ||--libpagemap(pagemap库)
- ||--librank(JavaLibraryRankingSystem库)
- ||--procmem(pagemap相关)
- ||--procrank(JavaLibraryRankingSystem相关)
- ||--showmap(showmap工具)
- ||--showslab(showslab工具)
- ||--sound(声音相关)
- ||--su(su命令源码)
- ||--tests(一些测试工具)
- |`--timeinfo(时区相关)
- `--wlan(无线相关)
- `--ti(ti网卡相关工具及库)
- vendor目录(厂家定制内容)
- |--aosp(androidopensourceproject)
- |`--products(一些板级规则)
- |--htc(HTC公司)
- ||--common-open(通用部分)
- ||`--akmd(解压img用的工具)
- ||--dream-open(G1开放部分)
- ||--prebuilt-open(预编译开放部分)
- |`--sapphire-open(sapphire这款型号开放内容)
- |--pv-open(没东西)
- |--qcom(里面基本是空的)
- `--sample(google提供的样例)
- |--apps(应用)
- ||--client(用户)
- |`--upgrade(升级)
- |--frameworks(框架)
- |`--PlatformLibrary(平台库)
- |--products(产品)
- |--sdk_addon(sdk添加部分)
- `--skins(皮肤)
- `--WVGAMedDpi(WVGA适用的图片)
四、Android 源码的编译(make)
源码下载完成后接下来就是对源码的编译了,下载好源码后,会在android目录下有一个MakeFile文件,然后直接在终端下输入make既可以对android源码进行编译,在编译的过程中依然会出现很多的错误,接下来,参照网上给出的一些错误和解决方法:
1、/usr/bin/ld: cannot find -lz
host Executable: aapt (out/host/linux-x86/obj/EXECUTABLES/aapt_intermediates/aapt)
/usr/bin/ld: cannot find -lz
collect2: ld returned 1 exit status
make: *** [out/host/linux-x86/obj/EXECUTABLES/aapt_intermediates/aapt] Error 1
解决方法:sudo apt-get install zlib1g-dev sudo apt-get install lib64z1-dev
2、/bin/bash: bison: command not found
Yacc: aidl <= frameworks/base/tools/aidl/aidl_language_y.y
bison -d -o out/host/linux-x86/obj/EXECUTABLES/aidl_intermediates/aidl_language_y.cpp frameworks/base/tools/aidl/aidl_language_y.y
/bin/bash: bison: command not found
make: *** [out/host/linux-x86/obj/EXECUTABLES/aidl_intermediates/aidl_language_y.cpp] Error 127
解决方法:sudo apt-get install bison
3、/bin/bash: flex: command not found
out/host/linux-x86/obj/EXECUTABLES/aidl_intermediates/aidl_language_y.cpp: In function ‘int yyparse()’:
out/host/linux-x86/obj/EXECUTABLES/aidl_intermediates/aidl_language_y.cpp:1827: warning: deprecated conversion from string constant to ‘char*’
out/host/linux-x86/obj/EXECUTABLES/aidl_intermediates/aidl_language_y.cpp:1970: warning: deprecated conversion from string constant to ‘char*’
Lex: aidl <= frameworks/base/tools/aidl/aidl_language_l.l
/bin/bash: flex: command not found
make: *** [out/host/linux-x86/obj/EXECUTABLES/aidl_intermediates/aidl_language_l.cpp] Error 127
解决方法:sudo apt-get install flex
4、/usr/bin/ld: cannot find -lncurses
host Executable: adb (out/host/linux-x86/obj/EXECUTABLES/adb_intermediates/adb)
/usr/bin/ld: cannot find -lncurses
collect2: ld returned 1 exit status
make: *** [out/host/linux-x86/obj/EXECUTABLES/adb_intermediates/adb] Error 1
解决方法:sudo apt-get install libncurses5-dev
5、fatal error: GL/glx.h: No such file or directory
development/tools/emulator/opengl/host/libs/Translator/GLcommon/GLDispatch.cpp:22: fatal error: GL/glx.h: No such file or directory
compilation terminated.
make: *** [out/host/linux-x86/obj/STATIC_LIBRARIES/libGLcommon_intermediates/GLDispatch.o] Error 1
解决方法:sudo apt-get install libgl1-mesa-dev
6、sh: gperf: not found
target Generated: libwebcore <= external/webkit/Source/JavaScriptCore/create_regex_tables
Generating CSSPropertyNames.h <= CSSPropertyNames.in
sh: gperf: not found
calling gperf failed: 32512 at ./makeprop.pl line 140.
make: *** [out/target/product/generic/obj/STATIC_LIBRARIES/libwebcore_intermediates/Source/WebCore/css/CSSPropertyNames.h] Error 25
make: *** Deleting file `out/target/product/generic/obj/STATIC_LIBRARIES/libwebcore_intermediates/Source/WebCore/css/CSSPropertyNames.h'
解决方法:sudo apt-get install gperf
五、编译SDK
编译SDK可以得到与源码同步的SDK,还会生成一些tools,在源码根目录下:
- $sudomakePRODUCT-sdk-sdk
编译生成的SDK在out/host/linux-x86/SDK下。之后如果在ubuntu下使用eclipse进行开发,可以使用你编译的SDK。
下面就在模拟器中运行镜像,建议切到root用户下,首先配置几个环境变量,将自己编译的SDK设为优先级最高,在源码根目录下执行:
- $update-alternatives--install/usr/bin/AndroidSDKAndroidSDK./out/host/linux-x86/sdk/android-sdk_eng.root_linux-x86255
这样会在/etc/alternatives下生成一个指向该SDK目录的软连接AndroidSDK,这个目录主要存放一些系统默认打开的程序的信息和配置。那么/usr/bin/AndroidSDK就指向这个软连接。接着执行:
- $gedit~/.bashrc
在文件末尾添加:
- exportANDROID_SDK_HOME=/usr/bin/AndroidSDK
- exportPATH=$ANDROID_SDK_HOME/tools:$PATH
- exportANDROID_PRODUCT_OUT=~/android/out/target/product/generic
接着就可以执行:
$emulator
运行的就是你编译的映像。执行emulator 命令时,如果不带任何参数,则Linux Kernel镜像默认使用~/Android/prebuilt/android-arm/kernel目录下的kernel-qemu文件,而
Android镜像文件则默认使用ANDROID_PRODUCT_OUT目录下的system.img、userdata.img和ramdisk.img。模拟器运行需要这四个文件,如果你编译了内核则可以使用自己的Kernel镜像,可用于android移植等。
六、单独编译模块
如果你不想编译整个系统,就想编译某一个应用程序,可以使用mmm命令,使用之前,在源码目录下先要执行:
- $build/envsetup.sh
这样会生成一些命令,有m即make、mm编译当前目录下所有模块、mmm编译指定目录下所有模块。你可以把packages/apps/Music应用的application name改成MyMusic(AndroidManifest.xml中),然后执行:
- $mmmpackages/apps/Music
在out/target/product/generic/system/app中就可以看见Music.apk,然后执行:
- $makesnod
重新生成system.img。
以上仅仅只是我个人遇到的问题,然后在网上查找资料解决后,运行成功,如果遇到其他问题,可以在网上寻找其他的解决办法,另外可以参考官网:
http://source.android.com/source/initializing.html
引用网址:http://blog.csdn.net/xdhywj/article/details/8608243
相关推荐
Java编写的网页版魔方游戏,编译后生成.class文件,然后用HTML去调用,不过运行时候需要你的浏览器安装有运行Class的插件。Java源代码实现部分,比较有意思,也具参考性。像坐标控制、旋转矩阵、定时器、生成图像...
此时此景,笔者只专注Android、Iphone等移动平台开发,看着这些源码心中有万分感慨,写此文章纪念那时那景! Java 源码包 Applet钢琴模拟程序java源码 2个目标文件,提供基本的音乐编辑功能。编辑音乐软件的朋友,这...
JSEditor 是 Eclipse 下编辑 JavaScript 源码的插件,提供语法高亮以及一些通用的面向对象方法。 Java数据库连接池 BoneCP BoneCP 是一个高性能的开源java数据库连接池实现库。它的设计初衷就是为了提高数据库连接...
JSEditor 是 Eclipse 下编辑 JavaScript 源码的插件,提供语法高亮以及一些通用的面向对象方法。 Java数据库连接池 BoneCP BoneCP 是一个高性能的开源java数据库连接池实现库。它的设计初衷就是为了提高数据库连接...
JSEditor 是 Eclipse 下编辑 JavaScript 源码的插件,提供语法高亮以及一些通用的面向对象方法。 Java数据库连接池 BoneCP BoneCP 是一个高性能的开源java数据库连接池实现库。它的设计初衷就是为了提高数据库连接...
JSEditor 是 Eclipse 下编辑 JavaScript 源码的插件,提供语法高亮以及一些通用的面向对象方法。 Java数据库连接池 BoneCP BoneCP 是一个高性能的开源java数据库连接池实现库。它的设计初衷就是为了提高数据库连接...
JSEditor 是 Eclipse 下编辑 JavaScript 源码的插件,提供语法高亮以及一些通用的面向对象方法。 Java数据库连接池 BoneCP BoneCP 是一个高性能的开源java数据库连接池实现库。它的设计初衷就是为了提高数据库连接...
JSEditor 是 Eclipse 下编辑 JavaScript 源码的插件,提供语法高亮以及一些通用的面向对象方法。 Java数据库连接池 BoneCP BoneCP 是一个高性能的开源java数据库连接池实现库。它的设计初衷就是为了提高数据库连接...
JSEditor 是 Eclipse 下编辑 JavaScript 源码的插件,提供语法高亮以及一些通用的面向对象方法。 Java数据库连接池 BoneCP BoneCP 是一个高性能的开源java数据库连接池实现库。它的设计初衷就是为了提高数据库连接...
JSEditor 是 Eclipse 下编辑 JavaScript 源码的插件,提供语法高亮以及一些通用的面向对象方法。 Java数据库连接池 BoneCP BoneCP 是一个高性能的开源java数据库连接池实现库。它的设计初衷就是为了提高数据库连接...
JSEditor 是 Eclipse 下编辑 JavaScript 源码的插件,提供语法高亮以及一些通用的面向对象方法。 Java数据库连接池 BoneCP BoneCP 是一个高性能的开源java数据库连接池实现库。它的设计初衷就是为了提高数据库连接...
JSEditor 是 Eclipse 下编辑 JavaScript 源码的插件,提供语法高亮以及一些通用的面向对象方法。 Java数据库连接池 BoneCP BoneCP 是一个高性能的开源java数据库连接池实现库。它的设计初衷就是为了提高数据库连接...
JSEditor 是 Eclipse 下编辑 JavaScript 源码的插件,提供语法高亮以及一些通用的面向对象方法。 Java数据库连接池 BoneCP BoneCP 是一个高性能的开源java数据库连接池实现库。它的设计初衷就是为了提高数据库连接...
JSEditor 是 Eclipse 下编辑 JavaScript 源码的插件,提供语法高亮以及一些通用的面向对象方法。 Java数据库连接池 BoneCP BoneCP 是一个高性能的开源java数据库连接池实现库。它的设计初衷就是为了提高数据库连接...
JSEditor 是 Eclipse 下编辑 JavaScript 源码的插件,提供语法高亮以及一些通用的面向对象方法。 Java数据库连接池 BoneCP BoneCP 是一个高性能的开源java数据库连接池实现库。它的设计初衷就是为了提高数据库连接...