使用AndroidStudio阅读源码

在上一节中我们成功编译了aosp源码并运行了模拟器。

ubuntu编译android12源码

做安卓的肯定都离不开AndroidStudio,那么我们能否将asop的源码导入到AndroidStudio中进行学习和开发呢?

答案是肯定的。

AIDEGen是一款Google提供的工具,用于自动化AOSP项目中的Java和C/C++IDE配置,帮助开发者快速设置项目,减少手动配置,提升开发效率。通过解析模块依赖并生成相应的IDE配置文件。

使用AndroidStudio查看源码

  1. 先编译sdk,执行以下代码
bash 复制代码
source build/envsetup.sh
lunch sdk-eng
make sdk
lunch aosp_x86_64-eng

这个编译过程可能需要等待一下...

  1. 修改AndroidStudio的配置

我们先来打开我们的AndroidStudio配置一下大内存,这个应该做过android开发的都会吧。。。

首先加大idea VM内存:

打开IDEA 菜单栏 Help > Edit Custom VM Options,添加修改以下内容,这个要取决于你自己的机器:

diff 复制代码
-Xms2g
-Xmx10g

然后是修改文件大小限制,打开区分大小写选项

打开IDEA 菜单栏 Help -> Edit custom properties, 添加

ini 复制代码
idea.max.intellisense.filesize=100000
idea.case.sensitive.fs=true

修改完毕后重启AndroidStudio使配置生效。

  1. 使用aidegen配置打开项目

运行以下脚本自动通过aidegen配置我们的项目:

bash 复制代码
mmma development/tools/idegen
sudo development/tools/idegen/idegen.sh

运行上面的脚本可能会报错,这是因为3.12版本的Python缺少distutils导致的。。。

我们可以通过将Python版本回退或者多版本共存的方式来解决这个问题。

安装以下python3.10

sql 复制代码
sudo add-apt-repository ppa:deadsnakes/ppa
sudo apt update
sudo apt install python3.10 python3.10-venv python3.10-distutils

配置下多本版的问题:

bash 复制代码
sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.12 1
sudo update-alternatives --install /usr/bin/python3 python3 /usr/bin/python3.10 2

选择以下优先使用的版本:

sql 复制代码
sudo update-alternatives --config python3

在这里我们按照提示选择优先使用python3.10即可。

然后使用AndroidStudio打开我们生成的 android.ipr 文件,由于工程很大,需要较长的时间建立索引,请耐心等待。

  1. 配置JDK

使用AndroidStudio打开android.ipr 文件后,需要配置一下我们的JDK和SDK,使得指向我们的aosp源码。

首先打开我们的项目配置,添加本地SDK:

jdk的目录在: aosp/prebuilts/jdk/jdk11/darwin-x86

然后配置SDK:

sdk的目录在: aosp/out/host/linux-x86/sdk/sdk/android-sdk_eng.fly_linux-x86

至此,我们就可以使用AndroidStudio愉快地带跳转阅读aosp的源码拉...

aidegen的功能可不止这么一种用法,它还有很多用法,比如它可以配置SDK中的C/C++代码然后使用CLion打开等等。。。

例如运行下面的代码会自动使用AndroidStudio打开我们的Settings源码。

css 复制代码
aidegen Setting -i s 

当然如果你觉得aosp的代码太庞大了,我们应该用远程开发,按么你也可以使用vscode等工具通过ssh的方式远程修改和阅读aosp的源码...

推荐

为了更加方便Framework的开发者,谷歌推出了framework专用的AndroidStudio,建议大家都使用Android Studio for Platform来进行aosp的调试与开发...

developer.android.com/studio/plat...

安卓Framework开发

音视频入门基础

安卓camera应用开发

NDK学习入门

C++进阶

ffmpeg系列

Opengl入门进阶

关注我,一起进步,人生不止coding!!!

相关推荐
uwvwko10 小时前
BUUCTF——web刷题第一页题解
android·前端·数据库·php·web·ctf
fzxwl10 小时前
隆重推荐(Android 和 iOS)UI 自动化工具—Maestro
android·ui·ios
LittleLoveBoy13 小时前
踩坑:uiautomatorviewer.bat 打不开
android
居然是阿宋13 小时前
Android核心系统服务:AMS、WMS、PMS 与 system_server 进程解析
android
CGG9216 小时前
【单例模式】
android·java·单例模式
kp0000016 小时前
PHP弱类型安全漏洞解析与防范指南
android·开发语言·安全·web安全·php·漏洞
编程乐学(Arfan开发工程师)21 小时前
06、基础入门-SpringBoot-依赖管理特性
android·spring boot·后端
androidwork1 天前
使用 Kotlin 和 Jetpack Compose 开发 Wear OS 应用的完整指南
android·kotlin
繁依Fanyi1 天前
Animaster:一次由 CodeBuddy 主导的 CSS 动画编辑器诞生记
android·前端·css·编辑器·codebuddy首席试玩官
奔跑吧 android1 天前
【android bluetooth 框架分析 02】【Module详解 6】【StorageModule 模块介绍】
android·bluetooth·bt·aosp13·storagemodule