AOSP Android Studio 导入Android源码 (一)

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/Tenderness4/article/details/83155526

    前段时间又重新导入了系统源码,于是有了这篇笔记。作者在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 "[email protected]"

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

猜你喜欢

转载自blog.csdn.net/Tenderness4/article/details/83155526