您的位置:首页 > 移动开发 > Android开发

Android 7.1 源码下载编译 (Ubuntu 14.0.4 环境下)

2017-12-14 11:39 731 查看
一 .安装git ,设置git 的邮箱和用户名:

sudo apt-get install git
git config –global user.email “test@test.com”
git config –global user.name “test”


二.源码下载:

1.下载安装repo

mkdir ~/bin
PATH=~/bin:$PATH
curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
chmod a+x ~/bin/repo


2.创建源码文件夹。

mkdir source
cd source


3.初始化代码库

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


根据自己的需要修改后面Android 版本号

(AOSP项目当前所有的分支列表参看:版本列表)

4.同步代码库

repo sync


三.构建编译环境

1.安装jdk

android 7.1需要的是openjdk8

sudo apt-get update
sudo apt-get install openjdk-8-jdk


如果已经安装过openjdk7,需要切换jdk版本

sudo update-alternatives --config java
sudo update-alternatives --config javac


2.其它依赖

命令一行一行的执行。

sudo apt-get install libx11-dev:i386 libreadline6-dev:i386 libgl1-mesa-dev g++-multilib
sudo apt-get install -y git flex bison gperf build-essential libncurses5-dev:i386
sudo apt-get install tofrodos python-markdown libxml2-utils xsltproc zlib1g-dev:i386
sudo apt-get install dpkg-dev libsdl1.2-dev libesd0-dev
sudo apt-get install git-core gnupg flex bison gperf build-essential
sudo apt-get install zip curl zlib1g-dev gcc-multilib g++-multilib
sudo apt-get install libc6-dev-i386
sudo apt-get install lib32ncurses5-dev x11proto-core-dev libx11-dev
sudo apt-get install libgl1-mesa-dev libxml2-utils xsltproc unzip m4
sudo apt-get install lib32z-dev ccache


四.源码编译

1.初始化编译环境

source build/envsetup.sh


2.选择编译目标

lunch aosp_arm64-eng


也可以先执行lunch命令,控制台会输出所有的编译目标,输入相应的数字即可

3.开始编译

make -j4


期间可能出现错误可自行百度解决。如果一切顺利的化,在几个小时之后,便可以编译完成.看到### make completed successfully (01:18:45(hh:mm:ss)) ###表示你编译成功了.

4.运行编译后源码镜像

emulator


等一会就会出现模拟器了。

五.模块编译

除了通过make命令编译可以整个android源码外,Google也为我们提供了相应的命令来支持单独模块的编译.

编译环境初始化(即执行source build/envsetup.sh)之后,我们可以得到一些有用的指令,除了上边用到的lunch,还有以下:

- croot: Changes directory to the top of the tree.
- m: Makes from the top of the tree.
- mm: Builds all of the modules in the current directory.
- mmm: Builds all of the modules in the supplied directories.
- cgrep: Greps on all local C/C++ files.
- jgrep: Greps on all local Java files.
- resgrep: Greps on all local res/*.xml files.
- godir: Go to the directory containing a file.


其中mmm指令就是用来编译指定目录.通常来说,每个目录只包含一个模块.比如这里我们要编译Launcher2模块,执行指令:

mmm packages/apps/Launcher2/


稍等一会之后,如果提示:make completed success fully 即表示编译完成,此时在out/target/product/gereric/system/app就可以看到编译的Launcher2.apk文件了.

重新打包系统镜像

编译好指定模块后,如果我们想要将该模块对应的apk集成到系统镜像中,需要借助
make snod
指令重新打包系统镜像,这样我们新生成的system.img中就包含了刚才编译的Launcher2模块了.重启模拟器之后生效.

单独安装模块

我们在不断的修改某些模块,总不能每次编译完成后都要重新打包system.img,然后重启手机吧?有没有什么简单的方法呢?

在编译完后,借助adb install命令直接将生成的apk文件安装到设备上即可,相比使用make snod,会节省很多事件.

补充

我们简单的来介绍out/target/product/generic/system目录下的常用目录:

Android系统自带的apk文件都在out/target/product/generic/system/apk目录下;

一些可执行文件(比如C编译的执行),放在out/target/product/generic/system/bin目录下;

动态链接库放在out/target/product/generic/system/lib目录下;

硬件抽象层文件都放在out/targer/product/generic/system/lib/hw目录下.

Android 自带的emulator 有时会有没有模拟键,adb连接不上等问题,建议大家可以使用Android Studio的模拟器,有几个注意点:

1.我们编译的是aosp_arm64-eng ,所以Android Studio 创建AVD时要选择arm的,不要选x86.

2.把自己编译好的(路径在out/target/product/generic/下)system.img,

userdate.img ,ramdisk.img拷贝到 Android Studio SDK所在目录下的system-images/android-25/google_apis/arm64-v84/下,替换掉原有的文件,运行之前创建的AVD即可,等几分钟就可以看到自己百编译的系统了。

参考博客http://blog.csdn.net/dd864140130/article/details/51718187
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: