1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > WSL Ubuntu 20.04下Android源码编译与导入Android Studio

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

时间:2020-03-06 20:28:52

相关推荐

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文件

注意

请务必将源码下载到 wsl 的文件系统中编译,不然会报操作不支持的错误:

Failed to listen for path logs: listen unix out/.path_interposer_log: bind: operation not supported

请务必使用 wsl2,不然会报更加让人摸不着头脑的错:

Failed to listen for path logs: listen unix out/.path_interposer_log: bind: invalid argument

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”,将其添加进来。

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。