Android源代码结构分析

Android源代码结构分析


Google提供的Android包含了:Android源代码,工具链,基础C库,仿真环境,开发环境等,完整的一套。

第一级别的目录和文件如下所示:

----------------
├── Makefile            全局的Makefile
├── build               系统编译规则和配置所需要的脚本和工具
----------------
├── prebuilt		各种平台编译工具链
├── bionic              基础C库源代码
----------------
├── frameworks *        Android应用程序的核心框架层(java及C++语言)
├── system     *        底层文件系统/库/应用及组件(C语言)
├── dalvik              JAVA虚拟机
├── external            android使用的一些额外开源库
├── libcore             与媒体播放框架代码相关
----------------
├── packages            各种应用程序实例
├── development         程序开发所需要的实例/模板/工具
----------------
├── ndk
├── sdk
├── cts                 Android CTS兼容性规范测试用例
----------------
├── vendor     *        厂商定制代码
├── device     *        厂商定制代码
├── hardware   *        一些与硬件相关的库,部分厂家开源的硬解适配层HAL代码
├── kernel     *        Linux源代码
├── bootable            引导加载器
├── recovery            与目标的恢复功能相关
----------------


android的移植按如下流程:

(1)android linux 内核的普通驱动移植,让内核可以在目标平台上运行起来。
(2)正确挂载文件系统,确保内核启动参数和 android 源代码 system/core/rootdir 目录下的 init.rc 中的文件系统挂载正确。
(3)调试控制台,让内核启动参数中的 console 参数以及 android 源代码 system/core/init/init.c 中的console_name 设置和硬件保持一致
(4)打开 android 相关的驱动(logger,binder 等),串口输入 logcat 看 logger 驱动起来,没有的话调试logger 驱动。


解决底层问题方法:解除Android系统的耦合l
1 将Dalvik于bionic以及硬件驱动剥离开
2 修改Dalvik以支持标准glibc和GNU/Linux
3 把Dalvik当作普通应用程序
4 Dalvik可被单独优化和改进


build目录

.
|-- envsetup.sh    是一个在使用仿真器运行的时候,用于设置环境的脚本
|-- core          (核心编译规则,以mk为结尾的文Makefile件,被顶层目录的Makefile引用)
|-- history       (历史记录)
|-- libs                                
|   `-- host       (主机端库,有android “cp”功能替换)
|-- target            (目标机编译对象,包含board和product两个目录,为目标所需要文件)
|   |-- 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         (This program takes a list of files and directories)
    |-- fs_get_stats    (获取文件系统状态)
    |-- iself            (判断是否ELF格式)
    |-- isprelinked     (判断是否prelinked)
    |-- kcm             (按键相关)
    |-- lsd            (List symbol dependencies)
    |-- releasetools   (生成镜像的工具及脚本)
    |-- rgb2565        (rgb转换为565)
    |-- signapk        (apk签名工具)
    |-- soslim         (strip工具)
    `-- zipalign           (zip archive alignment tool)


prebuilt 目录


x86和ARM架构下工具链/预编译的一些资源
.
|-- android-arm   (arm-android相关)
|   |-- gdbserver   (gdb调试器)
|   `-- kernel    (模拟的arm内核)
|-- android-x86   (x86-android相关)
|   `-- kernel    (空的)
|-- common    (通用编译好的代码,应该是java的)
|-- darwin-x86    (drawin x86平台)
|   `-- toolchain   (工具链)
|       |-- arm-eabi-4.2.1
|       |-- arm-eabi-4.3.1
|       `-- arm-eabi-4.4.0
|-- darwin-x86_64   (drawin x86 64bit平台)
|-- linux-x86    (linux x86平台)
|   `-- 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   (linux x86 64bit平台)
|-- windows    (windows平台)
`-- windows-x86_64 (64bit windows平台)


bionic 目录

基础C库源代码
.
|-- Android.mk
|-- libc      (C库)
|-- libdl     (libdl实现,dl是动态链接,提供访问动态链接库的功能)
|-- libm      (libm数学库的实现)
|-- libstdc++ (C++实现库libstdc++)
|-- libthread_db  (多线程程序的调试器库)
`-- linker     (动态链接器)


frameworks 目录

核心框架--java及C++语言
.
|-- base    (基本内容
  • 6
    点赞
  • 62
    收藏
    觉得还不错? 一键收藏
  • 4
    评论
Android系统源代码情景分析是指对Android系统源代码进行深入研究和分析的过程。这种情景分析的目的是为了深入了解Android系统的内部工作原理、特性和功能,以及改进和优化Android应用程序的开发。 首先,进行Android系统源代码情景分析需要具备对Java语言和Android开发框架的深入理解。这样才能更好地理解Android源代码中的结构和逻辑。 其次,可以从Android系统源代码的不同模块进行分析,例如应用程序框架、系统服务、内核驱动等。通过分析这些模块的源代码,可以了解它们的功能、相互之间的关系以及与应用程序开发的接口等。 在Android系统源代码情景分析中,可以选择一些具体的场景来进行深入研究。比如,可以分析Android系统的启动过程,包括开机自启动、系统初始化和应用程序启动等。还可以分析Android系统的资源管理机制,包括内存管理、文件系统管理和网络连接管理等。 通过Android系统源代码情景分析,可以发现Android系统的优势和不足之处,并为开发者提供改进和优化应用程序性能的思路。同时,可以了解Android系统的演变过程和技术发展趋势,帮助开发者更好地适应Android平台的变化。 总之,Android系统源代码情景分析是一项复杂而重要的任务,可以帮助开发者深入了解Android系统的内部工作原理和特性。通过对源代码分析,可以提高应用程序的性能和稳定性,并为未来的开发工作提供思路和参考。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 4
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值