基于Android系统作为一个庞大的开源项目,除了一些谷歌自带服务之外,其他所有代码均以AOSP(Android Open Source Project)的形式开源。对于框架开发者来说,熟悉AOSP是必不可少的知识。即使是普通开发者,为了优化代码或者是调用一些系统底层API,有时也需要参考底层源码。那么就需要搭配一个合适的源码阅读环境了。
*CPU虚拟化是装置的前提环境,能够在使命管理器-功能-CPU检查是否显示虚拟化已启用
*wsl默许会装置到C盘,假如C盘容量不行300G,则自行查阅资料将其迁移到其他契合条件的硬盘
初度运用WSL能够运用wsl --install直接初始化默许装置Ubuntu体系,假如现已装置过其他发行版别,能够运用wsl --list --online + wsl --install -d挑选Ubuntu发行版进行装置,装置完成后依照提示装备账号密码进入体系,如有其他问题请参阅官方文档
修正WSL内存和CPU核心
默许状况下Windows给WSL的装备并不是很高,咱们能够在C:/Users//目录下创立.wslconfig文件(注意无后缀名,window或许自己增加txt后缀,请注意区分),
[wsl2]processors=8memory=16GBnestedVirtualization=true
上述核心数和内存大小请依照本机实际状况编写,可是依照Google要求,内存至少为16G,修正成功后在Windwos指令行履行wsl --shutdown以生效,在重启后的Ubuntu指令行履行 free -h和 cat /proc/cpuinfo| grep “processor”| wc -l分别检查内存和cpu是否契合
装备软件源能够让你更快的下载编译所需的东西,在Ubuntu中运用下面的指令进行软件源的替换
sudo sed -i "s@http://.*archive.ubuntu.com@https://mirrors.tuna.tsinghua.edu.cn@g" /etc/apt/sources.list
sudo sed -i "s@http://.*security.ubuntu.com@https://mirrors.tuna.tsinghua.edu.cn@g" /etc/apt/sources.list
然后运转 sudo apt-get update 更新索引以生效。
在Ubuntu中履行下述指令以装备建立环境
sudo apt-get install git-core gnupg flex bison build-essential zip curl zlib1g-dev gcc-multilib g++-multilib libc6-dev-i386 libncurses5 lib32ncurses5-dev x11proto-core-dev libx11-dev lib32z1-dev libgl1-mesa-dev libxml2-utils xsltproc unzip fontconfig
履行 sudo apt-get install repo来装置Repo东西
履行sudo ln -s /usr/bin/python3 /usr/bin/python将python链接到python3
运用下面的指令以装备环境,读者对google的奉献会以以下账号信息提交,Google要求Email信息有必要是Google账号。
git config --global user.name Your_Name
git config --global user.email you@gmail.com
由于网络限制,咱们假如直接下载Android源码会遇见各式各样的网络问题,即便是咱们有一个”通道”能够处理网络问题,可是由于Android源码太大,”通道”流量不行等也会阻止下载。所以咱们要利用好国内的镜像服务,运用镜像下载全量的数据,之后假如想及时的获取增量或许想要repo upload提交源码,能够运用咱们的”通道”进行,假如没有”通道”那只能等候镜像站定时更新机制,并且不能提交源码。
咱们挑选运用Tuna镜像站下载AOSP Master源码,以下是具体步骤
上述操作仅仅是将镜像站的代码复制了下来,假如想要给AOSP提交奉献,或许获取今天内的改动,那么镜像站就不那么即时了,假如有这方面的要求能够挑选装备署理并设置官方源,这样就建立了和AOSP的交互环境
以笔者运用的Clash为例,在WSL中装备署理分两种状况
Windows装置Clash软件并在WSL中运用
WSL中装置clash软件
署理装备成功后理论上咱们就能够访问 https://android.googlesource.com/platform/manifest了,咱们能够运用vim修正 .repo/manifests.git/config文件,将其下的一切https://mirrors.tuna.tsinghua.edu.cn/git/AOSP/platform/manifest替换成 https://android.googlesource.com/platform/manifest 然后再次履行repo sync即可
以下指令全部在aosp根目录下运转
运用envsetup.sh脚本初始化环境:source build/envsetup.sh
该脚本为当时环境注入了东西,编译目录,编译产品等变量,关闭终端后会失效,之后介绍的一切指令都是履行source build/envsetup.sh指令之后,进入aosp目录之后,您应该一直履行一下该脚本
履行lunch弹出菜单挑选合适的类型
履行m指令构建Android,并等候成功构建,这里会十分慢十分慢…
请确保您的电脑体系是Windwos11,假如非Windows11请疏忽本章,并关注下一篇文章源码开发检查环境建立相关
1.请检查 nestedVirtualization=true 是否存在WindowsC:/Users//.wslconfig文件中 2.在Ubuntu中运用sudo apt install cpu-checker并运用kvm-ok指令检查是否可用,假如不可用,或许WSL版别或许Windows版别不对。
WSL2-Linux-Kernel是开源的,咱们能够很简单的获取他,下面以linux-msft-wsl-5.15.83.1为例,展现构建流程
再次将目录切换到aosp目录下,履行source build/envsetup.sh以及lunch aosp_cf_x86_64_phone-userdebug, 然后履行launch_cvd --start_webrtc=true即可敞开服务,检查日志在Windwos浏览器输入网址,即可操作Cuttlefish
由于Adb服务默许检测5555端口,而Cuttlefish敞开的服务纷歧定是5555, 1.Ubuntu Shell履行adb devices取得port,然后将其转发到5555端口adb forward tcp:5555 tcp:6520,Windows端即可发现服务
2.Ubuntu Shell履行adb devices取得port, 然后在Windows端指定端口adb connect localhost:6520
至此,咱们现已成功编译并运转了AOSP,凭借Cuttlefish服务,咱们运用宿主的浏览器即可操作虚拟机,并且能够运用adb衔接服务。限于篇幅,下一篇文章将讲述怎么运用AIDEGen将源码导入Windows端的Android Studio,由于Wslg的功能和体会并不能让咱们满意,所以将Android Studio跑在WSL2并不是一个正确的挑选,何况他的渲染并不好。