AOSP Android Studio 导入Android源码 (一)

本文详细介绍了在Ubuntu上编译Android源码,并将编译好的源码复制到Windows上,通过AndroidStudio进行导入的过程。包括下载repo工具、初始化和同步源码仓库、确认Linux系统已安装Java和生成必要文件、导入源码并过滤不需要的模块。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

    前段时间又重新导入了系统源码,于是有了这篇笔记。作者在ubuntu上编译好了源码后直接复制到windows上,然后Android Studio打开,大概步骤如下。

一、下载repo

repo是一款工具,可以使我们在Android环境中更轻松使用GIT。具体不作介绍

  1. 安装GIT

    sudo apt-get install git

  2. 创建bin,并加入path:

    mkdir ~/bin

    PATH=~/bin:$PATH

  3. 下载repo ,这里选择清华的镜像

    curl https://mirrors.tuna.tsinghua.edu.cn/git/git-repo > ~/bin/repo

    如果执行时出现有关curl的错误,请检查curl是否安装

    sudo apt-get install curl

  4. 权限设置

    chmod a+x ~/bin/repo

  5. 验证repo是否安装成功

    直接输入repo ,出现 use ''repo init'' to install it here 等说明成功

二、下载源码

  1. 建立AOSP工作目录

    mkdir AOSP

    cd AOSP

  2. 初始化仓库

    repo init -u https://aosp.tuna.tsinghua.edu.cn/platform/manifest -b android-8.0.0_r1

    如果出现error:GitError:manifests var: .... 错误,请配置好GIT,例如以下:

    git config --global user.email "you@example.com"

    git config --global user.name "your name"

    如果出现

    fatal:cannot get https://gerrit.googlesource.com/git-repo/clone.bundle

    fatal:error [Errno 101] Network is unreachable

    那么需要复制以下语句到 ~/.bashrc (隐藏文件,直接vim打开)文件里,然后重启终端模拟器,这是因为repo在运行过程中尝试访问官方Git源更新自己。

    export REPO_URL='https://mirrors.tuna.tsinghua.edu.cn/git/git-repo/'

  3. 同步源码

    repo sync

  4. 等到下载完毕,大概28G

三、确认linux系统或者linux虚拟机有没有安装JAVA和生成必要文件

  1. 输入java ,报错,请安装java 版本1.8.x

    如果多个版本使用 sudo update-alternatives --config java 选择java8 ,

    因为之前下载的源码是8.0.0.1版,编译是需要用到1.8.x,

    这里有不同源码版本与java版本映射关系,自行搜索。

    注意编译使用的是Open JDK 不是Oacle JDK

  2. idegen.jar

    进入到源码根目录,运行以下命令source build/envsetup.sh

    mmm development/tools/idegen/ 执行第二行代码可能会遇到错,一般是由于make命令导致的吧,检查一下

    第二行代码主要是在out/host/linux-x86/framework目录下生成idegen.jar文件

  3. android.iml 和 android.ipr

    在源码根目录下执行以下命令

    development/tools/idegen/idegen.sh

    然后就会在根目录生成android.iml 和 android.ipr文件了

四、导入源码

这两个文件是Android Studio的工程配置文件,放到源码根目录,这时候就可以直接导入源码了,但是我们并不是源码内所有文件都需要导入,所以除了frameworks模块和packages模块外,其他模块都给过滤掉,打开android.iml文件,搜索excludeFolder,在后面添加以下代码,然后等待或者invalidate and restart

<excludeFolder url="file://$MODULE_DIR$/.repo" /> ​ <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$/external/bluetooth" /> ​ 
<excludeFolder url="file://$MODULE_DIR$/external/chromium" /> ​ 
<excludeFolder url="file://$MODULE_DIR$/external/emma" /> ​ 
<excludeFolder url="file://$MODULE_DIR$/external/icu4c" /> ​ 
<excludeFolder url="file://$MODULE_DIR$/external/jdiff" /> ​ 
<excludeFolder url="file://$MODULE_DIR$/external/webkit" /> ​ 
<excludeFolder url="file://$MODULE_DIR$/frameworks/base/docs" /> ​ 
<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$/out/eclipse" /> ​ 
<excludeFolder url="file://$MODULE_DIR$/out/host" /> ​ 
<excludeFolder url="file://$MODULE_DIR$/out/target/common/docs" /> ​
<excludeFolder url="file://$MODULE_DIR$/out/target/common/obj/JAVA_LIBRARIES/android_stubs_current_intermediates" /> ​ 
<excludeFolder url="file://$MODULE_DIR$/out/target/product" /> ​ 
<excludeFolder url="file://$MODULE_DIR$/pdk" /> ​ 
<excludeFolder url="file://$MODULE_DIR$/platform_testing" /> ​ 
<excludeFolder url="file://$MODULE_DIR$/prebuilt" /> ​ 
<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" />
### 使用 AIDEGen 工具在 Android Studio导入 AOSP 源码 #### 准备工作 为了能够顺利使用 AIDEGen 工具,首先需要确保已完成 AOSP 源码的编译,并能正常运行 Android 模拟器作为验证标准[^1]。 #### 执行初始化脚本 进入 AOSP 源码根目录,在终端中依次执行以下命令以设置构建环境: ```bash source build/envsetup.sh lunch aosp_x86_64-eng ``` 上述 `aosp_x86_64-eng` 是个示例配置名称,可以根据实际需求替换为目标设备的具体配置。如果不确定具体目标,可以直接按回车键接受默认选项。 #### 调用 AIDEGen 命令 旦构建环境准备就绪,可以调用 AIDEGen 来生成特定模块的 IDE 支持文件。以下是针对 Settings 模块的操作实例: ```bash aidegen Settings -i s ``` 此命令会自动生成必要的项目文件(如 `.iml`, `.ipr` 文件),并将它们与 Android Studio 的工程结构相匹配。参数 `-i s` 表明希望直接启动 Android Studio 并加载所选模块。 #### 自动化流程支持 当以上命令完成后,AIDEGen 将自动触发 Android Studio 启动过程,从而无需手动创建新项目或调整路径设置。此时开发者可以在集成环境中无缝访问和修改选定的框架组件及其依赖项[^2]。 #### 验证开发环境有效性 通过简单更改某个 UI 组件(比如 SystemUI)中的字符串资源或者布局属性后重新部署应用至模拟器上观察效果变化,以此确认整个链路功能完好无损。 ```python # 示例 Python 代码仅用于展示逻辑思路而非实际操作部分 def verify_environment(): change_resource_value() redeploy_to_emulator() observe_changes_in_ui() verify_environment() ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值