一.前言
- 测试的硬件环境(轻薄本):cpu:Amd r5 4600u,内存:16g,外接固态硬盘盒子。测试(下载和编译Android10)结果:下载时长为0.5-1h,编译时长接近5h;
- 虚拟机环境:VMware Workstation Pro17,镜像为:Kali-2022.3-installer-amd64;
二.安装Kali
- 安装步骤尽可能的详细一些,按照下方图示进行操作即可,无需做改动。
2.1.Debian版本选择和虚拟化设置
-
不确定是否一定要这么选,但是最好跟kali的对应(2022.3对应Debian11.x)
-
虚拟化设置(R5 4600U是十二线程的,个人就选择了内核数量为12)
2.2.虚拟机配置
2.3.安装界面
-
界面1
-
界面2
-
界面3
-
界面4
-
界面5
-
界面6
-
界面7
-
界面8
-
界面9
-
界面10
-
界面11
-
界面12
-
界面13
-
界面14(默认即可)
-
界面15
-
界面16
-
界面17
三.编译前的准备工作
3.1.配置root账户
- 输入以下命令,按照提示继续下一步
sudo passwd root
- 退出当前账号,使用root账户登录
3.2.切换shell为bash
- 执行以下命令表示切换,切换后重启虚拟机
chsh -s /bin/bash
3.3.修改时区
dpkg-reconfigure tzdata
3.4.更换镜像源
- 执行命令:vim /etc/apt/sources.list,注释默认镜像源,添加以下内容(存在疑惑的点:镜像到底只配置http还是https?本人两个都配置了。参考资料:https://mirrors.tuna.tsinghua.edu.cn/help/kali/)
deb https://mirrors.tuna.tsinghua.edu.cn/kali kali-rolling main non-free contrib
deb-src https://mirrors.tuna.tsinghua.edu.cn/kali kali-rolling main non-free contrib
3.5.(可选)共享文件夹挂载
//命令1
mkdir /mnt/hgfs
//命令2
vmhgfs-fuse .host:/ /mnt/hgfs
//命令3
umount /mnt/hgfs
//命令4
vmhgfs-fuse .host:/ /mnt/hgfs -o allow_other -o uid=1000 -o gid=1000 -o umask=022
- 开机自动挂载共享文件夹
//步骤一:使用命令
vim /etc/fstab
//步骤二:文件末尾添加以下内容
#开机自动挂载 下方share_dir替换成自定义的共享文件夹名
.host:/share_dir /mnt/hgfs/share_dir fuse.vmhgfs-fuse allow_other 0 0
3.6.装中文字体(需要先修改镜像源)
apt install xfonts-intl-chinese
apt install ttf-wqy-microhei
3.7.切换Python版本配置
- 首先查看默认安装的python版本有哪些,执行以下命令
cd /usr/bin//查看默认安装的python版本(默认安装了python2.7和python3.10,直接配置以下命令即可)
ls -al python*//配置1
update-alternatives --install /usr/bin/python python /usr/bin/python2.7 2
//配置2
update-alternatives --install /usr/bin/python python /usr/bin/python3.10 3
//查看配置后的信息
update-alternatives --display python
//切换python版本(此时,一般是0,1,2)
update-alternatives --config python
//(可选)解除 update-alternatives 对某个版本的管理
update-alternatives --remove /usr/bin/python python /usr/bin/python2.7
3.8.安装编译前依赖
- 在控制台执行以下命令(以下命令仅针对2022.3版本kali,其它版本不确定)
sudo apt-get install git-core gnupg flex bison build-essential zip curl zlib1g-dev gcc-multilib g++-multilib libc6-dev-i386 lib32ncurses-dev x11proto-core-dev libx11-dev lib32z1-dev libgl1-mesa-dev libxml2-utils xsltproc unzip fontconfig libncurses5 m4
3.9.配置git
git config --global user.email "邮箱地址"
git config --global user.name "用户名"
3.10.(不确定是否一定需要,但最好安装一下)配置JDK
- 尝试在ubuntu20上没有安装,成功编译过Android10和12。
//eg:在下载目录下执行以下命令
wget https://builds.openlogic.com/downloadJDK/openlogic-openjdk/8u262-b10/openlogic-openjdk-8u262-b10-linux-x64.tar.gz
//解压
tar -xvf openlogic-openjdk-8u262-b10-linux-x64.tar.gz
//将解压后的文件复制到 /usr/local/sbin/
cp openlogic-openjdk-8u262-b10-linux-64 /usr/local/sbin/ -r//添加配置信息
export JAVA_HOME=/usr/local/sbin/openlogic-openjdk-8u262-b10-linux-64
export PATH=$JAVA_HOME/bin:$PATH
export CLASSPATH=.:$JAVA_HOME/lib/dt.jar:$JAVA_HOME/lib/tools.jar
3.11.配置交换空间
- 给虚拟机提供的内存是12.5g,配置一下交换空间。在控制台直接cv即可,不用考虑位置(第一步要是出现报错就直接从第三步开始)。
#停用交换文件
swapoff /swapfile
#删除文件
rm /swapfile
#新建swap空间,个人设置的是20G
fallocate -l 20G /swapfile
#设置文件权限
chmod 600 /swapfile
#挂载
mkswap /swapfile
#激活启用
swapon /swapfile
#安装vim(可选)
apt-get install vim
#接下来,需要将交换信息写入系统配置
#打开配置文件
vim /etc/fstab
#在最末尾处插入(输入i进行插入,ctrl + shift + v是粘贴,如果不能实现粘贴,自行搜索处理一下,esc退出编辑,输入wq进行保存)
/swapfile swap swap defaults 0 0
#更改交换空间大小
vim /etc/sysctl.conf
#在最末尾处插入
vm.min_free_kbytes=1500000
四.下载环节
- 在准备工作做好之后,重启一下再执行下载和编译相关的工作;
mkdir ~/bin
curl https://mirrors.tuna.tsinghua.edu.cn/git/git-repo -o ~/bin/repo
chmod +x ~/bin/repo
- 在~/.bashrc中配置以下信息(别忘记同步:source ~/.bashrc)
export REPO_URL='https://mirrors.tuna.tsinghua.edu.cn/git/git-repo'
PATH=~/bin:$PATH
- 初始化仓库,-b 指示分支,这里使用android10
mkdir ~/android-10.0.0_r41
cd ~/android-10.0.0_r41repo init -u https://mirrors.tuna.tsinghua.edu.cn/git/AOSP/platform/manifest -b android-10.0.0_r41
五.编译环境
- 编译Android10请用Python2,前面选择了Python3,最后出现了报错。
source build/envsetup.sh
lunch aosp_x86_64-eng
//r5 4600u是十二线程的,这里就选择了j6
make -j6
-
出现报错(切换成Python2继续编译,重新执行上面三行代码)
-
编译成功,启动模拟器
六.总结
- 建议使用文章开头提及的Kali镜像(版本选择很重要)。尝试用过“Kali-linux-2022.3-vmware-amd64.7z”和“Kali-linux-2023.3-vmware-amd64.7z”,前者出现了不能启动模拟器,说是虚拟化被占用。后者出现过依赖方面的问题。
- Ubuntu环境编译aosp请参考:Ubuntu20编译Android12(车载环境搭建)
七.参考资料
- 解决了Kali2022.3找不到lib32ncurses5-dev安装依赖包的问题,借助https://pkgs.org/download/lib32ncurses5-dev找到Debian11对应的lib32ncurses5-dev是lib32ncurses-dev。
- https://mirrors.tuna.tsinghua.edu.cn/help/git-repo/
- https://mirrors.tuna.tsinghua.edu.cn/help/kali/