Ubuntu14.04下载、编译Android 6.0源码,并导入Android Studio

1.下载源码

某墙的原因,这里采用的是清华大学的镜像:https://mirrors.tuna.tsinghua.edu.cn/help/AOSP/

1.1 新建用于存放下载脚本文件的目录,第一行命令创建一个名为Source的文件夹,存储所有下载的资源(强迫症,喜欢整理)

mkdir /home/user/Source
cd /home/user/Source
mkdir ~/bin
PATH=~/bin:$PATH

1.2 下载Repo

git clone https://aosp.tuna.tsinghua.edu.cn/android/git-repo.git/
cp git-repo/repo ~/bin/

1.3 修改Repo文件

gedit ~/bin/repo

REPO_URL = ‘https://gerrit.googlesource.com/git-repo
改为
REPO_URL = ‘https://gerrit-google.tuna.tsinghua.edu.cn/git-repo

1.4 创建用于存放Android源代码的目录

mkdir android_source
cd android_source

1.5 同步源代码,这里下载的是6.0的版本,-j4是开启4线程,设备好的同学可以设置为8线程,报错的话继续第二行命令

repo init -u https://aosp.tuna.tsinghua.edu.cn/platform/manifest -b android-6.0.1_r79
repo sync -j4

p.s:由于首次同步需要下载 24GB 数据,过程中任何网络故障都可能造成同步失败,建议直接使用初始化包进行初始化。

下载初始包

#下载重试不限次数,防止网络异常中断
wget -c -t 0 https://mirrors.tuna.tsinghua.edu.cn/aosp-monthly/aosp-latest.tar 
tar -vxzf aosp-latest.tar
cd aosp 
#这时ls的话什么也看不到,因为只有一个隐藏的.repo目录
repo sync

选择版本同步

repo init -u https://aosp.tuna.tsinghua.edu.cn/platform/manifest -b android-6.0.1_r79
repo sync -j4

下载完成,见下图,可能会有部分偏差
这里写图片描述

源代码目录含义:

目录名描述
abi应用程序二进制接口
bionicC/C++运行时库,在NDK程序中很大一部分调用就是这里的程序
bootable用于Android装载和启动程序,其中就包括bootloader和recovery。bootloader是Android中唯一在LInux内核之前执行的程序。通过这段程序可以初始化硬件,建立内存控件的映射图等,总之,bootloader就是为LInux内核准备合适的运行环境。
build用于编译Android源代码以及建议system.img,ramdisk.img等文件的工具
cts用于兼容性测试的工具
dalvikDalvik虚拟机的源代码
development高层的开发和调试工具
device与设备相关的代码
docs包含与Android源代码项目的文档和工具,如Dalvik虚拟机格式文档等
external扩展工具的源代码
framworksAndroid框架层源代码。也就是Android SDK的源代码
hardware硬件层接口和库
libcoreJava核心库
ndkNDK相关的源代码
packages与Android系统一同发布的应用程序的源代码
prebuiltsAndroid在各种平台下编译之前要使用的工具
sdk在开发环境中使用的工具,如ddms,draw9path,sdkmanager等
systemAndroid的基本系统

注意:查看所有分支

cd .repo/manifests
git branch -a

这里写图片描述
如果想切换到其它分支可以重新执行

repo init -b android-7.1.2_r11
repo sync

2.编译源码

2.1 安装编译源码所需要的软件。在控制台中通过cd命令退回到Ubuntu用户的根目录下,然后依次执行以下命令:

sudo apt-get update

sudo apt-get install openjdk-7-jdk

sudo update-alternatives --config java

sudo update-alternatives --config javac

sudo gedit /etc/profile

查看环境变量是否为

export JAVA_HOME=/usr/lib/jvm/java-7-openjdk-amd64
export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH 
export CLASSPATH=$CLASSPATH:.:$JAVA_HOME/lib:$JAVA_HOME/jre/lib

以上命令每一条都必须分开单独执行,目的是为了获取1.7版本的jdk并设置环境变量。当我们安装完Ubuntu之后可能会自带一个jdk,但是如果用自带的jdk编译Android源码很可能会提示jdk版本不符合要求的错误,因此我们需要重新下载1.7版本的jdk,我用openjdk-7-jdk编译未出现任何问题。

然后验证jdk版本

chenchen@chenchen:~$ java -version
java version "1.7.0_131"
OpenJDK Runtime Environment (IcedTea 2.6.9) (7u131-2.6.9-0ubuntu0.14.04.2)
OpenJDK 64-Bit Server VM (build 24.131-b00, mixed mode)
chenchen@chenchen:~$ javac -version
javac 1.7.0_131

