Android Studio导入aosp源码

2023-09-13 17:38:17

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

更多推荐

2560. 打家劫舍 IV

沿街有一排连续的房屋。每间房屋内都藏有一定的现金。现在有一位小偷计划从这些房屋中窃取现金。由于相邻的房屋装有相互连通的防盗系统,所以小偷不会窃取相邻的房屋。小偷的窃取能力定义为他在窃取过程中能从单间房屋中窃取的最大金额。给你一个整数数组nums表示每间房屋存放的现金金额。形式上,从左起第i间房屋中放有nums[i]美元

Docker文档阅读笔记-How to Commit Changes to a Docker Image with Examples

介绍在工作中使用Docker镜像和容器,用得最多的就是如何提交修改过的Docker镜像。当提交修改后,就会在原有的镜像上创建一个新的镜像。本博文说明如何提交一个新的Docker镜像。前提①有一个可以直接访问服务器的运行终端;②帐号需要root权限;③已经安装并且配置好了docker手把手教提交修改后的Docker镜像s

【Godot】解决游戏中的孤立/孤儿节点及分析器性能问题的分析处理

Godot4.1因为我在游戏中发现,越运行游戏变得越来越卡,当你使用Node节点中的print_orphan_nodes()方法打印信息的时候,会出现如下的孤儿节点信息孤儿节点信息是以节点实例ID-StrayNode:节点名称(Type:节点类型)作为格式输出,可以多运行几次查看是否节点实例ID是否是相同的,通常不是随

LeNet-5

目录一、知识点二、代码三、查看卷积层的featuremap1.查看每层信息​2.show_featureMap.py背景:LeNet-5是一个经典的CNN,由YannLeCun在1998年提出,旨在解决手写数字识别问题。一、知识点1.iter()+next()iter():返回迭代器next():使用next()来获取

【Python】json 格式转换 ② ( Json 格式简介 | Json 概念 | Json 功能 | 对象 / 数组 格式 | 嵌套格式 | Json 特点 )

文章目录一、Json格式简介1、Json概念2、Json功能3、Json格式-对象/数组格式4、Json格式-对象/数组嵌套格式5、Json特点一、Json格式简介1、Json概念Json的英文全称为"JavaScriptObjectNotation",JavaScript对象符号;Json是轻量级数据交换格式;Jso

【Python】json 格式转换 ① ( json 模块使用 | 列表转 json | json 转列表 | 字典转 json | json 转字典 )

文章目录一、json格式转换1、json模块使用2、代码示例分析-列表转json3、代码示例分析-字典转jsonjson格式字符串与Python中的字典dict和列表list变量可以无缝转换;调用json.dumps函数可以将Python列表/字典转为json;调用json.loads函数,可以将json转为pytho

SQL 性能优化总结

文章目录一、性能优化策略二、索引创建规则三、查询优化总结一、性能优化策略1.SQL语句中IN包含的值不应过多MySQL将IN中的常量全部存储在一个排好序的数组里面,但是如果数值较多,产生的消耗也是比较大的。所以对于连续的数值,能用between就不要用in。2.SELECT语句务必指明字段名称SELECT*增加很多不必

长胜证券:开盘竞价买卖技巧?

开盘竞价是股票生意进程中的一个重要环节,对于出资者来说,怎么在这个短暂的时间内下单买入或卖出股票,成为了检测出资者生意技巧的重要挑战。一、认识开盘竞价开盘竞价是指在股票商场开盘前,一切买进卖出单据的价格在必定的时间内进行比较,最终构成当日股票开盘价的进程。开盘竞价辅导股票在当天的生意价格,也是股票价格走势的一个重要起点

Docker 容器数据卷

是什么卷就是目录或文件,存在于一个或多个容器中,由docker挂载到容器,但不属于联合文件系统,因此能够绕过UnionFileSystem提供一些用于持续存储或共享数据的特性:卷的设计目的就是数据的持久化,完全独立于容器的生存周期,因此Docker不会在容器删除时删除其挂载的数据卷。一句话:有点类似我们Redis里面的

外星人入侵游戏-(创新版)

🌈writeinfront🌈🧸大家好,我是Aileen🧸.希望你看完之后,能对你有所帮助,不足请指正!共同学习交流.🆔本文由Aileen_0v0🧸原创CSDN首发🐒如需转载还请通知⚠️📝个人主页:Aileen_0v0🧸—CSDN博客🎁欢迎各位→点赞👍+收藏⭐️+留言📝​📣系列专栏:Aileen

chatgpt综述和报告

ChatGPT究竟强在哪?复旦大学邱锡鹏教授《大型语言模型的能力分析与应用》_哔哩哔哩_bilibili2022年底,美国OpenA1公司发布了ChatGPT,一个可以与人类对话交互的千亿规模参数的大型语言模型。它可以根据用户输入的指令完成各种语言相关的任务,例如写文章、写代码、回答问题、日常聊天等等,能够极大地提高人

热文推荐