首页 > 编程知识 正文

安卓源代码编译过程,Android源代码的编译过程

时间:2023-05-04 09:35:27 阅读:216003 作者:4439

原文地址:点击查看

概述为了深入学习Android系统源码,我们需要下载Android官方的最新源码进行阅读学习,这篇文章我们来总结一下在Ubuntu系统中Android官方源码的下载和编译流程
通过本文可以了解:
Ubuntu系统中Android编译环境配置下载和编译Android源码下载和编译Android内核源码将Android源码导入Android Studio注:本文基于Ubuntu14.04系统中Android Q代码下载编译流程

Ubuntu系统中Android编译环境配置1.git安装sudo apt-get install gitgit config –global user.email “test@test.com”git config –global user.name “test”2.openjdk安装# 在Ubuntu14.04中需要加入下面源,才能安装openjdk-8版本sudo add-apt-repository ppa:openjdk-r/ppasudo apt-get update# 如果是Ubuntu16.04或以上版本,直接安装即可sudo apt-get install openjdk-8-jdksudo update-alternatives --config javajava -version注:Android源码的编译必须使用openJdk

3.repo安装mkdir ~/thdmPATH=~/thdm:$PATHcurl https://storage.googleapis.com/git-repo-downloads/repo > ~/thdm/repochmod a+x ~/thdm/reporepo的具体用法和介绍可查看Repo介绍

4.其他依赖库安装
# Ubuntu14.04sudo apt-get install gnupg flex bison gperf build-essential zip curl zlib1g-dev gcc-multilib g++-multilib libc6-dev-i386 lib32ncurses5-dev x11proto-core-dev libx11-dev lib32z-dev ccache libgl1-mesa-dev libxml2-utils xsltproc unzip# Ubuntu16.04sudo apt-get install libx11-dev:i386 libreadline6-dev:i386 libgl1-mesa-dev g++-multilibsudo apt-get install -y git flex bison gperf build-essential libncurses5-dev:i386sudo apt-get install tofrodos python-markdown libxml2-utils xsltproc zlib1g-dev:i386sudo apt-get install dpkg-dev libsdl1.2-dev libesd0-devsudo apt-get install git-core gnupg flex bison gperf build-essential sudo apt-get install zip curl zlib1g-dev gcc-multilib g++-multilibsudo apt-get install libc6-dev-i386sudo apt-get install lib32ncurses5-dev x11proto-core-dev libx11-devsudo apt-get install libgl1-mesa-dev libxml2-utils xsltproc unzip m4sudo apt-get install lib32z-dev ccache下载和编译Android源码1.下载Android源码由于国内访问不到Google,因此无法到Google官网下载Android源码,这里推荐到[清华大学开源镜像站](https://mirrors.tuna.tsinghua.edu.cn/help/AOSP/)进行下载,推荐使用如下方式下载

wget -c https://mirrors.tuna.tsinghua.edu.cn/aosp-monthly/aosp-latest.tar # 下载初始化包tar xf aosp-latest.tar # 解压cd AOSP # 解压得到的 AOSP 工程目录# 这时 ls 的话什么也看不到,因为只有一个隐藏的 .repo 目录repo sync # 正常同步一遍即可得到完整目录# 或 repo sync -l 仅checkout代码2.编译Android源码source build/envsetup.sh # 初始化编译环境lunch # 选择编译目标,运行lunch后出现所有目标,选择一个输入回车即可,这里使用模拟器运行选择aosp_x86_64-engmake -j4 # 开始编译,后面的参数为编译使用CPU资源,普通电脑推荐用4核进行编译,编译输出目录为out3.将编译好的系统运行到Android虚拟机中emulator -partition-size 2048 # 运行虚拟机,指定内存为2G下载和编译Android内核源码1.下载内核代码下面是官方下载地址以及git库的版本区别,国内下载还得使用清华源进行下载

