Ubuntu 24 搭建aosp源码环境详细笔记

背景:

因为很多新同学的机器等可能比较新,所以机器上的一些硬件驱动不一定老版本的ubuntu系统上有,所以很多同学也不得使用比较新的ubuntu 24版本,但是24版本ubuntu搭建aosp源码环境,相比ubuntu 20.04还是有一些差别。这里为了照顾更多ubuntu 24版本同学搭建aosp环境这里进行新写一篇文章进行指导。

安装ubuntu 24版本

下载ubuntu 24的安装包

官方下载:

24.04 系统(http://releases.ubuntu.com/24.04/下面的 desktop的image。
阿里镜像下载:

如果网速慢自己百度找一个阿里镜像https://mirrors.aliyun.com/ubuntu-releases/24.04/ubuntu-24.04.4-desktop-amd64.iso)

(优先考虑直接电脑安装Ubuntu > windows和Ubuntu双系统 > windows上安装VMware方式,不要不建议安装virtualbox)

刷入镜像工具:

建议使用rufus制作u盘启动盘
https://rufus.ie/downloads/

如果双系统安装windows + ubuntu请参考如下链接:

Windows和Ubuntu双系统安装手册

安装相关库

1、openjdk 8 的安装 (aosp8.1版本需要,其他高版本aosp不需要,都是源码自带)

sudo apt-get install openjdk-8-jdk

2、设置默认 java 和 javac(可选)

由于本人当前 Ubuntu 上没有安装其他版本的 jdk,所以跳过此步骤

sudo update-alternatives --config java

sudo update-alternatives --config javac

3、 检查版本

java -version

打印如下:

openjdk version "1.8.0_252"

OpenJDK Runtime Environment (build 1.8.0_252-8u252-b09-1~16.04-b09)

OpenJDK 64-Bit Server VM (build 25.252-b09, mixed mode)

4、安装所需的软件软件包(注意一定要拷贝换行问题,最好先拷贝到txt上,再拷贝到命令行)

bash 复制代码
sudo apt-get install bc bison build-essential ccache curl flex g++-multilib gcc-multilib git git-lfs gnupg gperf imagemagick protobuf-compiler python3-protobuf lib32readline-dev lib32z1-dev libdw-dev libelf-dev libgnutls28-dev lz4 libsdl1.2-dev libssl-dev libxml2 libxml2-utils lzop pngcrush rsync schedtool squashfs-tools xsltproc xxd zip zlib1g-dev  

5、安装libncurses5

需要如下方式安装libncurses5

bash 复制代码
wget https://archive.ubuntu.com/ubuntu/pool/universe/n/ncurses/libtinfo5_6.3-2_amd64.deb && sudo dpkg -i libtinfo5_6.3-2_amd64.deb && rm -f libtinfo5_6.3-2_amd64.deb
wget https://archive.ubuntu.com/ubuntu/pool/universe/n/ncurses/libncurses5_6.3-2_amd64.deb && sudo dpkg -i libncurses5_6.3-2_amd64.deb && rm -f libncurses5_6.3-2_amd64.deb

6、安装python2(aosp 8.1版本需要)

python2的配置

高版本ubuntu 24可能没有python2,无法直接使用sudo apt安装,所以需要下载python2源码编译,下面是步骤:

bash 复制代码
下载源码
wget https://www.python.org/ftp/python/2.7.18/Python-2.7.18.tar.xz
tar xf Python-2.7.18.tar.xz
cd Python-2.7.18


编译安装
./configure --prefix=/usr/local/python2.7
make -j$(nproc)
sudo make install


添加到 PATH
echo 'export PATH=/usr/local/python2.7/bin:$PATH' >> ~/.bashrc
source ~/.bashrc

源码下载

网络下载方法:

国内不可以访问 google 故无法下载 aosp 源码,国内清华大学源有相关镜像

参考链接:
https://mirror.tuna.tsinghua.edu.cn/help/AOSP/

可能会有一些错误,比如repo时候没反应,还是google网站不是清华大学的,建议查看这里
ubuntu 20.04 android 12/13
https://blog.csdn.net/learnframework/article/details/121345533

直接repo时候指定的分支为如下:

bash 复制代码
repo init -u https://mirrors.tuna.tsinghua.edu.cn/git/AOSP/platform/manifest -b  android-8.1.0_r1

编译 aosp 代码

0、cd 源码根目录

1、 . build/envsetup.sh (注意这里是.+空格不是只有.,也可以直接用source build/envsetup.sh)

2、lunch

这里我们选择:6 ---- > aosp_x86_64

3、make

经历大概几个小时等待

出现如下打印代表成功:

bash 复制代码
build completed successfully (05:44:08 (hh:mm:ss)) ####

编译可能遇到错误:

1、会产一个jackserver错,解决方法点击这里(https://blog.csdn.net/learnframework/article/details/116861979)

2、如果有的机器有dex2oatd 时候报错,直接core dumped了,请使用关闭优化命令:

make WITH_DEXPREOPT=false,注意以后每次编译要一直带着make WITH_DEXPREOPT=false

4、执行命令:

emulator,出现如下图界面
(注意只要terminal关闭后就需要重新进行
1、 . build/envsetup.sh
2、lunch
然后可以直接emulator,没有修改不需要make,有修改需要make
)

修改自己的第一行代码,在框架运行

安装 vim:

sudo apt-get install vim

下载 android studio:

链接: https://pan.baidu.com/s/1ReBs0rx2yE-5bmxIRCerFw?pwd=gyij 提取码: gyij

加载源代码到 AndroidStudio

执行以下四条命令:

  1. ". build/envsetup.sh" (source可以用 .代替,即". build/envsetup.sh")
  2. "lunch",并选择要编译的项目
  3. "make idegen -j4" (这里的 -j4表示用 4线程来编译,可以不加)
  4. "development/tools/idegen/idegen.sh" (报错find: 'out/target/product/generic_x86_64/root/d': Permission denied没有关系不影响ipr和iml文件生成)

详细导入as查看链接:https://blog.csdn.net/learnframework/article/details/141384068

学完8.1后,aosp12/13高版本android环境搭建:

ubuntu 20.04 android 12/13
https://blog.csdn.net/learnframework/article/details/121345533

手把手教你aosp android 12 pixel 解锁oem 编译刷入大全
https://blog.csdn.net/learnframework/article/details/125269456

aosp 12/13/lineageos19.1 framework学习编译刷入小米手机,努比亚
https://blog.csdn.net/learnframework/article/details/128438325

相关推荐
SPC的存折2 小时前
自用LNMP-Redis-NFS-Discuz5.0部署指南-脚本版
linux·运维·服务器·数据库·redis·mysql·缓存
阿火~2 小时前
docker完整镜像迁移【亲测有效】
linux·运维·服务器·docker·容器
网硕互联的小客服2 小时前
Linux root用户密码输入错误锁定策略,使用旧密码失败如何处理?
linux·服务器·网络·centos·自动化
YXXY3132 小时前
基础IO的介绍(四)
linux
石小千2 小时前
部署Nextcloud与Onlyoffice(一)安装Nextcloud
linux·运维
倔强的石头1062 小时前
【Linux指南】基础IO系列(五):重定向原理与 dup2 系统调用 —— 改变 IO 流向的魔法
linux·运维·服务器
吴烦恼的博客2 小时前
RK3588-kernel BringUp记录(二)
linux·kernel
sanzk2 小时前
ASTRA PRO相机
ubuntu·ros·3d相机
-ONLY-¥2 小时前
HAProxy+Nginx高可用集群实战指南
linux