`

完整版linux下android源码下载、编译、模拟器启动运行

 
阅读更多

一、环境说明:

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
编辑你的源列表,将原来的内容全部删除,添加下面的源,复制到你的列表中,然后保存列表。

[plain]view plaincopy
 
  1. ##Majorbugfixupdatesproducedafterthefinalreleaseofthe
  2. ##distribution.
  3. debhttp://old-releases.ubuntu.com/ubuntu/maverickmainrestricted
  4. deb-srchttp://old-releases.ubuntu.com/ubuntu/maverickmainrestricted
  5. debhttp://old-releases.ubuntu.com/ubuntu/maverick-updatesmainrestricted
  6. deb-srchttp://old-releases.ubuntu.com/ubuntu/maverick-updatesmainrestricted
  7. ##N.B.softwarefromthisrepositoryisENTIRELYUNSUPPORTEDbytheUbuntu
  8. ##team.Also,pleasenotethatsoftwareinuniverseWILLNOTreceiveany
  9. ##revieworupdatesfromtheUbuntusecurityteam.
  10. debhttp://old-releases.ubuntu.com/ubuntu/maverickuniverse
  11. deb-srchttp://old-releases.ubuntu.com/ubuntu/maverickuniverse
  12. debhttp://old-releases.ubuntu.com/ubuntu/maverick-updatesuniverse
  13. deb-srchttp://old-releases.ubuntu.com/ubuntu/maverick-updatesuniverse
  14. ##N.B.softwarefromthisrepositoryisENTIRELYUNSUPPORTEDbytheUbuntu
  15. ##team,andmaynotbeunderafreelicence.Pleasesatisfyyourselfasto
  16. ##yourrightstousethesoftware.Also,pleasenotethatsoftwarein
  17. ##multiverseWILLNOTreceiveanyrevieworupdatesfromtheUbuntu
  18. ##securityteam.
  19. debhttp://old-releases.ubuntu.com/ubuntu/maverickmultiverse
  20. deb-srchttp://old-releases.ubuntu.com/ubuntu/maverickmultiverse
  21. debhttp://old-releases.ubuntu.com/ubuntu/maverick-updatesmultiverse
  22. deb-srchttp://old-releases.ubuntu.com/ubuntu/maverick-updatesmultiverse
  23. ##Uncommentthefollowingtwolinestoaddsoftwarefromthe'backports'
  24. ##repository.
  25. ##N.B.softwarefromthisrepositorymaynothavebeentestedas
  26. ##extensivelyasthatcontainedinthemainrelease,althoughitincludes
  27. ##newerversionsofsomeapplicationswhichmayprovideusefulfeatures.
  28. ##Also,pleasenotethatsoftwareinbackportsWILLNOTreceiveanyreview
  29. ##orupdatesfromtheUbuntusecurityteam.
  30. #debhttp://us.old-releases.ubuntu.com/ubuntu/maverick-backportsmainrestricteduniversemultiverse
  31. #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。打开源列表,在最后一行添加

[plain]view plaincopy
 
  1. 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 安装与使

[plain]view plaincopy
 
  1. $sudoapt-getinstallgit
  2. $sudoapt-getinstallgit-core

通过命令更新版本库

[plain]view plaincopy
 
  1. gitclonegit://git.kernel.org/pub/scm/git/git.git

2、安装curl

[plain]view plaincopy
 
  1. $sudoapt-getinstallcurl

3、获取repo

按照说明,执行:

[plain]view plaincopy
 
  1. $mkdir~/bin
  2. $PATH=~/bin:$PATH
  3. $curl"http://php.webtutor.pl/en/wp-content/uploads/2011/09/repo">~/bin/repo

下面就是修改它的属性:

[plain]view plaincopy
 
  1. $chmoda+x~/bin/repo
  2. $PATH=~/bin:$PATH

4、开始下载android源码

首先执行:

[plain]view plaincopy
 
  1. $repoinit-uhttps://android.googlesource.com/platform/manifest

然后再执行:

[plain]view plaincopy
 
  1. $repoinit-uhttps://android.googlesource.com/platform/manifest-bandroid-2.3.3_r1

这个执行完了会有要求你输入姓名和邮箱的,但是邮箱一定是谷歌的就行,不过不用输入邮箱和密码也可以,直接按下Enter键就行。

然后创建目录用于存放下载下来的android源码:

[plain]view plaincopy
 
  1. $mkdirAndriod
  2. $cdAndriod
  3. $repoinit-ugit://codeaurora.org/platform/manifest.git-bgingerbread

最后就是在线拉取android源码了:

[plain]view plaincopy
 
  1. $reposync

嗯,如果已经开始进行下载了,表示已经顺利的开始下载android源码了。这个过程非常漫长,需要等待好长时间,大家慢慢等待吧,等待的过程中大家可以去做点其他的事情,然后就是慢慢等待吧!

当android源码下载完成后,就会在android目录下出现一些文件,对了,在下载的过程中,可能看不到那些文件,等下载完成后就会出现源码目录。以下是android源码的目录结构:

[plain]view plaincopy
 
  1. |--Makefile
  2. |--bionic(bionicC库)
  3. |--bootable(启动引导相关代码)
  4. |--build(存放系统编译规则及generic等基础开发包配置)
  5. |--cts(Android兼容性测试套件标准)
  6. |--dalvik(dalvikJAVA虚拟机)
  7. |--development(应用程序开发相关)
  8. |--external(android使用的一些开源的模组)
  9. |--frameworks(核心框架——java及C++语言)
  10. |--hardware(部分厂家开源的硬解适配层HAL代码)
  11. |--out(编译完成后的代码输出与此目录)
  12. |--packages(应用程序包)
  13. |--prebuilt(x86和arm架构下预编译的一些资源)
  14. |--sdk(sdk及模拟器)
  15. |--system(底层文件系统库、应用及组件——C语言)
  16. `--vendor(厂商定制代码)
  17. bionic目录
  18. |--libc(C库)
  19. ||--arch-arm(ARM架构,包含系统调用汇编实现)
  20. ||--arch-x86(x86架构,包含系统调用汇编实现)
  21. ||--bionic(由C实现的功能,架构无关)
  22. ||--docs(文档)
  23. ||--include(头文件)
  24. ||--inet(?inet相关,具体作用不明)
  25. ||--kernel(Linux内核中的一些头文件)
  26. ||--netbsd(?nesbsd系统相关,具体作用不明)
  27. ||--private(?一些私有的头文件)
  28. ||--stdio(stdio实现)
  29. ||--stdlib(stdlib实现)
  30. ||--string(string函数实现)
  31. ||--tools(几个工具)
  32. ||--tzcode(时区相关代码)
  33. ||--unistd(unistd实现)
  34. |`--zoneinfo(时区信息)
  35. |--libdl(libdl实现,dl是动态链接,提供访问动态链接库的功能)
  36. |--libm(libm数学库的实现,)
  37. ||--alpha(apaha架构)
  38. ||--amd64(amd64架构)
  39. ||--arm(arm架构)
  40. ||--bsdsrc(?bsd的源码)
  41. ||--i386(i386架构)
  42. ||--i387(i387架构?)
  43. ||--ia64(ia64架构)
  44. ||--include(头文件)
  45. ||--man(数学函数,后缀名为.3,一些为freeBSD的库文件)
  46. ||--powerpc(powerpc架构)
  47. ||--sparc64(sparc64架构)
  48. |`--src(源代码)
  49. |--libstdc++(libstdc++C++实现库)
  50. ||--include(头文件)
  51. |`--src(源码)
  52. |--libthread_db(多线程程序的调试器库)
  53. |`--include(头文件)
  54. `--linker(动态链接器)
  55. `--arch(支持arm和x86两种架构)
  56. bootable目录
  57. .
  58. |--bootloader(适合各种bootloader的通用代码)
  59. |`--legacy(估计不能直接使用,可以参考)
  60. ||--arch_armv6(V6架构,几个简单的汇编文件)
  61. ||--arch_msm7k(高通7k处理器架构的几个基本驱动)
  62. ||--include(通用头文件和高通7k架构头文件)
  63. ||--libboot(启动库,都写得很简单)
  64. ||--libc(一些常用的c函数)
  65. ||--nandwrite(nandwirte函数实现)
  66. |`--usbloader(usbloader实现)
  67. |--diskinstaller(android镜像打包器,x86可生产iso)
  68. `--recovery(系统恢复相关)
  69. |--edify(升级脚本使用的edify脚本语言)
  70. |--etc(init.rc恢复脚本)
  71. |--minui(一个简单的UI)
  72. |--minzip(一个简单的压缩工具)
  73. |--mtdutils(mtd工具)
  74. |--res(资源)
  75. |`--images(一些图片)
  76. |--tools(工具)
  77. |`--ota(OTAOverTheAirUpdates升级工具)
  78. `--updater(升级器)
  79. build目录
  80. .
  81. |--core(核心编译规则)
  82. |--history(历史记录)
  83. |--libs
  84. |`--host(主机端库,有android“cp”功能替换)
  85. |--target(目标机编译对象)
  86. ||--board(开发平台)
  87. |||--emulator(模拟器)
  88. |||--generic(通用)
  89. |||--idea6410(自己添加的)
  90. ||`--sim(最简单)
  91. |`--product(开发平台对应的编译规则)
  92. |`--security(密钥相关)
  93. `--tools(编译中主机使用的工具及脚本)
  94. |--acp(Android"acp"Command)
  95. |--apicheck(api检查工具)
  96. |--applypatch(补丁工具)
  97. |--apriori(预链接工具)
  98. |--atree(tree工具)
  99. |--bin2asm(bin转换为asm工具)
  100. |--check_prereq(检查编译时间戳工具)
  101. |--dexpreopt(模拟器相关工具,具体功能不明)
  102. |--droiddoc(?作用不明,java语言,网上有人说和JDK5有关)
  103. |--fs_config(Thisprogramtakesalistoffilesanddirectories)
  104. |--fs_get_stats(获取文件系统状态)
  105. |--iself(判断是否ELF格式)
  106. |--isprelinked(判断是否prelinked)
  107. |--kcm(按键相关)
  108. |--lsd(Listsymboldependencies)
  109. |--releasetools(生成镜像的工具及脚本)
  110. |--rgb2565(rgb转换为565)
  111. |--signapk(apk签名工具)
  112. |--soslim(strip工具)
  113. `--zipalign(ziparchivealignmenttool)
  114. dalvik目录dalvik虚拟机
  115. .
  116. |--dalvikvm(main.c的目录)
  117. |--dexdump(dex反汇编)
  118. |--dexlist(ListallmethodsinallconcreteclassesinaDEXfile.)
  119. |--dexopt(预验证与优化)
  120. |--docs(文档)
  121. |--dvz(和zygote相关的一个命令)
  122. |--dx(dx工具,将多个java转换为dex)
  123. |--hit(?java语言写成)
  124. |--libcore(核心库)
  125. |--libcore-disabled(?禁用的库)
  126. |--libdex(dex的库)
  127. |--libnativehelper(SupportfunctionsforAndroid'sclasslibraries)
  128. |--tests(测试代码)
  129. |--tools(工具)
  130. `--vm(虚拟机实现)
  131. development目录(开发者需要的一些例程及工具)
  132. |--apps(一些核心应用程序)
  133. ||--BluetoothDebug(蓝牙调试程序)
  134. ||--CustomLocale(自定义区域设置)
  135. ||--Development(开发)
  136. ||--Fallback(和语言相关的一个程序)
  137. ||--FontLab(字库)
  138. ||--GestureBuilder(手势动作)
  139. ||--NinePatchLab(?)
  140. ||--OBJViewer(OBJ查看器)
  141. ||--SdkSetup(SDK安装器)
  142. ||--SpareParts(高级设置)
  143. ||--Term(远程登录)
  144. |`--launchperf(?)
  145. |--build(编译脚本模板)
  146. |--cmds(有个monkey工具)
  147. |--data(配置数据)
  148. |--docs(文档)
  149. |--host(主机端USB驱动等)
  150. |--ide(集成开发环境)
  151. |--ndk(本地开发套件——c语言开发套件)
  152. |--pdk(PlugDevelopmentKit)
  153. |--samples(例程)
  154. ||--AliasActivity(?)
  155. ||--ApiDemos(API演示程序)
  156. ||--BluetoothChat(蓝牙聊天)
  157. ||--BrowserPlugin(浏览器插件)
  158. ||--BusinessCard(商业卡)
  159. ||--Compass(指南针)
  160. ||--ContactManager(联系人管理器)
  161. ||--CubeLiveWallpaper(动态壁纸的一个简单例程)
  162. ||--FixedGridLayout(像是布局)
  163. ||--GlobalTime(全球时间)
  164. ||--HelloActivity(Hello)
  165. ||--Home(Home)
  166. ||--JetBoy(jetBoy游戏)
  167. ||--LunarLander(貌似又是一个游戏)
  168. ||--MailSync(邮件同步)
  169. ||--MultiResolution(多分辨率)
  170. ||--MySampleRss(RSS)
  171. ||--NotePad(记事本)
  172. ||--RSSReader(RSS阅读器)
  173. ||--SearchableDictionary(目录搜索)
  174. ||--SimpleJNI(JNI例程)
  175. ||--SkeletonApp(空壳APP)
  176. ||--Snake(snake程序)
  177. ||--SoftKeyboard(软键盘)
  178. ||--Wiktionary(?维基)
  179. |`--WiktionarySimple(?维基例程)
  180. |--scripts(脚本)
  181. |--sdk(sdk配置)
  182. |--simulator(?模拟器)
  183. |--testrunner(?测试用)
  184. `--tools(一些工具)
  185. external目录
  186. .
  187. |--aes(AES加密)
  188. |--apache-http(网页服务器)
  189. |--astl(ASTL(AndroidSTL)isaslimmed-downversionoftheregularC++STL.)
  190. |--bison(自动生成语法分析器,将无关文法转换成C、C++)
  191. |--blktrace(blktraceisablocklayerIOtracingmechanism)
  192. |--bluetooth(蓝牙相关、协议栈)
  193. |--bsdiff(diff工具)
  194. |--bzip2(压缩工具)
  195. |--clearsilver(html模板系统)
  196. |--dbus(低延时、低开销、高可用性的IPC机制)
  197. |--dhcpcd(DHCP服务)
  198. |--dosfstools(DOS文件系统工具)
  199. |--dropbear(SSH2的server)
  200. |--e2fsprogs(EXT2文件系统工具)
  201. |--elfcopy(复制ELF的工具)
  202. |--elfutils(ELF工具)
  203. |--embunit(EmbeddedUnitProject)
  204. |--emma(java代码覆盖率统计工具)
  205. |--esd(EnlightenedSoundDaemon,将多种音频流混合在一个设备上播放)
  206. |--expat(Expatisastream-orientedXMLparser.)
  207. |--fdlibm(FDLIBM(FreelyDistributableLIBM))
  208. |--freetype(字体)
  209. |--fsck_msdos(dos文件系统检查工具)
  210. |--gdata(google的无线数据相关)
  211. |--genext2fs(genext2fsgeneratesanext2filesystemasanormal(non-root)user)
  212. |--giflib(gif库)
  213. |--googleclient(google用户库)
  214. |--grub(ThisisGNUGRUB,theGRandUnifiedBootloader.)
  215. |--gtest(GoogleC++TestingFramework)
  216. |--icu4c(ICU(InternationalComponentforUnicode)在C/C++下的版本)
  217. |--ipsec-tools(ThispackageprovidesawaytousethenativeIPsecfunctionality)
  218. |--iptables(防火墙)
  219. |--jdiff(generateareportdescribingthedifferencebetweentwopublicJavaAPIs.)
  220. |--jhead(jpeg头部信息工具)
  221. |--jpeg(jpeg库)
  222. |--junit(JUnit是一个Java语言的单元测试框架)
  223. |--kernel-headers(内核的一些头文件)
  224. |--libffi(libffiisaforeignfunctioninterfacelibrary.)
  225. |--libpcap(网络数据包捕获函数)
  226. |--libpng(png库)
  227. |--libxml2(xml解析库)
  228. |--mtpd(一个命令)
  229. |--netcat(simpleUnixutilitywhichreadsandwritesdataacrossnetworkconnections)
  230. |--netperf(网络性能测量工具)
  231. |--neven(看代码和JNI相关)
  232. |--opencore(多媒体框架)
  233. |--openssl(SSL加密相关)
  234. |--openvpn(VPN开源库)
  235. |--oprofile(OProfile是Linux内核支持的一种性能分析机制。)
  236. |--ping(ping命令)
  237. |--ppp(pppd拨号命令,好像还没有chat)
  238. |--proguard(Javaclassfileshrinker,optimizer,obfuscator,andpreverifier)
  239. |--protobuf(aflexible,efficient,automatedmechanismforserializingstructureddata)
  240. |--qemu(arm模拟器)
  241. |--safe-iop(functionsforperformingsafeintegeroperations)
  242. |--skia(skia图形引擎)
  243. |--sonivox(soleMIDIsolutionforGoogleAndroidMobilePhonePlatform)
  244. |--speex(Speex编/解码API的使用(libspeex))
  245. |--sqlite(数据库)
  246. |--srec(Nuance公司提供的开源连续非特定人语音识别)
  247. |--strace(trace工具)
  248. |--svox(EmbeddedText-to-Speech)
  249. |--tagsoup(TagSoup是一个Java开发符合SAX的HTML解析器)
  250. |--tcpdump(抓TCP包的软件)
  251. |--tesseract(TesseractOpenSourceOCREngine.)
  252. |--tinyxml(TinyXmlisasimple,small,C++XMLparser)
  253. |--tremor(Istreamandfiledecoderprovidesanembeddable,integer-onlylibrary)
  254. |--webkit(浏览器核心)
  255. |--wpa_supplicant(无线网卡管理)
  256. |--xmlwriter(XML编辑工具)
  257. |--yaffs2(yaffs文件系统)
  258. `--zlib(ageneralpurposedatacompressionlibrary)
  259. frameworks目录(核心框架——java及C++语言)
  260. .
  261. |--base(基本内容)
  262. ||--api(?都是xml文件,定义了java的api?)
  263. ||--awt(AWT库)
  264. ||--build(空的)
  265. ||--camera(摄像头服务程序库)
  266. ||--cmds(重要命令:am、app_proce等)
  267. ||--core(核心库)
  268. ||--data(字体和声音等数据文件)
  269. ||--docs(文档)
  270. ||--graphics(图形相关)
  271. ||--include(头文件)
  272. ||--keystore(和数据签名证书相关)
  273. ||--libs(库)
  274. ||--location(地区库)
  275. ||--media(媒体相关库)
  276. ||--obex(蓝牙传输库)
  277. ||--opengl(2D-3D加速库)
  278. ||--packages(设置、TTS、VPN程序)
  279. ||--sax(XML解析器)
  280. ||--services(各种服务程序)
  281. ||--telephony(电话通讯管理)
  282. ||--test-runner(测试工具相关)
  283. ||--tests(各种测试)
  284. ||--tools(一些叫不上名的工具)
  285. ||--vpn(VPN)
  286. |`--wifi(无线网络)
  287. |--opt(可选部分)
  288. ||--com.google.android(有个framework.jar)
  289. ||--com.google.android.googlelogin(有个client.jar)
  290. |`--emoji(standardmessageelements)
  291. `--policies(Productpoliciesareoperatingsystemdirectionsaimedatspecificuses)
  292. `--base
  293. |--mid(MID设备)
  294. `--phone(手机类设备一般用这个,与锁屏有关的代码)
  295. hardware目录(部分厂家开源的硬解适配层HAL代码)
  296. |--broadcom(博通公司)
  297. |`--wlan(无线网卡)
  298. |--libhardware(硬件库)
  299. ||--include(头文件)
  300. |`--modules(Default(andpossiblyarchitecturedependents)HALmodules)
  301. ||--gralloc(gralloc显示相关)
  302. |`--overlay(Skeletonforthe"overlay"HALmodule.)
  303. |--libhardware_legacy(旧的硬件库)
  304. ||--flashlight(背光)
  305. ||--gps(GPS)
  306. ||--include(头文件)
  307. ||--mount(旧的挂载器)
  308. ||--power(电源)
  309. ||--qemu(模拟器)
  310. ||--qemu_tracing(模拟器跟踪)
  311. ||--tests(测试)
  312. ||--uevent(uevent)
  313. ||--vibrator(震动)
  314. |`--wifi(无线)
  315. |--msm7k(高通7k处理器开源抽象层)
  316. ||--boot(启动)
  317. ||--libaudio(声音库)
  318. ||--libaudio-qsd8k(qsd8k的声音相关库)
  319. ||--libcamera(摄像头库)
  320. ||--libcopybit(copybit库)
  321. ||--libgralloc(gralloc库)
  322. ||--libgralloc-qsd8k(qsd8k的gralloc库)
  323. ||--liblights(背光库)
  324. |`--librpc(RPC库)
  325. |--ril(无线电抽象层)
  326. ||--include(头文件)
  327. ||--libril(库)
  328. ||--reference-cdma-sms(cdma短信参考)
  329. ||--reference-ril(ril参考)
  330. |`--rild(ril后台服务程序)
  331. `--ti(ti公司开源HAL)
  332. |--omap3(omap3处理器)
  333. ||--dspbridge(DSP桥)
  334. ||--libopencorehw(opencore硬件库)
  335. ||--liboverlay(overlay硬件库)
  336. ||--libstagefrighthw(stagefright硬件库)
  337. |`--omx(omx组件)
  338. `--wlan(无线网卡)
  339. packages目录
  340. .
  341. |--apps(应用程序库)
  342. ||--AlarmClock(闹钟)
  343. ||--Bluetooth(蓝牙)
  344. ||--Browser(浏览器)
  345. ||--Calculator(计算器)
  346. ||--Calendar(日历)
  347. ||--Camera(相机)
  348. ||--CertInstaller(在Android中安装数字签名,被调用)
  349. ||--Contacts(拨号(调用)、联系人、通话记录)
  350. ||--DeskClock(桌面时钟)
  351. ||--Email(Email)
  352. ||--Gallery(相册,和Camera类似,多了列表)
  353. ||--Gallery3D(?3D相册)
  354. ||--GlobalSearch(为google搜索服务,提供底层应用)
  355. ||--GoogleSearch(google搜索)
  356. ||--HTMLViewer(浏览器附属界面,被浏览器应用调用,同时提供存储记录功能)
  357. ||--IM(即时通讯,为手机提供信号发送、接收、通信的服务)
  358. ||--Launcher(登陆启动项,显示图片框架等等图形界面)
  359. ||--Launcher2(登陆启动项,负责应用的调用)
  360. ||--Mms(?彩信业务)
  361. ||--Music(音乐播放器)
  362. ||--PackageInstaller(安装、卸载程序的响应)
  363. ||--Phone(电话拨号程序)
  364. ||--Provision(预设应用的状态,使能应用)
  365. ||--Settings(开机设定,包括电量、蓝牙、设备信息、界面、wifi等)
  366. ||--SoundRecorder(录音机,可计算存储所需空间和时间)
  367. ||--Stk(接收和发送短信)
  368. ||--Sync(空)-------○1
  369. ||--Updater(空)
  370. |`--VoiceDialer(语音识别通话)
  371. |--inputmethods(输入法)
  372. ||--LatinIME(拉丁文输入法)
  373. ||--OpenWnn(OpenWnn输入法)
  374. |`--PinyinIME(拼音输入法)
  375. |--providers(提供器,提供应用程序、界面所需的数据)
  376. ||--ApplicationsProvider(应用程序提供器,提供应用程序启动项、更新等)
  377. ||--CalendarProvider(日历提供器)
  378. ||--ContactsProvider(联系人提供器)
  379. ||--DownloadProvider(下载管理提供器)
  380. ||--DrmProvider(创建和更新数据库时调用)
  381. ||--GoogleContactsProvider(联系人提供器的子类,用以同步联系人)
  382. ||--GoogleSubscribedFeedsProvider(设置信息提供器)
  383. ||--ImProvider(空)
  384. ||--ManagementProvider(空)
  385. ||--MediaProvider(媒体提供器,提供存储数据)
  386. ||--TelephonyProvider(彩信提供器)
  387. ||--UserDictionaryProvider(用户字典提供器,提供用户常用字字典)
  388. |`--WebSearchProvider(空)
  389. |--services
  390. ||--EasService(空)
  391. |`--LockAndWipe(空)
  392. `--wallpapers(墙纸)
  393. |--Basic(基本墙纸,系统内置墙纸)
  394. |--LivePicker(选择动态壁纸)
  395. |--MagicSmoke(壁纸特殊效果)
  396. `--MusicVisualization(音乐可视化,图形随音乐而变化)
  397. ○1里面有一个隐藏的.git文件夹,内容都是一样的,没有有意义的代码,config看似乎是一个下载程序,因此认为这些文件夹下没有实质东西。
  398. prebuilt目录(x86和arm架构下预编译的一些资源)
  399. .
  400. |--android-arm(arm-android相关)
  401. ||--gdbserver(gdb调试器)
  402. |`--kernel(模拟的arm内核)
  403. |--android-x86(x86-android相关)
  404. |`--kernel(空的)
  405. |--common(通用编译好的代码,应该是java的)
  406. |--darwin-x86(drawinx86平台)
  407. |`--toolchain(工具链)
  408. ||--arm-eabi-4.2.1
  409. ||--arm-eabi-4.3.1
  410. |`--arm-eabi-4.4.0
  411. |--darwin-x86_64(drawinx8664bit平台)
  412. |--linux-x86(linuxx86平台)
  413. |`--toolchain(工具链,我们应该主要用这个)
  414. ||--arm-eabi-4.2.1
  415. ||--arm-eabi-4.3.1
  416. ||--arm-eabi-4.4.0
  417. |`--i686-unknown-linux-gnu-4.2.1(x86版编译器)
  418. |--linux-x86_64(linuxx8664bit平台)
  419. |--windows(windows平台)
  420. `--windows-x86_64(64bitwindows平台)
  421. system目录(底层文件系统库、应用及组件——C语言)
  422. .
  423. |--Bluetooth(蓝牙相关)
  424. |--core(系统核心工具盒接口)
  425. ||--adb(adb调试工具)
  426. ||--cpio(cpio工具,创建img)
  427. ||--debuggerd(调试工具)
  428. ||--fastboot(快速启动相关)
  429. ||--include(系统接口头文件)
  430. ||--init(init程序源代码)
  431. ||--libacc(轻量级C编译器)
  432. ||--libctest(libc测试相关)
  433. ||--libcutils(libc工具)
  434. ||--liblog(log库)
  435. ||--libmincrypt(加密库)
  436. ||--libnetutils(网络工具库)
  437. ||--libpixelflinger(图形处理库)
  438. ||--libsysutils(系统工具库)
  439. ||--libzipfile(zip库)
  440. ||--logcat(查看log工具)
  441. ||--logwrapper(log封装工具)
  442. ||--mkbootimg(制作启动boot.img的工具盒脚本)
  443. ||--netcfg(网络配置netcfg源码)
  444. ||--nexus(google最新手机的代码)
  445. ||--rootdir(rootfs,包含一些etc下的脚本和配置)
  446. ||--sh(shell代码)
  447. ||--toolbox(toolbox,类似busybox的工具集)
  448. |`--vold(SD卡管理器)
  449. |--extras(额外工具)
  450. ||--latencytop(atoolforsoftwaredevelopers,identifyingsystemlatencyhappen)
  451. ||--libpagemap(pagemap库)
  452. ||--librank(JavaLibraryRankingSystem库)
  453. ||--procmem(pagemap相关)
  454. ||--procrank(JavaLibraryRankingSystem相关)
  455. ||--showmap(showmap工具)
  456. ||--showslab(showslab工具)
  457. ||--sound(声音相关)
  458. ||--su(su命令源码)
  459. ||--tests(一些测试工具)
  460. |`--timeinfo(时区相关)
  461. `--wlan(无线相关)
  462. `--ti(ti网卡相关工具及库)
  463. vendor目录(厂家定制内容)
  464. |--aosp(androidopensourceproject)
  465. |`--products(一些板级规则)
  466. |--htc(HTC公司)
  467. ||--common-open(通用部分)
  468. ||`--akmd(解压img用的工具)
  469. ||--dream-open(G1开放部分)
  470. ||--prebuilt-open(预编译开放部分)
  471. |`--sapphire-open(sapphire这款型号开放内容)
  472. |--pv-open(没东西)
  473. |--qcom(里面基本是空的)
  474. `--sample(google提供的样例)
  475. |--apps(应用)
  476. ||--client(用户)
  477. |`--upgrade(升级)
  478. |--frameworks(框架)
  479. |`--PlatformLibrary(平台库)
  480. |--products(产品)
  481. |--sdk_addon(sdk添加部分)
  482. `--skins(皮肤)
  483. `--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,在源码根目录下:

[plain]view plaincopy
 
  1. $sudomakePRODUCT-sdk-sdk

编译生成的SDK在out/host/linux-x86/SDK下。之后如果在ubuntu下使用eclipse进行开发,可以使用你编译的SDK。

下面就在模拟器中运行镜像,建议切到root用户下,首先配置几个环境变量,将自己编译的SDK设为优先级最高,在源码根目录下执行:

[plain]view plaincopy
 
  1. $update-alternatives--install/usr/bin/AndroidSDKAndroidSDK./out/host/linux-x86/sdk/android-sdk_eng.root_linux-x86255

这样会在/etc/alternatives下生成一个指向该SDK目录的软连接AndroidSDK,这个目录主要存放一些系统默认打开的程序的信息和配置。那么/usr/bin/AndroidSDK就指向这个软连接。接着执行:

[plain]view plaincopy
 
  1. $gedit~/.bashrc

在文件末尾添加:

[plain]view plaincopy
 
  1. exportANDROID_SDK_HOME=/usr/bin/AndroidSDK
  2. exportPATH=$ANDROID_SDK_HOME/tools:$PATH
  3. 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命令,使用之前,在源码目录下先要执行:

[plain]view plaincopy
 
  1. $build/envsetup.sh

这样会生成一些命令,有m即make、mm编译当前目录下所有模块、mmm编译指定目录下所有模块。你可以把packages/apps/Music应用的application name改成MyMusic(AndroidManifest.xml中),然后执行:

[plain]view plaincopy
 
  1. $mmmpackages/apps/Music

在out/target/product/generic/system/app中就可以看见Music.apk,然后执行:

[plain]view plaincopy
 
  1. $makesnod

重新生成system.img。

以上仅仅只是我个人遇到的问题,然后在网上查找资料解决后,运行成功,如果遇到其他问题,可以在网上寻找其他的解决办法,另外可以参考官网:

http://source.android.com/source/initializing.html

 

引用网址:http://blog.csdn.net/xdhywj/article/details/8608243

分享到:
评论

相关推荐

    JAVA上百实例源码以及开源项目源代码

     Java编写的网页版魔方游戏,编译后生成.class文件,然后用HTML去调用,不过运行时候需要你的浏览器安装有运行Class的插件。Java源代码实现部分,比较有意思,也具参考性。像坐标控制、旋转矩阵、定时器、生成图像...

    JAVA上百实例源码以及开源项目

    此时此景,笔者只专注Android、Iphone等移动平台开发,看着这些源码心中有万分感慨,写此文章纪念那时那景! Java 源码包 Applet钢琴模拟程序java源码 2个目标文件,提供基本的音乐编辑功能。编辑音乐软件的朋友,这...

    java开源包8

    JSEditor 是 Eclipse 下编辑 JavaScript 源码的插件,提供语法高亮以及一些通用的面向对象方法。 Java数据库连接池 BoneCP BoneCP 是一个高性能的开源java数据库连接池实现库。它的设计初衷就是为了提高数据库连接...

    java开源包10

    JSEditor 是 Eclipse 下编辑 JavaScript 源码的插件,提供语法高亮以及一些通用的面向对象方法。 Java数据库连接池 BoneCP BoneCP 是一个高性能的开源java数据库连接池实现库。它的设计初衷就是为了提高数据库连接...

    java开源包1

    JSEditor 是 Eclipse 下编辑 JavaScript 源码的插件,提供语法高亮以及一些通用的面向对象方法。 Java数据库连接池 BoneCP BoneCP 是一个高性能的开源java数据库连接池实现库。它的设计初衷就是为了提高数据库连接...

    java开源包11

    JSEditor 是 Eclipse 下编辑 JavaScript 源码的插件,提供语法高亮以及一些通用的面向对象方法。 Java数据库连接池 BoneCP BoneCP 是一个高性能的开源java数据库连接池实现库。它的设计初衷就是为了提高数据库连接...

    java开源包2

    JSEditor 是 Eclipse 下编辑 JavaScript 源码的插件,提供语法高亮以及一些通用的面向对象方法。 Java数据库连接池 BoneCP BoneCP 是一个高性能的开源java数据库连接池实现库。它的设计初衷就是为了提高数据库连接...

    java开源包3

    JSEditor 是 Eclipse 下编辑 JavaScript 源码的插件,提供语法高亮以及一些通用的面向对象方法。 Java数据库连接池 BoneCP BoneCP 是一个高性能的开源java数据库连接池实现库。它的设计初衷就是为了提高数据库连接...

    java开源包6

    JSEditor 是 Eclipse 下编辑 JavaScript 源码的插件,提供语法高亮以及一些通用的面向对象方法。 Java数据库连接池 BoneCP BoneCP 是一个高性能的开源java数据库连接池实现库。它的设计初衷就是为了提高数据库连接...

    java开源包5

    JSEditor 是 Eclipse 下编辑 JavaScript 源码的插件,提供语法高亮以及一些通用的面向对象方法。 Java数据库连接池 BoneCP BoneCP 是一个高性能的开源java数据库连接池实现库。它的设计初衷就是为了提高数据库连接...

    java开源包4

    JSEditor 是 Eclipse 下编辑 JavaScript 源码的插件,提供语法高亮以及一些通用的面向对象方法。 Java数据库连接池 BoneCP BoneCP 是一个高性能的开源java数据库连接池实现库。它的设计初衷就是为了提高数据库连接...

    java开源包7

    JSEditor 是 Eclipse 下编辑 JavaScript 源码的插件,提供语法高亮以及一些通用的面向对象方法。 Java数据库连接池 BoneCP BoneCP 是一个高性能的开源java数据库连接池实现库。它的设计初衷就是为了提高数据库连接...

    java开源包9

    JSEditor 是 Eclipse 下编辑 JavaScript 源码的插件,提供语法高亮以及一些通用的面向对象方法。 Java数据库连接池 BoneCP BoneCP 是一个高性能的开源java数据库连接池实现库。它的设计初衷就是为了提高数据库连接...

    java开源包101

    JSEditor 是 Eclipse 下编辑 JavaScript 源码的插件,提供语法高亮以及一些通用的面向对象方法。 Java数据库连接池 BoneCP BoneCP 是一个高性能的开源java数据库连接池实现库。它的设计初衷就是为了提高数据库连接...

    Java资源包01

    JSEditor 是 Eclipse 下编辑 JavaScript 源码的插件,提供语法高亮以及一些通用的面向对象方法。 Java数据库连接池 BoneCP BoneCP 是一个高性能的开源java数据库连接池实现库。它的设计初衷就是为了提高数据库连接...

Global site tag (gtag.js) - Google Analytics