车载AOSP编译

188 阅读4分钟

1、下载Ubuntu

这个下载清华大学镜像下载嘎嘎快,我用的20.04版本。 ubuntu20

2、下载VMware

这个是VMware16 里面有key,可以直接用 链接:https://pan.baidu.com/s/1w3-zGZ_rYCWNRGRjaXtxzg?pwd=1111 提取码:1111

3、设置交换分区

编译这个比较吃性能,难免有内存不够的情况,这里提一嘴噢,电脑的性能肯定是越高越好,万一电脑性能不好也不是没办法,交换分区就很好用。

什么是交换分区呢

交换分区(swap),或者叫内存置换空间(swap space),Linux 的交换分区(swap),或者叫内存置换空间(swap space),是磁盘上的一块区域,可以是一个分区,也可以是一个文件,或者是他们的组合。交换分区的作用是,当系统物理内存吃紧时,Linux 会将内存中不常访问的数据保存到 swap 上,这样系统就有更多的物理内存为各个进程服务,而当系统需要访问 swap 上存储的内容时,再将 swap 上的数据加载到内存中,也就是常说的 swap out 和 swap in。

可以提供过free -m命令查看虚拟内存与交换空间大小 或者 swapon -s

设置交换分区的步骤

停用交换文件
sudo swapoff /swapfile
删除文件
sudo rm /swapfile
设置交换内存
sudo fallocate -l 30G /swapfile
设置权限 
sudo chmod 600 /swapfile
挂载
sudo mkswap /swapfile
启用
sudo swapon /swapfile

接着把交换信息写入系统配置,不然Ubuntu重启后以上配置swap空间工作得重新来一遍。 打开配置文件 sudo vim /etc/fstab 在最后一行插入 /swapfile swap swap defaults 0 0

如果报错vim: command not found 那就安装一下 sudo apt update
sudo apt install vim

系统只有当虚拟内存不足才会启动Swap,我们可以挑高一点触发交换的条件,避免卡死 终端输入命令: sudo vim /etc/sysctl.conf

在最后面添加如下语句按i进入编辑模式,光标移到最后,插入语句 vm.min_free_kbytes=1500000 #1.5G 保存退出(按ESC退出编辑模式,输入:wq保存退出)然后重启开机

4、安装

git:sudo apt install git

5、安装依赖工具

一行搞定

sudo apt install git-core libssl-dev  libffi-dev gnupg flex bison gperf build-essential zip curl zlib1g-dev gcc-multilib g++-multilib libc6-dev-i386 lib32ncurses5-dev x11proto-core-dev libx11-dev libz-dev ccache libgl1-mesa-dev libxml2-utils xsltproc unzip

6、下载与安装Python

cd Downloads
#下载python3
wget https://www.python.org/ftp/python/3.7.1/Python-3.7.1.tgz
#解压
tar xvf Python-3.7.1.tgz
#编译与安装Python3
./configure    
#或指定路径  
./configure --prefix=/usr/local/python3.7
#安装
sudo make install
下载python2 
sudo apt update 
sudo apt install python2
#设置或切换python版本 python2 设置为1
sudo update-alternatives --install /usr/bin/python python /usr/bin/python2 1
#python3 设置为2
sudo update-alternatives --install /usr/bin/python python /usr/local/python3.7/bin/python3.7 2
#切换
sudo update-alternatives --config python
# 验证Python版本
python --version

7、把源码同步下来

Android 系统版本号

mkdir ~/bin

PATH=~/bin:$PATH

curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo

mkdir Android12

cd Android12
#下载
repo init -u git://mirrors.ustc.edu.cn/aosp/platform/manifest -b android-12.1.0_r27

可能出现的问题

权限问题

chmod 755 /home/zyz/bin/repo

连接问题

如果提示无法连接到 gerrit.googlesource.com,可以编辑 ~/bin/repo,把 REPO_URL 一行替换成下面的: REPO_URL = "mirrors.tuna.tsinghua.edu.cn/git/git-rep…" 如果提示无法进行SSL证书校验,执行:

SSL证书校验
git config --global http.sslverify false

git config --global https.sslverify false
git身份

如果出现git身份不存在:

git config --global user.email "********.com"

git config --global user.name zyz
同步

这个估计要好几个小时

repo sync

如果报错 error: Unable to fully sync the tree.

error: Downloading network changes failed.

Try re-running with "-j1 --fail-fast" to exit at the first error.
#执行:
repo sync -j1 --fail-fast

出现repo sync has finished successfully. 就成功了

8、编译

. build/envsetup.sh

#lanch 选择lunch sdk_car_x86_64-userdebug 车载
lanch

#最后make  -j后面的线程根据你的电脑cpu来设定 一般是自己电脑的1.5杯
make -j18 2>&1 | tee build.log


9、打开模拟器

cd 源码目录
emulator

第一次编译后重启虚拟机,可能你的虚拟机emulator的指令就用不了的,会报错找不到emulator指令 这时候重新编译一次就可以,第一次编译后后面都是增量编译,速度比较快

. build/envsetup.sh 
#lanch 选择
lunch sdk_car_x86_64-userdebug 
#最后make -j后面的线程根据你的电脑cpu来设定 一般是自己电脑的1.5 
make -j14 2>&1 | tee build.log

但是总不能一直要编译一次才可以启动模拟器吧 我们可以保存编译后的环境变量,然后每次进入都可以吧环境变量刷进去


# 查看当前会话的环境变量
echo $PATH
# 然后把输出的环境变量放到 ~/.bachrc  配置文件
nano ~/.bashrc
# 把光标挪到最后 添加下面这行 PATH:$HOME后面写你的 PATH
export PATH=$PATH:你的PATH.......
# 最后 生效这些改动
source ~/.bashrc

10、安装 多个版本jdk

sudo apt update
sudo apt install openjdk-8-jdk
sudo apt install openjdk-11-jdk
#配置jdk 选择器
sudo update-alternatives --install /usr/bin/java java /usr/lib/jvm/java-8-openjdk-amd64/bin/java 1
sudo update-alternatives --install /usr/bin/java java /usr/lib/jvm/java-11-openjdk-amd64/bin/java 2
#切换jdk版本  选择序号即可
sudo update-alternatives --config java

11、使用aidegan 导入源码

#先安装你的as 
wget https://redirector.gvt1.com/edgedl/android/studio/ide-zips/2022.1.1.21/android-studio-2022.1.1.21-linux.tar.gz
#解压
mkdir -p ~/AndroidStudio 
tar -xzf android-studio-2022.1.1.21-linux.tar.gz -C ~/AndroidStudio
#然后配置环境变量
nano ~/.bashrc 
#文件末尾添加  (按 `Ctrl + O` 保存,按 `Ctrl + X` 退出)
export ANDROID_STUDIO_HOME=$HOME/AndroidStudio/android-studio export PATH=$PATH:$ANDROID_STUDIO_HOME/bin
#让环境变量生效
source ~/.bashrc 

aidegan 是一个自动生成项目配置文件,针对不同的主流ide都是可以的,比如 Android Studio

#环境初始化和选择编译目标
source build/envsetup.sh && lunch full_k62v1_64_bsp-userdebug
#然后选择你要改的模块就好 会自动打开as噢
aidegen Settings framework

12、使用idegen 导入源码

如果你编译的系统比较老,或者高度自定义过的 ,没有aidegan

#回到源码目录 执行 
make idegen -j4
#生成文件android.iml & android.ipr
sudo development/tools/idegen/idegen.sh
#如果文件图标有锁头,as打不开ipr  
sudo chown 你的用户名字:你的用户名字 android.ipr