首页 > 编程语言 >wsl 编译 android AOSP 13 源码

wsl 编译 android AOSP 13 源码

时间:2023-08-25 14:44:25浏览次数:67  
标签:13 mirrors 编译 edu wsl AOSP 源码 https ubuntu

安装WSL

  1. Windows 11 版本如下:
    image

  2. 首先在 microsoft store 里面安装ubuntu版本,我选择的是 ubuntu 22.04:
    image

  3. 安装完成后,打开"控制面板" --> "程序和功能" --> "启动或关闭 Windows功能",打开下面的选项:
    image

  4. 安装成功后
    image

迁移WSL到一个可用空间至少300G的磁盘

wsl 默认安装在C盘,因为Android AOSP 13 系统源码比较庞大,下载加编译需要100多G空间,而且文件系统必须要用linux的,必须在wsl unbutu系统内部的文件夹下载编译AOSP,不要下载到window 的文件系统里,比如下载到挂载点 /mnt/d 也就是对应window文件系统的D盘,下载是成功的,但是编译过程会因为跨了window和linux文件系统交叉,会编译出错。系统源码要下载到wsl 虚拟机内部空间中,所以需要做一个操作:把WSL迁移到一个空间至少有300G剩余的磁盘里

  1. 打开CMD,输入wsl -l -v查看wsl虚拟机的名称与状态。
    image
    了解到本机的WSL全称为Ubuntu-22.04,以下的操作都将围绕这个来进行。
    输入 wsl --shutdown 使其停止运行,再次使用wsl -l -v确保其处于stopped状态。
  2. 在E盘创建一个目录用来存放新的WSL,比如我创建了一个 E:\wsl_2204
  • 导出它的备份(比如命名为Ubuntu-22.04.tar)
wsl --export Ubuntu-22.04 E:\wsl_2204\Ubuntu-22.04.tar
  • 确定在此目录下可以看见备份Ubuntu.tar文件之后,注销原有的wsl
wsl --unregister Ubuntu-22.04
  • 将备份文件恢复到E:\wsl_2204中去
wsl --import Ubuntu-22.04 E:\wsl_2204 E:\wsl_2204\Ubuntu-22.04.tar
  1. 在CMD中,输入 Linux发行版名称.exe config --default-user 原本用户名
Ubuntu2204 config --default-user stlong

这时候再次打开WSL,你会发现一切都恢复正常了

更换国内源

# 默认注释了源码镜像以提高 apt update 速度,如有需要可自行取消注释
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-updates main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-updates main restricted universe multiverse
deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-backports main restricted universe multiverse
# deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-backports main restricted universe multiverse

# deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-security main restricted universe multiverse
# # deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-security main restricted universe multiverse

deb http://security.ubuntu.com/ubuntu/ jammy-security main restricted universe multiverse
# deb-src http://security.ubuntu.com/ubuntu/ jammy-security main restricted universe multiverse

# 预发布软件源,不建议启用
# deb https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-proposed main restricted universe multiverse
# # deb-src https://mirrors.tuna.tsinghua.edu.cn/ubuntu/ jammy-proposed main restricted universe multiverse

image

安装git,配置 email 与 name:

sudo apt-get install  git
git --version

image

配置 email 与 name(有效无效均可)

git config --global user.name YourName
git config --global user.email [email protected]

image

安装python3
Ubuntu 2204中python3默认已经安装,使用下列命令查看程序的安装位置,同时建立软连接

which python3

sudo ln -s /usr/bin/python3 /usr/bin/python

image
安装相关依赖

sudo apt install unzip zip libssl-dev  libffi-dev gnupg flex bison gperf build-essential  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 

sudo apt-get install openjdk-8-jdk

下载android源码

我选择的是 android-13.0.0_r35

  • 初始化repo环境:
mkdir ~/bin
curl https://mirrors.tuna.tsinghua.edu.cn/git/git-repo > ~/bin/repo
cd bin
chmod +x repo
  • 设置环境变量:
vim ~/.bashrc
添加下面两行环境变量配置:
PATH=~/bin:$PATH
export REPO_URL=https://mirrors.tuna.tsinghua.edu.cn/git/git-repo
使环境变量生效:
source ~/.bashrc

  • 初始化源码目录(因为我不需要源码的 commit ,所以设置了 —depth=1):
repo init -u https://mirrors.tuna.tsinghua.edu.cn/git/AOSP/platform/manifest -b android-13.0.0_r35 --depth=1

成功如下图:
image

  • 同步源码
repo sync -j8

image

  • 编译
source build/envsetup.sh
lunch sdk_phone_x86_64
make -j8

image

  • 启动模拟器,验证编译成果
    wsl2由于是没有界面的unbutu 环境集成,不支持linux下的虚拟机kvm,并不能直接启动带界面的模拟器,我们需要用我们自己windows android sdk环境下的emulater.exe去加载编译产物img来进行调试。
  1. 在android studio中启动avd manager,创建一个和你编译指定版本一致的模拟器,这里是android 13, x86_64的镜像,起个名字如 wsl-android-13R5,下面要用到这个名字
    image
  2. 加载wsl2编译好的img到window模拟器中,一般调试只需要system.img和userdata.img
#擦除已有的avd数据
D:\AndroidSdk\emulator\emulator.exe   -avd wsl-android-13R5   -wipe-data
#模拟器重新加载android image
D:\AndroidSdk\emulator\emulator.exe  -avd wsl-android-13R5   -system "\\wsl$\Ubuntu-22.04\home\stlong\android13r35\out\target\product\emulator_x86_64\system.img" -data "\\wsl$\Ubuntu-22.04\home\stlong\android13r35\out\target\product\emulator_x86_64\userdata.img"

