Android学习2 -- SDK 1(概览)

Android源码的标准说法应该是叫AOSP。Android open source project。最详细的资料还是去看官网为佳,我这里只能算一个概述或者学习笔记吧。

https://source.android.com/?hl=zh-cn

1 遇到的坑

第一个坑是如果要自己编译安卓,电脑的硬盘配置和内存都要升级。。。硬盘要单独的500G,内存最少得搞到32G。目前绝大多数电脑只到32G,要分给虚拟机这么多的话,要么电脑只装ubuntu,要么就升级内存到64。现在嘛,内存又是大涨。。。

AOSP的概述图如下:

下载代码:

第二个坑是国内的话会被墙,所以用官网的命令是下不下来的。我试了一阵,可以用的命令和官网有不同:

export REPO_URL='https://mirrors.tuna.tsinghua.edu.cn/git/git-repo'

repo init -u https://mirrors.tuna.tsinghua.edu.cn/git/AOSP/platform/manifest

之后repo sync即可。

这里有个现实问题,repo不稳定容易断,断了恢复起来很麻烦。所以国内各大厂商或者工作室都是改成压缩包整体下载。这里就会遇到第三个坑,有些工作室是把压缩包放到百度云。将近100G,百度云不开会员限速200来K,得下差不多一周。真的是逼着你去开会员才行。

在构建上,Android将Make改成了Soong。扯一堆理由其实就是为了绑定码农和厂商,对开发者都是折腾增加学习成本。

Android.bp就是新的构建文件,Android.mk则是老的。

2 AOSP代码结构

从安卓来说,可以划分上面的几个层次。如果是做App,那么关注Framework就可以了,主要是那几个Manager,如果是做驱动,那么主要就是关注HAL。另外还要一个熟悉系统,也就是熟悉环境搭建,裁剪的哥们。这样三个组合,一个草台班子就搭起来了。

SDK的目录结构:

大致作用如下(来自GPT):

瑞芯微的则是这样:

系统开发或者裁剪,就重点关注build。

App开发就盯着Framework。

驱动开发就看看hardware。

3 AOSP编译和生成

编译有几种类型,分别是:

user:限制所有权限,用于发布给用户使用的最终版本。
userdebug: 开放部分权限,允许root。
eng:工程师模式,开放所有权限并且有额外的调试工具。

编译的命令倒不算复杂。

source build/envsetup.sh 预设环境
lunch选择平台(一般选aosp_arm64-eng或者aosp_x86_64-eng)
make -j8 开始全编译(可以加参数编译单独的模块,也可以使用build.sh编译)

用别人的图说明一下编译命令。

生成的东西在out中

  1. 系统镜像(System Image):最主要的输出是 Android 系统的系统镜像。这个镜像包含了 Android 操作系统的核心文件,系统应用程序,框架层等。它通常位于 out/target/product/{device}/system.img

  2. 引导镜像(Boot Image):引导镜像包含了引导加载程序(bootloader)、Linux 内核以及用于引导 Android 系统的文件。它通常位于 out/target/product/{device}/boot.img

  3. Vendor 分区镜像(Vendor Image):Vendor 分区镜像包含了由设备制造商提供的供应商特定代码和二进制文件。它通常位于 out/target/product/{device}/vendor.img

  4. 用户数据分区镜像(Userdata Image):用户数据分区镜像包含了预置的用户数据,如预装的应用、系统设置等。它通常位于 out/target/product/{device}/userdata.img

  5. 缓存分区镜像(Cache Image):缓存分区镜像包含了 Android 系统的缓存数据。它通常位于 out/target/product/{device}/cache.img

  6. Recovery 分区镜像(Recovery Image):Recovery 分区镜像用于恢复和更新 Android 系统。它通常位于 out/target/product/{device}/recovery.img

  7. Ramdisk 镜像:Ramdisk 镜像包含了一个临时文件系统,用于引导时加载一些必要的文件。它通常与引导镜像一起使用。

  8. 系统库和应用程序 APK 文件:编译过程还会生成 Android 系统中的库文件和应用程序 APK 文件。这些文件通常位于 out/target/product/{device}/system/ 目录下。

  9. 构建工具和可执行文件:AOSP 编译还生成一系列构建工具、可执行文件和脚本,用于构建 Android 系统、调试、模拟器等。这些工具位于 out/host/ 目录下。

  10. 其他中间文件和调试信息:编译过程还会生成其他一些中间文件、调试信息和编译日志,这些文件通常位于 out/ 目录下的子目录中。

生成物这个每家会不同,像瑞芯微的会是这样:

烧写则是一般有芯片商提供工具,也可以自己烧写,感觉一般烧system.img和vendor.img会多一些。瑞芯微那边会帮你再打一下包,比如super.img。不过整体还是差不多的。

烧写工具如下:

基本就这些了。后面再看看怎么增加App,还有怎么增加设备,一般打工要涉及到的知识,就差不多了。

实操篇:

Android SDK2 (实操三个小目标)-CSDN博客

参考资料:

瑞芯微开发手册,正点原子手册。

AOSP系列—阅读源码并熟悉AOSP目录结构_aospxref-CSDN博客

史上最简最全,Android AOSP源码阅读+编译环境这一篇就够了 - 知乎


Android新增LED设备--从底层到上层理解安卓架构_android flash_led_itarget-CSDN博客

  • 11
    点赞
  • 8
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值