android11源码编译

前言

Android编译再国内其实总是会遇到各种奇怪的问题,但是想观察一下Android源码,不编译一下代码总是少点什么,虽然大部分开发系统的开发者都有开发板,所以会有芯片厂商提供的系统,但是每次都要刷机,感觉不如虚拟机好玩,当前大部分文档都是编译arm系统,大部分虚拟机无法运行,这里介绍一下内核以及aosp的编译过程

正文

目的是编译Android 11 源码,需要的配置是16+g内存,以及300g硬盘,系统ubunut
下载Android系统代码(aosp)
Android系统源码下载其实比较简单,具体参考官方文档:Android 源码获取,具体百度。
编译:
编译主要分为散步,分别是

  1. source 读入shell的方法,用来编译Android系统源码,(source build/setenv.sh)
  2. 确定编译目标(lunch)
  3. 编译(m)
    具体百度即可,这套流程没有任何改变。关于墙的问题,可以使用镜像(清华镜像、中国科技大学镜像),最好直接下载每月的压缩包解压即可
    关于kernel编译,Android高版本有非常大的变化,通过统一shell脚本控制

下载可参考官方文档,切原理基本于aosp一样,也是通过repo管理,关键是确认版本,一般我们使用common-android11-5.4-lts 这个分支,
具体代码为:

repo init https://mirrors.ustc.edu.cn/aosp/kernel/manifest -b  common-android11-5.4-lts

repo sync

一般我们可以公国中国科技大学镜像获取。墙内记得修改repo的url路径,这里不再详细介绍(遇到http协议的问题可以修改.repo/manifests.git/config的url),关于编译,可参考Android官方文档。
主要是通过build.sh实现编译

问题是编译后的运行,普通的播放直接介绍

emulator -kernel youimage

这个再Android 11 是无法运行的,因为Android系统吧部分Android驱动即ko文件以及kernel分开,所以aosp中包含了部分ko文件需要和kernel的内核相对应,具体做法是(目前比较丑陋的做法):
吧编译出的ko文件以及bzimage复制到aosp/prebuilts/qemu-kernel/x86_64目录下,然后重新编译aosp,下次运行即可通过

emulator -kernel youimage

后记

这个文章比较简答,因为编译Android系统的文章非常多,不过本人再编译Android11 时遇到比较多的问题,比较难以解决,之类记录一下。

猜你喜欢

转载自blog.csdn.net/qq_28282317/article/details/116902161