image

说明

  • -system指定system.img
  • -data指定userdata.img
  • -ramdisk指定ramdisk.img
  • -kernel指定内核映像

AOSP常用编译和查找命令

  • m :等同于 make ,进行一次完整编译。
  • mm:在当前目录下编译所有模块,但不包括依赖项。
  • mmm [目录]:编译指定目录下的所有模块,但不包括依赖项。只编译指定模块:mmm [dir/:target1,target2]
  • mma:在当前目录下编译所有模块,包括依赖项。
  • mmma [目录]:编译指定目录下的所有模块,包括依赖项。
  • make clean:删除整个 out/ 目录。
  • make clobber:用于清除编译缓存。
  • make snod:当重新编译部分模块完成后,快速生成img文件。
  • cgrep:对C/C++文件执行 grep (只搜寻C/C++文件类型,也包括.h类型)。
  • jgrep:只对Java文件执行 grep (只搜寻Java文件类型)。
  • resgrep:只匹配 /res 目录下的 xml 文件。
  • sepgrep:只查找sepolicy文件。

参考

标签:13,mirrors,编译,edu,wsl,AOSP,源码,https,ubuntu
From: https://www.cnblogs.com/stlong/p/17654389.html

相关文章

  • 【算法记录】Java - Base64编码解码源码
    Base64编码表索引对应字符索引对应字符索引对应字符索引对应字符0A17R34i51z1B18S35j5202C19T36k5313D20U37l5424E21V38m5535F22W39n5646G23X40o5757H24Y41p5868I25Z42q5......
  • 直播网站程序源码,js判断上传图片格式类型、尺寸大小
    直播网站程序源码,js判断上传图片格式类型、尺寸大小//判断图片类型varf=document.getElementById("File1").value;if(f==""){ alert("请上传图片");returnfalse;}else{if(!/\.(gif|jpg|jpeg|png|GIF|JPG|PNG)$/.test(f)){alert("图片类型必须是.gif,jpeg,jpg,png中的一种")re......
  • 在线直播系统源码,java使用Thumbnailator实现图片压缩
    在线直播系统源码,java使用Thumbnailator实现图片压缩1.添加jar包 <!--Thumbnailator图片压缩--><dependency>  <groupId>net.coobird</groupId>  <artifactId>thumbnailator</artifactId>  <version>0.4.8</version></dependency>......
  • 超详细!中标麒麟7下源码安装Zabbix 5.0(同样适用CentOS/RedHat)
    摘要本文详细记录了在中标麒麟7下安装Zabbix5.0的过程,包含Server、Agent、Web页面的安装以及MySQL的初始化。安装方法同样适用于CentOS与RedHat。1相关背景说明1.1操作系统版本服务器的操作系统为中标麒麟7,中标麒麟可以通过nkvers命令,查看操作系统详细信息:查看记录了操作系统发......
  • Spring框架源码结构
    骑士李四记录:Spring源码解析Spring是一款用于简化企业级Java应用开发的分层开源框架,它有着强大的扩展、融合能力,善于将各种单层框架完美地糅合在一起,并建立一个完整体系,统一、高效地构造可提供企业级服务的应用系统。Spring主要分为8大模块:数据处理模块(DataAccess/Integration)、......
  • 基于java极速WEB+ORM 框架:jfinal2.0开发的通用后台管理系统及源码
    final2-common-admin1、基于java极速web开发框架:jfinal2.0开发的通用后台管理系统,包括完整的登录、注册、菜谱管理、厨师管理、餐厅管理等功能2、开发时是基于jdk1.8、tomcat7.0,utf8编码3、运行时请修改配置文件:a_little_config.txt及相应的运行环境:JavaBuildPath、TargetedR......
  • 黄冈市扶贫助农商场系统的设计与实现-计算机毕业设计源码+LW文档
    一、设计(论文)选题的依据(选题的目的和意义、该选题在国内外的研究现状及发展趋势,等)(一)选题目的和意义新世纪初期,随着改革开放的脚步越来越近,在党中央的正确领导下,互联网技术发展迅猛,各种网络基础设施的建设也在加速,5G、人工智能等新兴技术的发展,使人们的需求不断增加,推动着技术的进步......
  • 基于ssm的医院预约服务平台-计算机毕业设计源码+LW文档
    一、立题依据(研究的目的与意义及国内外现状):近年来,计算机技术的高速发展带动了许多行业的进步,通过科技手段可以帮助企业改善工作流程,提高工作效率。据统计,大部分企业目前已基本实现信息化管理进程。在管理系统模块中,最重要的莫过于数据库,可以将企业的各项数据通过数据库进行存储,然......
  • discuz3.4,关于安装dev8133插件(购买帖子内容),在论坛对用户组开启评分功能后,用户一点击
    漏洞修补方案一:后端措施在source/module/forum/forum_misc.php文件中,$post=C::t('forum_post')->fetch('tid:'.$_G['tid'],$_GET['pid']);//这一步调用大C的静态方法t()从表forum_post中根据tid和pid共同查询出当前要评分的帖子主体内容对此处查询出来的$post数据直接后端进......
  • [ABC313F] Flip Machines
    ProblemStatementThereare$N$cardsnumbered$1$through$N$.Eachfaceofacardhasanintegerwrittenonit;card$i$has$A_i$onitsfrontand$B_i$onitsback.Initially,allcardsarefaceup.Thereare$M$machinesnumbered$1$through$M$.Mach......