WSL Ubuntu 20.04下Android源码编译与导入Android Studio

源码下载见前文:WSL Ubuntu 20.04下Android源码下载

idegen 模块编译

development/tools/idegen/README下可以看到关于 idegen 工具的相关说明。
在编译之前请先apt-get一下make工具。

初始化编译环境

cd进源码的根目录,随后初始化环境变量。

source build/envsetup.sh

生成 idegen.jar

参考教程:android studio 调试 framework 层代码
如果之前没有进行过编译建议使用make命令,android 是基于 Android.mk(类似 makefile) 进行构建编译的,这个命令会遍历所有的模块找到 idegen 的 Android.mk,,然后计算所有的依赖的库,如果依赖库没有编译会先编译所有的依赖库,所以 make 编译时较慢。

make idegen -j6 # 六核编译 idegen 模块

如果之前已经对整个系统进行过编译,此处使用mmm命令,用于生成idegen.jar

mmm development/tools/idegen/

m:编译所有的模块
mm:编译当前目录下的模块,当前目录下要有Android.mk文件
mmm:编译指定路径下的模块,指定路径下要有Android.mk文件

注意

  1. 请务必将源码下载到 wsl 的文件系统中编译,不然会报操作不支持的错误:
Failed to listen for path logs: listen unix out/.path_interposer_log: bind: operation not supported
  1. 请务必使用 wsl2,不然会报更加让人摸不着头脑的错:
Failed to listen for path logs: listen unix out/.path_interposer_log: bind: invalid argument
  1. Mac 系统请务必开启区分大小写,否则会报区分大小写的错(Mac 系统也不用 wsl 了吧(挠头)):
************************************************************
You are building on a case-insensitive filesystem.
Please move your source tree to a case-sensitive filesystem.
************************************************************
Case-insensitive filesystems not supported

最后成功编译输出:
在这里插入图片描述

生成源码根目录生成文件 android.ipr (工程相关设置)和 android.iml (模块相关配置)

source development/tools/idegen/idegen.sh

在根目录下生成了android.iprandroid.imlandroid.iws三个文件。

导入 AS

修改 android.iml

直接导入的话 indexing 时长感人,电脑性能不行的话还会把 Android Studio 卡爆,需要在android.iml文件中把不需要的目录给排除掉。
为了后续方便修改文件,先给文件提权:

chmod 777 -R <安卓源码根目录路径>

在 VS code 中远程连接 wsl(具体方法见本文文首链接的上篇末尾),搜索excludeFolder,该标签的url属性指示了不需要引入的目录,可以根据自己的需求进行更改,例如我就把这段替换成

<excludeFolder url="file://$MODULE_DIR$/./external/emma"/>
<excludeFolder url="file://$MODULE_DIR$/./external/jdiff"/>
<excludeFolder url="file://$MODULE_DIR$/frameworks/base/docs"/>
<excludeFolder url="file://$MODULE_DIR$/art" />
<excludeFolder url="file://$MODULE_DIR$/bionic" />
<excludeFolder url="file://$MODULE_DIR$/bootable" />
<excludeFolder url="file://$MODULE_DIR$/build" />
<excludeFolder url="file://$MODULE_DIR$/cts" />
<excludeFolder url="file://$MODULE_DIR$/dalvik" />
<excludeFolder url="file://$MODULE_DIR$/developers" />
<excludeFolder url="file://$MODULE_DIR$/development" />
<excludeFolder url="file://$MODULE_DIR$/device" />
<excludeFolder url="file://$MODULE_DIR$/docs" />
<excludeFolder url="file://$MODULE_DIR$/external" />
<excludeFolder url="file://$MODULE_DIR$/hardware" />
<excludeFolder url="file://$MODULE_DIR$/kernel" />
<excludeFolder url="file://$MODULE_DIR$/libcore" />
<excludeFolder url="file://$MODULE_DIR$/libnativehelper" />
<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$/sdk" />
<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$/.repo" />

在 AS 中打开 android.ipr

在 AS 中打开android.ipr导入源码,需要一段时间。
如果提示Unable to save settings: Failed to save settings. Please restart Android Studio等权限相关的警告,请用前述方法进行提权。
切换成package视图可以根据包路径查看源码。
在这里插入图片描述
如果想要查看被排除目录下的源码,可以通过“File—Project Structure—Project Settings”,右键所需的目录,取消勾选“Excluded”,将其添加进来。
在这里插入图片描述

  • 1
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 1
    评论
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值