如何在windows搭建Android系统源码学习环境

本文介绍了作者在学习Android源码过程中,如何选择并搭建一个方便查看源码的本地系统,包括尝试双系统、WSL和最终选择的虚拟机方案,详细描述了配置虚拟机、安装AOSP、以及在AndroidStudio中导入源码的过程。
摘要由CSDN通过智能技术生成

随着对android源码的学习,在[cs.android.com/] 查看源码还是有些捉襟见肘,虽然cs的体验还是不错,但是目前只对main分支的代码symbol有索引跳转,有时候还是有些不方便的,于是决定自行搭建一套可以方便快速查看源码的本地系统。

1. 方案选择

双系统:搭建windows+ubuntu双系统,需要查看的时候,需要从windows切换到linux系统,两个系统互相独立,对于习惯windows工作环境的我来说,在尝试数次之后还是放弃了这个方式(主要是菜)。

WSL:Windows子系统,当初出来的时候,方便启动、windows可以方便直接的访问linux的文件系统的特性是真的很方便,但是在实际的时候过程中出现了几个奇怪的现象:当你下载好源码,信心满满的开始编译的时候,就发现编译总是莫名其妙的停掉了,且没有相应的错误提示,只有编译输出的戛然而止。。。发现,用的WSL2不稳定,换成WSL1,一通折腾还是不行。最后发现,这套方案要支持稳定编译,内存至少得32GB。。。看着我的16GB内存,还是看看虚拟机方案吧。

虚拟机:这套方案的优点是两套系统可以实时互操作,缺点就是得通过各种方式来解决不同文件系统之间互相访问的问题。

2. 虚拟机方案

2.1 搭建虚拟机环境

下载VirtualBox与Ubuntu镜像
创建虚拟机和配置虚拟机网络

常规操作,这里不再赘述。

windows访问虚拟机文件夹

完成以上步骤后,目前只能在虚拟机中访问,要想在windows上访问内容,还得完成几个步骤:
相比共享文件夹还是选择了Samba服务这种更加自由方便的方式

搭建samba服务
  • 下载
sudo apt-get install samba samba-common

  • 创建文件夹并配置权限
mkdir /mnt/data
chmod 777 /mnt/data

  • 配置
sudo vi /etc/samba/smb.conf

在文件最后一行添加以下配置:

[share] ##命名随意但不能有空格
    comment = Ubuntu_share	          ##注释名,随意
    path = /mnt/data       ##要共享的文件夹路径(自定义)
    public = yes		           ##意味着不用账户密码,可随意访问(不需要的删掉即可)
    browseable = yes
    writeable = yes
    read only = no
    valid users = username	           ##设置为ubuntu 账户
    create mask = 0777	           ##往下都是读写之类的权限
    directory mask = 0777
    force user = nobody
    force group = nogroup
    available = yes

  • 创建账户密码,需先完成以上配置,账户必须是已存在的linux账户
smbpasswd -a username

  • 重启服务
/etc/init.d/smbd restart

  • 完成以上步骤之后就可以在windows添加: 查看虚拟机ip地址,若显示为10.0.2.15,则需关闭虚拟机,将网络连接方式改为【桥接网卡】
ifconfig

enp0s3: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500
        inet 192.168.31.145  netmask 255.255.255.0  broadcast 192.168.31.255
        inet6 fe80::2245:3d0b:5b74:8a03  prefixlen 64  scopeid 0x20<link>
        ether 08:00:27:cb:66:84  txqueuelen 1000  (Ethernet)
        RX packets 20251819  bytes 3267664963 (3.2 GB)
        RX errors 0  dropped 0  overruns 0  frame 0
        TX packets 27420703  bytes 31970932094 (31.9 GB)
        TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0


添加映射网络驱动器位置 在这里插入图片描述
完成后就能找到share共享位置:

在这里插入图片描述

2.2 下载AOSP

下载依赖
sudo apt-get install git-core gnupg flex bison build-essential zip curl zlib1g-dev libc6-dev-i386 libncurses5 lib32ncurses5-dev x11proto-core-dev libx11-dev lib32z1-dev libgl1-mesa-dev libxml2-utils xsltproc unzip fontconfig

下载repo
sudo apt-get update
sudo apt-get install repo

