再学安卓 - 系统环境安装

前言

上半年终于鼓起勇气的我辞去了国内某手机厂商的职位,一方面想休整一下,另一方面也想好好梳理一下自己在安卓这方面的知识,沉淀积累。由于个人知识面有限,若有错误,欢迎大家积极指出,共同讨论,一起进步。

本系列希望从应用开发者的角度出发,将系统层面各个系统服务的脉络及运行原理呈现出来。

适用于个人的开发环境配置

离开公司之后,什么事情都得自己动手了,想想以前在公司有一帮专门搞工程编译的同事,那种衣来伸手饭来张口的日子还真是舒坦,身在福中不知福。😂

开篇就来配置我们的开发环境吧,其中包括3部分:系统环境安装AOSP代码下载及编译、IDE代码导入。

软硬件要求

  • 操作系统:Win11专业版 + WSL2(Windows 11 专业版 24H2 26100.2033)
  • CPU:尽可能高配置,缩短编译时间(13th Gen Intel(R) Core(TM) i9-13900H 2.60 GHz 14核)
  • 内存:至少32G,最好64G(Samsung 32G DDR5 5600MHz + Samsung 8G DDR5 5200MHz)
  • 硬盘:1T及以上,Android13的源代码+编译产物大概要占400G左右(Samsung MZVL21T0HCLR-00BL2 1T)

注:括号中为我的机器配置,供参考。我的机器原本有两条8G内存,两个插槽,为了编译,增加了一条32G,8G就留了一条没有换下来。

安装操作系统

推荐安装Win11 专业版,家庭版不能安装WSL,请勿浪费时间。Win11镜像推荐到官网下载,纯净安全,无负担。 推荐使用Rufus系统安装启动盘制作工具,完全免费,傻瓜式安装Win11。

注:如果可能的话,推荐重新分区,为WSL单独建立一个500G左右的分区,方便后续管理。

安装WSL2

  1. 在BIOS中开启CPU的虚拟化支持(Virtualization Technology) ,简称VT选项。一般都是默认开启的,只要你的机器能启动Android Studio中的模拟器就说明VT选项已经打开了。

Intel平台示例 AMD平台示例

  1. Windows中的配置:控制面板->程序->启用或关闭Windows功能,勾选Hyper-V适用于 Linux 的 Windows子系统虚拟机平台重启系统
  1. 安装WSL2。当前是2024年11月,默认安装已经是WSL2。据广大网友提醒,WSL1不支持编译AOSP,所以切勿浪费时间。
sh 复制代码
# 查看WSL支持的Linux发行版本
wsl -l -o
# 安装指定分发,从上面列表中选一个最新的Ubuntu(AOSP官方指定的编译系统)
wsl --install -d Ubuntu-24.04
  1. 待安装完成后,查看WSL版本。
sh 复制代码
# 查看当前系统中存在的所有Linux实例
# Name: 实例名
# State: 当前状态
# Version: WSL版本
wsl -l -v
# wsl -v 显示更详细的版本信息。其他命令解释请查询 wsl --help
  1. 迁移WSL。我们需要在WSL中存放编译AOSP代码,需要巨大的磁盘空间,不幸的是,WSL默认安装在系统盘中,地主家的系统盘也没这么富裕啊,所以需要安装以下步骤迁移到一个500G或更大的分区中。
sh 复制代码
# 1.查看Linux实例
wsl -l -v

# 2.关闭Linux实例
wsl --terminate <实例名称>   # 关闭指定实例
wsl --shutdown              # 关闭所有实例

# 3.导出Linux实例
wsl --export <实例名称> <导出地址>
# 例如:wsl --export Ubuntu-24.04 E:\ubuntu2404.tar

# 4.卸载系统盘实例
wsl --unregister <实例名称>

# 5.导入实例到其他盘
wsl --import <新的实例名称> <新的实例存放地址> <导入实例文件地址>
# 例如:wsl --import ubuntu2404 E:\ubuntu2404 E:\ubuntu2404.tar

# 6.启动并进入Linux系统
wsl -d <新的实例名称> -u <Linux用户名>
# 例如:wsl -d ubuntu2404 -u root

另外,可以通过命令行提示符cmd顶部提供的快捷入口进入Linux。

  1. 在Linux系统中可能需要科学上网,因此代理配置必不可少。微软官网提供了详细的WSL配置参考。这里列出我选用的配置项。

注:使配置项生效需要重启WSL(wsl --shutdown)。

sh 复制代码
# 文件位置:C:\Users\<用户名>\.wslconfig
[wsl2]

# 启用镜像网络特性支持
networkingMode=mirrored

# WSL2/WSLg DNS 代理隧道,以便由 Windows 代理转发 DNS 请求(请根据实际需要启用)
dnsTunneling=true

# WSL2/WSLg 子系统的 Windows 防火墙集成,以便 Hyper-V 或者 WPF 能过滤子系统流量(请根据实际需要启用)
firewall=true

# 是否强制 WSL2/WSLg 子系统使用 Windows 代理设置(请根据实际需要启用)
autoProxy=true

# 配置WSL能使用的核心数
processors=8
# 配置内存大小,一般为物理内存的50%,AOSP编译要求至少16GB,因此您的机器至少需要32G物理内存
memory=20GB
# 交换分区大小,一般为内存大小的2倍
swap=40GB
# 是否支持嵌套虚拟化,我们后续会在WSL中运行Android模拟器,因此需要打开此选项
nestedVirtualization=true

[experimental]

# 启用空闲内存自动缓慢回收
autoMemoryReclaim=gradual
  1. 在Ubuntu下安装下载编译AOSP源码所需的软件包,此命令来自AOSP官方文档
sh 复制代码
sudo apt-get install git-core gnupg flex bison build-essential zip curl zlib1g-dev libc6-dev-i386 x11proto-core-dev libx11-dev lib32z1-dev libgl1-mesa-dev libxml2-utils xsltproc unzip fontconfig

附录

Microsoft官网WSL安装使用文档

Microsoft官网WSL配置文件说明

AOSP官方文档

相关推荐
钰爱&5 小时前
【操作系统】Linux之网络编程(UDP)(头歌作业)
linux·操作系统
清酒伴风(面试准备中......)6 小时前
操作系统基础——针对实习面试
笔记·面试·职场和发展·操作系统·实习
架构师Wu老七5 天前
【软考】系统架构设计师-计算机系统基础(2):操作系统
系统架构·操作系统·软考·系统架构设计师
不爱学习的YY酱5 天前
【操作系统不挂科】<线程概念(6)>选择题&简答题(带答案与解析)
linux·开发语言·操作系统
修修修也8 天前
【Linux】进程间通信
linux·运维·服务器·操作系统·进程通信
Pandaconda10 天前
【操作系统】每日 3 题(十八)
linux·服务器·开发语言·数据结构·笔记·后端·操作系统
Raymond运维11 天前
第一章 Linux安装 -- 安装Debian 12操作系统(四)
linux·运维·服务器·操作系统·debian
小蜗的房子11 天前
一篇文章让你了解Linux中的用户和组权限
linux·运维·服务器·后端·学习·操作系统·基础
简鹿办公11 天前
Windows 怎么关机?这五种方法你需要了解一下
操作系统