编译 AOSP

必要运行环境

#JDK
sudo add-apt-repository ppa:openjdk-r/ppa
sudo apt-get update
#sudo apt-get install openjdk-7-jdk
sudo apt-get install openjdk-8-jdk

sudo apt-get install vim
sudo apt-get install minicom

#追加源
sudo gedit /etc/apt/sources.list
+ deb http://us.archive.ubuntu.com/ubuntu trusty main universe
sudo apt-get update

#安装依赖
sudo apt-get install git gnupg flex bison gperf build-essential zip curl libc6-dev libncurses5-dev:i386 x11proto-core-dev libx11-dev:i386 libreadline6-dev:i386 libgl1-mesa-glx:i386 libgl1-mesa-dev g++-multilib tofrodos python-markdown libxml2-utils xsltproc zlib1g-dev:i386
sudo apt-get install lzop libncurses5
sudo ln -s /usr/lib/i386-linux-gnu/mesa/libGL.so.1 /usr/lib/i386-linux-gnu/libGL.so
sudo apt-get install mingw32
sudo apt-get install automake make perl gcc g++
sudo apt-get install libncurses5

# make kernel
# scripts/extract-cert.c:21:10: fatal error: openssl/bio.h: No such file or directory
#   21 | #include <openssl/bio.h>
#      |          ^~~~~~~~~~~~~~~
sudo apt-get install libssl-dev

#Android编译环境补充
sudo ln -sf /usr/bin/python2.7 /usr/bin/python 

#ifconfig
sudo apt install net-tools


# 编译RK3399_LINUX 时出现: [awk: line 2: function strtonum never defined] https://blog.csdn.net/liangtianmeng/article/details/86020254
sudo apt-get install gawk

## Android 11 u-boot 
sudo apt-get install device-tree-compiler

## X2000 kernel
sudo apt install u-boot-tools

## make menuconfig 失败
sudo apt-get install libncurses5-dev


镜像

curl -OC - https://mirrors.tuna.tsinghua.edu.cn/aosp-monthly/aosp-latest.tar # 下载初始化包
tar xf aosp-latest.tar
cd AOSP   # 解压得到的 AOSP 工程目录

repo init -u https://mirrors.tuna.tsinghua.edu.cn/git/AOSP/platform/manifest -b android-4.0.1_r1
    
# 这时 ls 的话什么也看不到,因为只有一个隐藏的 .repo 目录
repo sync # 正常同步一遍即可得到完整目录
# 或 repo sync -l 仅checkout代码

官网中使用的是: lunch aosp_arm-eng#由于需要使用模拟器等相关开发环境, 本文编译直接使用, 见 https://source.android.com/setup/create/avd

编译启动

source ./build/envsetup.sh
lunch sdk_x86_64 
make -j8

## 在编译完成后可以直接运行
## 若关闭了终端, 或重新加载了环境, 则有可能导致执行错误,
## 建议执行前确认是否已经执行
## source ./build/envsetup.sh
## lunch xxxx
## emulator

问题:

1. 内存不够,使用交换内存

新建swap空间,以20G为例
sudo fallocate -l 20G /swapfile
设置文件权限 
sudo chmod 600 /swapfile
挂载
sudo mkswap /swapfile
激活启用
sudo swapon /swapfile
2. libso库问题

a. image

b. http://cn.archive.ubuntu.com/ubuntu/pool/universe/n/ncurses/libncurses5_6.3-2_amd64.deb
c. https://mirrors.ynnu.edu.cn/ubuntu/pool/universe/n/ncurses/libtinfo5_6.3-2_amd64.deb
d. sudo dpkg -i xxxxxx.deb

3. 模拟器启动问题

a. 先下android12的模拟器,基于android-12.0.0_r3,发现按照以往的方法,lunch aosp_x86_64-eng编译后模拟器无法启动,无法启动的原因是没有生成相关-qemu.img, 提示:Could not open '***/userdata-qemo.img':No such file or directory修改成重新编译即可。主要原因是aosp_x86_64-eng不会生成qemu相关镜像, 换成lunch sdk_x86_64 即可

参考

https://blog.csdn.net/ansondroider/article/details/124225053

posted @ 2025-06-19 16:02  民女李建刚  阅读(25)  评论(0)    收藏  举报