若不适用或者版本过时可以直接下载:

export REPO=$(mktemp /tmp/repo.XXXXXXXXX)
curl -o ${REPO} https://storage.googleapis.com/git-repo-downloads/repo
gpg --recv-key 8BB9AD793E8E6153AF0F9A4416530D5E920F5C65
curl -s https://storage.googleapis.com/git-repo-downloads/repo.asc | gpg --verify - ${REPO} && install -m 755 ${REPO} ~/bin/repo

由于网络问题,会经常下载失败,可以采用清华源下载:

mkdir ~/bin/
curl https://mirrors.tuna.tsinghua.edu.cn/git/git-repo -o ~/bin/repo
chmod +x ~/bin/repo

源码下载
cd /mnt/data
curl -OC - https://mirrors.tuna.tsinghua.edu.cn/aosp-monthly/aosp-latest.tar

curl指令 后跟的options中,-C表示会跟在之前的进度继续下载,这样即使下载过程因为网络等原因中断也能继续进行,不需要重新开始。

  • 解压
tar xf aosp-latest.tar
cd AOSP

  • 这个时候目录中只有一个隐藏目录:.repo,需要进行一次同步:
repo sync

加快速度可以用

repo sync -c -j8

完成后,就能看到完整的aosp源码目录: 在这里插入图片描述

2.4 android studio导入源码

在导入前需要完成以下几个步骤

编译生成项目配置文件
source build/ensetup.sh
mmm development/tools/idegen/
sudo development/tools/idegen/idegen.sh

完成编译后会在根目录生成android.iprandroid.iml两个文件,修改文件权限:

sudo chmod 777 android.ipr
sudo chmod 777 android.iml

配置项目配置文件

由于项目的文件内容非常多,第一次导入会耗费非常多时间,这里建议在导入前,打开android.ipr,加入以下配置:

<excludeFolder url="file://$MODULE_DIR$/.repo" />
<excludeFolder url="file://$MODULE_DIR$/abi" />
<excludeFolder url="file://$MODULE_DIR$/art" />
<excludeFolder url="file://$MODULE_DIR$/external" />
<excludeFolder url="file://$MODULE_DIR$/docs"/>
<excludeFolder url="file://$MODULE_DIR$/developers" />
<excludeFolder url="file://$MODULE_DIR$/development" />
<excludeFolder url="file://$MODULE_DIR$/device" />
<excludeFolder url="file://$MODULE_DIR$/hardware" />
<excludeFolder url="file://$MODULE_DIR$/sdk" />
<excludeFolder url="file://$MODULE_DIR$/libcore" />
<excludeFolder url="file://$MODULE_DIR$/libnativehelper" />
<excludeFolder url="file://$MODULE_DIR$/prebuilt" />
<excludeFolder url="file://$MODULE_DIR$/bionic" />
<excludeFolder url="file://$MODULE_DIR$/bootable" />
<excludeFolder url="file://$MODULE_DIR$/cts" />
<excludeFolder url="file://$MODULE_DIR$/dalvik" />
<excludeFolder url="file://$MODULE_DIR$/docs" />
<excludeFolder url="file://$MODULE_DIR$/kernel" />
<excludeFolder url="file://$MODULE_DIR$/out" />
<excludeFolder url="file://$MODULE_DIR$/pdk" />
<excludeFolder url="file://$MODULE_DIR$/platform_testing" />
<excludeFolder url="file://$MODULE_DIR$/prebuilts" />
<excludeFolder url="file://$MODULE_DIR$/system" />
<excludeFolder url="file://$MODULE_DIR$/test" />
<excludeFolder url="file://$MODULE_DIR$/toolchain" />
<excludeFolder url="file://$MODULE_DIR$/tools" />
<excludeFolder url="file://$MODULE_DIR$/BUILD" />

打开AS,通过Open an existing Android Studio project选项选择android.ipr 即可导入源码,根据不同电脑的配置,导入时间有长有短,这里耗费了20分钟左右的时间:

在这里插入图片描述

如果你看到了这里,觉得文章写得不错就给个赞呗?
更多Android进阶指南 可以扫码 解锁更多Android进阶资料


在这里插入图片描述
敲代码不易,关注一下吧。ღ( ´・ᴗ・` )

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值