接下来继续执行以下命令,同样每一行都是分开单独执行的:

sudo apt-get install git gnupg flex bison gperf build-essential

sudo apt-get install zip curl libc6-dev libncurses5-dev:i386 x11proto-core-dev

sudo apt-get install libx11-dev:i386 libreadline6-dev:i386 libgl1-mesa-glx:i386

sudo apt-get install libgl1-mesa-dev g++-multilib mingw32 tofrodos

sudo apt-get install python-markdown libxml2-utils xsltproc zlib1g-dev:i386

sudo ln -s /usr/lib/i386-linux-gnu/mesa/libGL.so.1 /usr/lib/i386-linux-gnu/libGL.so

如果报错,看提示安装相应软件。
以上命令主要是安装编译源码时需要用到的各种软件,如果没有安装这些软件,编译的过程中会提示缺少必要的软件而无法继续编译,因此,在正式编译源码之前,一定要先安装这些软件。

2.2 导入编译Android源码所需的环境变量和其它参数
在控制台中通过cd命令进入到/home/chenchen/Source/android_source/目录下,然后执行命令:
source build/envsetup.sh

chenchen@chenchen:~/Source/android_source$ source build/envsetup.sh 
including device/asus/deb/vendorsetup.sh
including device/asus/flo/vendorsetup.sh
including device/asus/fugu/vendorsetup.sh
including device/generic/mini-emulator-arm64/vendorsetup.sh
including device/generic/mini-emulator-armv7-a-neon/vendorsetup.sh
including device/generic/mini-emulator-mips/vendorsetup.sh
including device/generic/mini-emulator-x86_64/vendorsetup.sh
including device/generic/mini-emulator-x86/vendorsetup.sh
including device/htc/flounder/vendorsetup.sh
including device/huawei/angler/vendorsetup.sh
including device/lge/bullhead/vendorsetup.sh
including device/lge/hammerhead/vendorsetup.sh
including device/moto/shamu/vendorsetup.sh
including sdk/bash_completion/adb.bash

2.3 在控制台中执行命令:lunch,运行命令之后会提示我们选择编译目标。这里我选择的的默认目标,即aosp_arm_eng。

2.4 在控制台中执行命令:make -j8,开始编译。

整个源码编译完成之后,如果提示如下信息
这里写图片描述
此时,你可以直接执行命令:emulator,执行之后将会出现android模拟器的界面


3.导入Studio

3.1 修改IDEA_HOME/bin/studio.vmoptions或studio64.exe.vmoptions中-Xms和-Xmx的值。文档中使用的是748m, 可自行修改
3.2 进入Android 源码根目录
执行mmm development/tools/idegen/
这行命令的意思是编译idegen这个项目,生成idegen.jar文件.生成成功后,会显示这个jar包的位置

chenchen@chenchen:~/Source/android_source$ mmm development/tools/idegen/
============================================
PLATFORM_VERSION_CODENAME=REL
PLATFORM_VERSION=6.0.1
TARGET_PRODUCT=aosp_arm
TARGET_BUILD_VARIANT=eng
TARGET_BUILD_TYPE=release
TARGET_BUILD_APPS=
TARGET_ARCH=arm
TARGET_ARCH_VARIANT=armv7-a
TARGET_CPU_VARIANT=generic
TARGET_2ND_ARCH=
TARGET_2ND_ARCH_VARIANT=
TARGET_2ND_CPU_VARIANT=
HOST_ARCH=x86_64
HOST_OS=linux
HOST_OS_EXTRA=Linux-4.4.0-78-generic-x86_64-with-Ubuntu-14.04-trusty
HOST_BUILD_TYPE=release
BUILD_ID=MOB31T
OUT_DIR=out
============================================
make:进入目录'/home/chenchen/Source/android_source'
host Java: idegen (out/host/common/obj/JAVA_LIBRARIES/idegen_intermediates/classes)
Install: out/host/linux-x86/framework/idegen.jar
make:离开目录“/home/chenchen/Source/android_source”

#### make completed successfully (3 seconds) ####

3.3 执行sh ./development/tools/idegen/idegen.sh

chenchen@chenchen:~/Source/android_source$ development/tools/idegen/idegen.sh 
Read excludes: 3ms
Traversed tree: 15118ms

执行完后,会在源码的根目录下生成android.ipr和android.iml文件。使用Android studio打开android.ipr文件,就可以导入系统源码了。

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值