说明: 源码中包含很多有趣的实现和黑科技 比如 NDK, 能够利用 C/C++ 实现 java 实现不了或者 java 做起来效率很低的事情 比如 音频混合, 视频处理, 直播 等等—
- Android Framework:包含了HAL层以上的所有层,指的是整个系统的框架。对应AOSP中的framework文件夹。
- Application Framework:更多的指是API相关的,属于应用程序这边的框架。比如Activity、ActivityThread等,而不包含AMS
建议查看代码工具:
ubuntu: AndroidStudio
windows: Source Insight
1> 相关目录结构
data@miPC:~/ROSP-Android$ lsAndroid.bp build developers hardware packages systemart BUILD development kernel pdk testbionic compatibility device libcore platform_testing toolchainbootable cts external libnativehelper prebuilts toolsbootstrap.bash dalvik frameworks Makefile sdk out
其中 external/ 存放着大量的 外部开源代码
在 packages/app 下 存放大量 系统级 应用程序
可以拿到这些应用程序代码分析、理解,编写出效率更高,性能更好的应用
Launcher : Android 的桌面Browser: 浏览器

package/providers/ 下存放 系统级 内容 提供器
lunch 选择的编译版本:
eng: 工程版本user: 最终用户版本userdebug:调试版本tests: 测试版本
2> 映像文件解读
[1]> system.img:
android系统的文件系统
包含了android系统的应用程序(apk),系统用到的各种库(jar, so)和资源,配置文件(etc目录下),系统命令(bin,usr/bin, xbin)
该映像文件是由c``` 目录打包生成的<br /><br />可以对 这个目录的 东西进行定制, for example---> 想要让 android 默认安装一个系统<br />把要安装的 apk 拷贝到out/target/product/`generic/system/app 目录下
[2]> userdata.img:
用户 数据 映像,
包含 程序安装信息, ex: windows系统的 C:/Program Files
AS 项目 导出 apk https://blog.csdn.net/qq_24349695/article/details/78540982
https://blog.csdn.net/qq_24349695/article/details/79975393
‘D:\Android\Env\workspace\Test\app\build\outputs\apk\debug\app-debug.apk’
[3]> ramdisk.img内存磁盘映像
linux内核启动起来,要挂载一个文件系统作为自己的根文件系统,里面含有Linux内核启动过程中依赖的一些程序和配置文件
ramdisk.img就是一个最小化的根文件系统,它被加载到内存中作为Android的根文件系统
该映像是由out/target/product/generic/root目录打包生成的 || 就是 之后的 root 目录
userdata.img 和 system.img 在 linux 系统跑起来后 就被挂载到 ramdisk 下的 data/ 和 system/
3> Android-ROM 包解析
android 的 ROM 包 通常为 update.zip 文件, 主要由 上述的 system.img、boot.img、 userdata.img 组成
ROM 包内容:
android-info.txt------> ROM 版本及 刷写配置信息boot.img--------------> Linux 内核 zImage、 ramdisk.imgsystem.img------------> Android system 映像userdata.img----------> 用户数据 映像+其它 映像
为了减少编译时间,
make snod || 打包生成 system.img 不检查依赖关系make bootiamge || 打包生成 ramdisk.imgmmm || 指定 编译 某个目录下的模块
