使用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!!!

相关推荐
O***P57142 分钟前
【MySQL】MySQL内置函数--日期函数字符串函数数学函数其他相关函数
android·mysql·adb
z***43841 小时前
MySQL-mysql zip安装包配置教程
android·mysql·adb
无心水1 小时前
【Python实战进阶】7、Python条件与循环实战详解:从基础语法到高级技巧
android·java·python·python列表推导式·python条件语句·python循环语句·python实战案例
g***78913 小时前
鸿蒙NEXT(五):鸿蒙版React Native架构浅析
android·前端·后端
Bervin121389 小时前
Flutter Android环境的搭建
android·flutter
e***877015 小时前
windows配置永久路由
android·前端·后端
fouryears_2341717 小时前
现代 Android 后台应用读取剪贴板最佳实践
android·前端·flutter·dart
YF021118 小时前
Frida for MacBook/Android 安装配置
android·前端
雨白18 小时前
Android实战:构建高可维护的日志系统
android
茄子凉心19 小时前
android 开机启动App
android·java·开发语言