Kali2022.3虚拟机编译AOSP(从Kali安装到完成Aosp编译详细记录)

一.前言

  • 测试的硬件环境(轻薄本):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/

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/108267.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

Linux - 性能可观察性工具

文章目录 常用的Linux性能可观察性工具图解小结 常用的Linux性能可观察性工具 以下是一些常用的Linux性能可观察性工具: top: 显示实时的系统性能数据,包括CPU使用率、内存使用情况、进程信息等。 htop: 类似于top,但提供了更多的交互式功能…

SpringBoot详解

文章目录 SpringBoot的特点Spring,SpringBoot的区别SpringBoot常用注解标签SpringBoot概述SpringBoot简单Demo搭建读取配置文件的内容 SpringBoot自动配置Condition自定义beanSpringBoot常用注解原理EnableAutoConfiguration SpringBoot监听机制SpringBoot启动流程分…

typescript错误代码 error TS2451: 无法重新声明块范围变量“age”。ts(2451)

今天心血来潮写ts教程的时候发现一个问题,如下 短短的两行代码,竟然都报错,无法重新声明块范围变量age\。明明与其他文件没有相互依赖,却会提示 [ts] 无法重新声明块范围变量“age”。。且该文件目录夹下,也没有其他文件。为什么会有这个报错呢&#xff…

用区熔拉晶法和光谱分析法评价多晶硅棒的规程.

声明 本文是学习GB-T 29057-2023 用区熔拉晶法和光谱分析法评价多晶硅棒的规程. 而整理的学习笔记,分享出来希望更多人受益,如果存在侵权请及时联系我们 12 试验数据处理 12.1 通过测量取得样品的施主、受主杂质和代位碳、间隙氧杂质含量,再按公式(3)计算多晶硅棒…

Elasticsearch:什么是生成式人工智能?

生成式人工智能定义 给学生的解释(基本): 生成式人工智能是一种可以创造新的原创内容的技术,例如艺术、音乐、软件代码和写作。 当用户输入提示时,人工智能会根据从互联网上现有示例中学到的知识生成响应,…

【编程实践】使用pcl提取给定点云的三维边界点

1 执行结果 原始点云可视化 搜索半径设置为0.1m 搜索半径设置为0.05m 2 代码实现 // boundary#include <pcl/point_types.h> #include <pcl/features/normal_3d.h> #include <pcl/features/boundary.h> #include <pcl/io/file_io.h> #include &l…

解决TP-LINK配置DDNS失败的问题

听说TP提供了免费二级域名&#xff0c;在路由器管理界面可以绑定&#xff0c;但是登陆了TP账号后死活无法使用&#xff0c;现实异常&#xff0c;但是没有具体报错信息… 猜测是软件版本太久了&#xff0c;尝试在线升级失败&#xff0c;于是去TP官网下最新的安装包&#xff0c;…

markdown学习笔记

markdown学习笔记 1.文字&#xff08;依靠HTML&#xff09; 1.1文字缩进-空格转义符 单字符空&#xff1a;&emsp; 半字符空&#xff1a;&ensp;1.2文字对齐 「居中&#xff1a;」<center> 居中 </center> or <p align"center"> 居中 …

解决java.util.NoSuchElementException

解决java.util.NoSuchElementException 解决java.util.NoSuchElementException摘要引言正文1. 了解异常的根本原因2. 避免不正确的索引3. 处理空集合4. 使用迭代器时要小心5. 异常处理 总结参考资料 博主 默语带您 Go to New World. ✍ 个人主页—— 默语 的博客&#x1f466;&…

排查disabled问题之谷歌新版本特性

问题复现 最近我突然接手一个后台的bug&#xff0c;这个后台很久没有迭代更新了&#xff0c;我也不熟悉业务&#xff0c;所以只能看一下源码&#xff0c;问题很快就复现&#xff0c;测试的修复操作也很正确&#xff0c;就是因为渲染的input标签中存在disableddisabled’属性导…

Git: 工作区、暂存区、本地仓库、远程仓库

参考链接&#xff1a; Git: 工作区、暂存区、本地仓库、远程仓库 https://blog.csdn.net/weixin_36750623/article/details/96189838

在ubuntu18.04上编译C++版本jsoncpp/opencv/onnxruntime且如何配置CMakelist把他们用起来~

这篇文章背景是笔者在ubuntu上编译C代码&#xff0c;依赖一些包&#xff0c;然后需要编译并配置到CMakelist做的笔记。主要也是一直不太懂CMakellist&#xff0c;做个笔记以防忘记&#xff0c;也给读者提供一站式的参考&#xff0c;可能您需要的不是这几个包&#xff0c;但大同…