Android Studio导入aosp源码

2023-09-13 17:47:09

1、在 Ubuntu 系统下,进入源码根目录,运行如下命令:

source build/envsetup.sh  #  初始化环境变量。

lunch sdk_phone_x86_64

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

忽略此命令:mmm development/tools/idegen/  # 此命令可以不执行(同make idegen命令)如果之前已经对整个系统进行过编译,此处使用mmm命令,用于生成idegen.jar

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

如果提示权限问题(Permission denied),可以忽略, 不影响ipr和iml文件生成

=====实际操作可行

source build/envsetup.sh

lunch aosp_x86-eng # 或者直接输入lunch,然后选择对应的target

make idegen

development/tools/idegen/idegen.s

跳转,查看源码问题

https://blog.csdn.net/weixin_53620063/article/details/123634332

其他方式======加载源代码到 AndroidStudio

执行以下四条命令:

“. build/envsetup.sh” (source可以用 .代替,即". build/envsetup.sh")

“lunch”,并选择要编译的项目

“make idegen -j4” (这里的 -j4表示用 4线程来编译,可以不加)

“development/tools/idegen/idegen.sh” (报错find: ‘out/target/product/generic_x86_64/root/d’: Permission denied没有关系不影响ipr和iml文件生成)

会在根目录下生成 android.iml 和 android.ipr 这两个文件,这两个文件是 Android Studio 的工程配置文件,这时候其实已经可以直接导入 Android Studio,但会导入所有的源码模块,会很慢,可以进行过滤,除了 frameworks 模块和 packages 模块,其他都给过滤掉,不导入 Android Studio,打开 android.iml 文件,搜下excludeFolder,在后面加入如下代码:

```

<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" />

```

3、导入 Android Studio

打开 Android Studio,选择 Open an existing Android Studio project,找到源码目录,点击 Android.ipr,Open,大约等 6 分钟,导入完毕,Enjoy coding。

4、问题

发现 Android Studio 不停 scanning files to index,我的强迫症又犯了,解决:

1 invalidate and restart 不起作用;

2 右击项目 –> Open module setting –> Modules –> 找到 gen 文件夹 –> 右键选择 Resources,终于告别烦人的 scanning files to index。

5、拓展(如果系统中存在多个jdk版本,可以指定)

sudo update-alternatives --config java

输出:

有 2 个候选项可用于替换 java (提供 /usr/bin/java)。

选择 路径 优先级 状态

------------------------------------------------------------

* 0 /usr/lib/jvm/java-11-openjdk-amd64/bin/java 1101 自动模式

1 /usr/lib/jvm/java-11-openjdk-amd64/bin/java 1101 手动模式

2 /usr/lib/jvm/java-8-openjdk-amd64/jre/bin/java 1081 手动模式

要维持当前值[*]请按<回车键>,或者键入选择的编号:2

更多推荐

【Redis7】--4.事务、管道、发布和订阅

文章目录事务1.Redis事务2.Redis事务特性3.Redis事务命令3.1MULTI3.2EXEC3.3DISCARD3.4WATCH3.5UNWATCH4.不保证原子性4.1"全体连坐"4.2"冤头债主"5.事务执行流程管道1.pipeline的使用2.pipeline小总结发布和订阅1.常用命令1.1SUBS

LVGL移植win端模拟显示流畅解决方案-使用 SquareLine 生成前端 UI 文件

lvgl_port_win_vscode在win平台对lvgl方便的进行模拟显示,程序文件结构清晰,lvglwithSDL2,cmake构建,VsCode一键运行,使用SquareLine生成前端UI文件,win上直接跑。相比官方的lvgl移植到win端的几种方法SimulatoronPC—LVGLdocumentat

【STM32】WWDG—窗口看门狗

在一个设定好的区间进行喂狗与独立看门狗不同的是,独立看门狗只需要在计时到0之前喂狗。而窗口看门狗需要在设定好的区间内进行喂狗,否则进行reset。下限递减计数器不断的往下递减计数,当减到一个固定值0X40时还不喂狗的话,产生复位,这个值叫窗口的下限,是固定的值,不能改变。上限是窗口看门狗的计数器的值在减到某一个数之前喂

人工智能安全-6-SQL注入检测

0提纲概述SQL注入方法SQL注入的检测方法SQL语句的特征提取天池AI上的实践1概述SQLIA:SQLinjectionattackSQL注入攻击是一个简单且被广泛理解的技术,它把SQL查询片段插入到GET或POST参数里提交到网络应用。由于SQL数据库在Web应用中的普遍性,使得SQL攻击在很多网站上都可以进行。并

AIGC(生成式AI)试用 6 -- 从简单到复杂

从简单到复杂,这样的一个用例该如何设计?之前浅尝试用,每次尝试也都是由浅至深、由简单到复杂。一点点的“喂”给生成式AI主题,以测试和验证生成式AI的反馈。AIGC(生成式AI)试用1--基本文本_Rolei_zl的博客-CSDN博客AIGC(生成式AI)试用2--胡言乱语_Rolei_zl的博客-CSDN博客AIGC(

测试域: 流量回放-工具篇jvm-sandbox,jvm-sandbox-repeater,gs-rest-service

JVM-SandboxJvm-Sandbox-Repeater架构_小小平不平凡的博客-CSDN博客https://www.cnblogs.com/hong-fithing/p/16222644.html流量回放框架jvm-sandbox-repeater的实践_做人,最重要的就是开心嘛的博客-CSDN博客[jvm-s

HTTP代理反爬虫技术详解

HTTP代理是一种网络技术,它可以将客户端的请求转发到目标服务器,并将服务器的响应返回给客户端。在网络安全领域中,HTTP代理经常被用来反爬虫,以保护网站的正常运营。HTTP代理反爬虫的原理是通过限制访问者的IP地址、访问频率、User-Agent和验证码验证等方式,来限制恶意爬虫的访问。下面我们来具体分析一下这几种方

拓世AIGC | 大语言模型螺旋上升式进化,人文、技术与未来

本月初,上海世博园举办外滩大会见解论坛中,众多学者和企业家共同探讨了大语言模型时代的人机关系、硅基生命和碳基生命未来之争等议题。面对全新的局面,论坛释放出积极信号和值得持续关注的论点。从黄浦江的波涛翻涌,我们捕捉到了人工智能未来科技的波澜壮阔。(汇集近20位两院院士、诺贝尔奖和图灵奖得主,超500位科技企业家和专家学者

Websocket集群解决方案以及实战(附图文源码)

最近在项目中在做一个消息推送的功能,比如客户下单之后通知给给对应的客户发送系统通知,这种消息推送需要使用到全双工的websocket推送消息。所谓的全双工表示客户端和服务端都能向对方发送消息。不使用同样是全双工的http是因为http只能由客户端主动发起请求,服务接收后返回消息。websocket建立起连接之后,客户端

WebMvcConfigurerAdapter、WebMvcConfigurer、WebMvcConfigurationSupport

WebMvcConfigurerAdapter、WebMvcConfigurer、WebMvcConfigurationSupport的关系?WebMvcConfigurerAdapter、WebMvcConfigurer和WebMvcConfigurationSupport是SpringMVC框架中用于配置Web应用

android系统目录结构

文章目录android系统目录结构问答偏好设置保存在哪里在应用设置中点击清除数据,清除的是什么在应用设置中点击清除缓存,清除的是什么参考android系统目录结构/-system(一般只有root权限才能访问)-data-app(存放应用程序的APK文件)-data(内部存储)-<安装的应用包名>-app_textur

热文推荐