| |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
-> 移动开发 -> Android 系统开发系列(1):Android 12 源代码下载、编译和刷机 -> 正文阅读 |
|
[移动开发]Android 系统开发系列(1):Android 12 源代码下载、编译和刷机 |
Android 12 正式版 已经发布:https://mp.weixin.qq.com/s/OiFSWEnc-0N2z7JYWTJluw 本文就带大家下载和编译最新的 Android 12 代码,本地编译的代码有下面几个好处
如果大家没有下载编译 Debug 的需求,只是单纯的看代码的话,推荐使用 cs.android.com 即可 1. 代码下载由于在国内使用 Google 的官方下载站点,会有下不动的情况,有时候 .repo 都下载不下来,所以本教程是以国内的镜像站点为例子,如果你有方法可以爬墙,那么可以简单参考 官方的教程 https://source.android.google.cn/source/downloading 科大 AOSP 镜像站点地址:https://mirrors.ustc.edu.cn/help/aosp.html 下载只需要跟着下面几个步骤走即可(以下方法可以在 Ubuntu、WSL、WSL2、Mac 上运行,但是后面进行代码编译的时候,只能使用 Linux ,所以建议大家还是使用 Ubuntu 这样的 Linux 系统来进行代码的下载、编译、开发工作) 1.1 步骤 1:Repo 工具下载
1.2 步骤 2:配置个人信息如果没有安装 git,先自己安装一下 git,然后执行下面的命令,填上自己的 Name 和 Email
比如我填的
1.2 步骤 3:创建工程目录在本地建立一个工作目录(名字任意,这里以 Android_12_AOSP 为例子)
1.4 步骤 4:初始化仓库仓库初始化有两种方式,一种是直接下载,另外一种是加 Tag,下载特定的 Tag 版本,下面会对这两种方法分别进行介绍,大家可以自己选择哪一种方式 (注意:这里的两种下载方式会影响后续的驱动下载,所以要记清楚自己使用的是哪种方式,在 驱动下载 章节选择合适的驱动) 1.4.1 直接下载 (推荐)这种方法会下载所有的代码,默认分支是 master ,不愁空间的话,直接用这种方法下载即可
这里需要注意,默认的 repo 使用的地址是 REPO_URL = 'https://gerrit.googlesource.com/git-repo' ,这里我们需要修改 REPO_URL,否则会出现无法下载的情况
下载好 .repo 之后会有下面的信息
如果选择了直接下载,那么就不需要看 3.2 了 1.4.2 下载特定的 Tag这种方法指的是只下载单个 Tag 所对应的代码,这里的 Tag 可以 查看这里 https://source.android.google.cn/setup/start/build-numbers,比如我的开发机是 Google Pixel 3 XL,我在 Tag 列表查看对应的机型都有哪些 TAG,目前 Android 12 只发布了两个,如下 对应的 Tag 分别是 android-12.0.0_r3 和 android-12.0.0_r1 ,所以下载的时候我可以制定对应的 TAG, 这样的好处是下载的代码比较少,下载速度会快一些;不方便的点是更新不方便,Google 会定期发邮件告诉你哪些新的 Tag 发布了,你可以根据这个来更新代码
1.5 步骤 5 :同步代码上面步骤三只是下载了 .repo 文件,具体的代码还需要执行 repo sync 来进行下载。由于镜像站的限制和下载过程中可能会遇到的问题,建议大家用 -j4 来下载
然后就开始了漫长的下载,由于下载过程中可能会出现失败的情况,你可以搞一个 sh 脚步来循环下载,一觉醒来就下载好了
具体方法
2. 驱动下载代码下载完成之后,我们先不着急编译,如果要想在真机上跑,需要下载一些厂商闭源的驱动文件,这样后续编译的代码才可以跑到真机上,此处对应的 官方文档 https://source.android.google.cn/setup/build/downloading#obtaining-proprietary-binaries 上面下载代码的时候,我们提到了两种方式,直接下载和下载特定 Tag,不同的下载方式对应的驱动也不一样 2.1 直接下载方式所对应的驱动直接下载的代码使用的是 master 分支,驱动程序需要在这里下载 https://developers.google.cn/android/blobs-preview 以我的 pixel 3 XL 为例,我需要下载的驱动是 点击 Link 下载两个文件,然后进行解压到代码根目录,然后执行 sh 脚本释放驱动到合适的位置,二进制文件及其对应的 makefile 将会安装在源代码树的 vendor/ 层次结构中 2.2 下载特定 Tag 的代码所对应的驱动如果下载的时候加了 -b ,那么就需要查看对应的 tag 所对应的驱动,地址如下:https://developers.google.cn/android/drivers 以我的 pixel 3 XL 为例,下载的 TAG 为 android-12.0.0_r3 (repo init -u git://mirrors.ustc.edu.cn/aosp/platform/manifest -b ?android-12.0.0_r3) 那么我们需要找到下面的部分,这里的 SP1A.210812.016.A1 跟上面 4.2 节是对应的,即 Tag android-12.0.0_r3 对应的 Build ID 是 SP1A.210812.016.A1。大家可以根据自己下载的 TAG 找到对应的 Build ID,然后根据 Build ID 寻找对应的驱动即可 https://developers.google.cn/android/drivers 跟 4.2 节下载的 Tag 是对应的: 2.3 驱动提取下载的内容解压后,是两个 sh 文件,以我的 Pixel 3 XL 为例,在代码根目录执行,使用 D 来向下翻页,直到最后手动输入 I ACCEPT
3. 代码编译代码和驱动都下载好之后,就可以开始代码的编译工作了,由于新版本不再支持 Mac 编译,所以建议大家还是使用 Linux 来进行编译,推荐使用 Ubuntu 3.1 设置编译环境参考:https://source.android.google.cn/setup/build/initializing Ubuntu 18.04 以上直接运行:
3.2 设置代码编译环境每次关闭 Shell 之后都需要重新执行下面这个脚本,相当于配置了一下编译环境
或者
3.3 选择编译目标
运行 lunch 之后,会有一堆设备出来让你选择,还是以我的 Pixel 3 XL 为例,其代号是 ,在这里可以查看所有机型对应的代号:https://source.android.google.cn/setup/build/running#selecting-device-buildPixel 3 XL 对应的代号是:crosshatch 所以我选择编译的是 aosp_crosshatch-userdebug ,这里可以输入编号也可以直接输入 aosp_crosshatch-userdebug 然后脚本会进行一系列的配置,输出下面的内容 3.4 全部编译使用 m 构建所有内容。m 可以使用 -jN 参数处理并行任务。如果您没有提供 -j 参数,构建系统会自动选择您认为最适合您系统的并行任务计数
如上所述,您可以通过在 m 命令行中列出相应名称来构建特定模块,而不是构建完整的设备映像。此外,m 还针对各种特殊目的提供了一些伪目标。以下是一些示例:
运行 m help 即可查看 m 提供的其他命令 输入 m 之后开始第一次全部编译,漫长的等待,编译时间取决于你的电脑配置... 主要是 cpu 和内存,建议内存 32G 走起,cpu 也别太烂 编译成功之后,会有下面的输出 4. 刷机自己编译的 UserDebug 固件用来 Debug 是非常方便的,不管是用来 Debug Framework 还是 App 编译好之后下面开始刷机,以我的测试机器 Pixel 3 XL 为例,依次执行下面的命令
之后手机会自动重启,然后进入主界面,至此,我们的代码下载 - 编译 - 刷机的这部分就结束了 自己编译的 AOSP 的 Launcher 比较丑,因为没有 Google 闭源的那些套件的加持,看上去还是很简陋的,自带的 App 非常少,而且基本上没怎么维护,给到手机厂商的就是这么一个东西 还是官方的 Pixel 带的 Launcher 好看(Google 开发和维护) 如果在刷机的过程中遇到问题,可刷官方的刷机包拯救 ?:https://developers.google.cn/android/images 5. End本文主要是讲如何下载、编译、刷机,后续的代码导入、修改和编译模块、代码 Debug 等,会另起一篇文章来介绍 欢迎大家收藏、点赞、在看、分享转发到朋友圈,如果能打赏一下无业游民,会触发快速更新任务哦 |
|
移动开发 最新文章 |
Vue3装载axios和element-ui |
android adb cmd |
【xcode】Xcode常用快捷键与技巧 |
Android开发中的线程池使用 |
Java 和 Android 的 Base64 |
Android 测试文字编码格式 |
微信小程序支付 |
安卓权限记录 |
知乎之自动养号 |
【Android Jetpack】DataStore |
|
上一篇文章 下一篇文章 查看所有文章 |
|
开发:
C++知识库
Java知识库
JavaScript
Python
PHP知识库
人工智能
区块链
大数据
移动开发
嵌入式
开发工具
数据结构与算法
开发测试
游戏开发
网络协议
系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程 数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁 |
360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 | -2024/11/24 1:20:31- |
|
网站联系: qq:121756557 email:121756557@qq.com IT数码 |