git clone http://android.googlesource.com/kernel/common.git # 通用的Linux内核,后面6套都是以该源码为基础;git clone http://android.googlesource.com/kernel/exynos.git # 用于使用三星Exynos芯片的Android设备,典型代表是Nexus 10;git clone http://android.googlesource.com/kernel/goldfish.git # 用于Android模拟器的内核源码;git clone http://android.googlesource.com/kernel/msm.git # 用于使用高通MSM芯片的Android设备,典型代表是ADP1(G1)、ADP2(G2)、Nexus One和Nexus 4;git clone http://android.googlesource.com/kernel/omap.git # 用于使用德州仪器(TI)OMAP芯片Android设备,典型代表是PandaBoard和Galaxy Nexus;git clone http://android.googlesource.com/kernel/samsung.git # 用于使用三星Hummingbird芯片的Android设备,典型代表是Nexus S;git clone http://android.googlesource.com/kernel/tegra.git # 用于使用NVIDIA (Tefra)芯片Android设备,典型代表是Xoom和Nexus 7。HTC手机可以在以下地址下载指定设备的Linux内核源码:
http://www.htcdev.com/devcenter/downloads

注:内核代码下载我们也使用[清华源](http://mirrors.ustc.edu.cn/aosp/kernel/),这里需要注意此网站下载速度较慢,因此使用下面命令较快,git库可根据需求进行替换,我下载了模拟器内核

git clone https://aosp.tuna.tsinghua.edu.cn/android/kernel/goldfish.gitcd goldfishgit branch -agit checkout remotes/origin/android-goldfish-2.6.292.编译内核代码配置交叉编译工具
sudo vim /etc/profile # 打开环境变量配置文件,配置交叉编译工具export PATH=$PATH:~/thdm/AOSP/prebuilts/gcc/linux-x86/arm/arm-linux-androideabi-4.9/thdm配置makefile文件
cd goldfishvim Makefile # 打开makefile文件找到并配置如下两个参数 ARCH ?=arm CROSS_COMPILE ?=/home/user/thdm/AOSP/prebuilts/gcc/linux-x86/arm/arm-linux-androideabi-4.9/thdm/arm-linux-androidkernel-开始编译
make goldfish_defconfig # 生成配置文件make # 编译命令运行当前内核版本的模拟器
emulator -kernel ./kernel/goldfish/arch/arm/boot/zImage# 查看内核版本adb shellcd proccat version内核编译过程中如果出现Out of memory error错误,配置jdk内存重新编译即可
export JACK_SERVER_VM_ARGUMENTS="-Dfile.encoding=UTF-8 -XX:+TieredCompilation -Xmx4g"./prebuilts/sdk/tools/jack-admin kill-server./prebuilts/sdk/tools/jack-admin start-server将Android源码导入Android Studio1.修改AS的配置因为在导入源码时需要消耗大量内存,所以先修改IDEA_HOME/thdm/studio.vmoptions中-Xms和-Xmx的值。README文档中使用的是748m。
较新版本的AS中自带SDK,然后第一次用的时候新的SDK会下载Build Tool 等,大约需要2.25G空间。不想下载的话可以找到android-studio/thdm目录下的idea.properties文件,在最后添加一行disable.android.first.run=true,然后再启动AS就好了,然后进去手动配置SDK位置。
(注:每次升级后这些配置都会恢复默认。但SDK不用重新配置)
2.编译生成导入AS所需配置文件(*.ipr)为了成功将源码导入AS,我们需要先生成AS可是别的项目工程配置文件
在源码根目录依次执行如下命令
source build/ensetup.shmake idegen && development/tools/idegen/idegen.sh等待编译完成之后会出现类似下面的结果:
这时会在源码的根目录下生成android.ipr,android.iws和android.iml三个文件
生成的文件包括:
①android.iws 包含工作区的个人设置,比如打开过的文件,版本控制工具的配置,本地修改历史,运行和debug的配置等。
②android.ipr 一般保存了工程相关的设置,比如modules和modules libraries的路径,编译器配置,入口点等。
③android.iml 用来描述modules。它包括modules路径、 依赖关系,顺序设置等。一个项目可以包含多个 *.iml 文件。
之后我们在AS中打开源码根目录下新生成的android.ipr

注:第一次打开源码后会进行代码扫描,我这里用了大概4个小时左右,在此期间查看代码比较卡,待扫描完毕,就可以享受流畅的代码跳转和查看了

版权声明:该文观点仅代表作者本人。处理文章:请发送邮件至 三1五14八八95#扣扣.com 举报,一经查实,本站将立刻删除。