Andriod源码下载与编译

来源:互联网 发布:后期制作软件 编辑:程序博客网 时间:2024/05/31 19:43

亲测编译成功,首先是下载,google官网能够下载当然是最好的,但是我们大多数不能下载,推荐使用清华大学的镜像站,网址如下
http://mirrors.tuna.tsinghua.edu.cn/
在AOSP中
1.下载 repo 工具:

mkdir ~/binPATH=~/bin:$PATHcurl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repochmod a+x ~/bin/repo

2.建立工作目录:

mkdir WORKING_DIRECTORYcd WORKING_DIRECTORY

3.初始化仓库:

repo init -u https://aosp.tuna.tsinghua.edu.cn/platform/manifest# 或 repo init -u git://aosp.tuna.tsinghua.edu.cn/aosp/platform/manifest## 如果提示无法连接到 gerrit.googlesource.com,可以编辑 ~/bin/repo,把 REPO_URL 一行替换成下面的:REPO_URL = 'https://gerrit-google.tuna.tsinghua.edu.cn/git-repo'

注意如果你有更好的镜像地址直接修改就可以了。
4.如果需要某个特定的 Android 版本:对于版本名字参照镜像网站和官网

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

5.同步源码树(以后只需执行这条命令来同步):

repo sync

6.使用每月更新的初始化包
由于首次同步需要下载 37GB 数据,过程中任何网络故障都可能造成同步失败,因此你可以选择使用每月更新的初始化包。

首先到 http://mirrors.tuna.tsinghua.edu.cn/aosp-monthly/ 选择合适自己的构建包,aosp-latest.tar.xz 经过了 xz 压缩, 相对 aosp-latest.tar 小一些,但是解压的时间也要考虑进来,27G的压缩包呢!(如果CPU核多可以使用pxz解压)

使用方法如下:

wget http://mirrors.tuna.tsinghua.edu.cn/aosp-monthly/aosp-latest.tar # 下载初始化包tar xf aosp-latest.tarcd AOSP   # 解压得到的 AOSP 工程目录repo sync # 正常同步

我没有使用6这个方法,网络断了之后,直接退出来然后继续同步

安装JDK

首先用以下命令搜索JDK版本

apt-cache search openjdk

执行安装

sudo apt-get install openjdk-7-jdk

查看是否安装成功

java -version

3、配置java_home

直接运行

echo $JAVA_HOME
并不能看到输出。

设置:

echo export JAVA_HOME="/usr/lib/jvm/java-7-openjdk-amd64/" >> ~/.bashrc

然后重启terminal或通过使用以下命令

source ~/.bashrc
此时重新输入echo $JAVA_HOME,就可以看到配置好的路径了

1.编译代码
首先在Android源代码目录下的build目录下,有个脚本文件envsetup.sh,执行这个脚本文件后,就可以获得一些有用的工具:
. ./build/envsetup.sh
lunch
选择一个版本,建议选择eng版本
开始编译
make -j8

编译完成后会有输出 在out目录下

2.编译完成之后编译sdk
sudo make PRODUCT-sdk-sdk
编译生成的SDK在out/host/linux-x86/SDK下。之后如果在ubuntu下使用eclipse进行开发,可以使用你编译的SDK。

注意!!!这里生成的文件一定要移出out目录,否则在单编时会删除(删除后只能重新编译SDK),相应的指向也变成你移动到的文件夹。

下面就在模拟器中运行镜像,建议切到root用户下,首先配置几个环境变量,将自己编译的SDK设为优先级最高,在源码根目录下
如何进入root目录以及如何设置密码:
首先设置密码
sudo passwd root
进入root:
su root

update-alternatives --install /usr/bin/AndroidSDK AndroidSDK /code/sdk/android-sdk_eng.root_linux-x86 255

需要注意的是/code 后面是我移动sdk生成的文件位置,不要照抄,并且确保路径正确,即sdk下面有这个android-sdk_eng.root_linux-x86文件

这样会在/etc/alternatives下生成一个指向该SDK目录的软连接AndroidSDK,这个目录主要存放一些系统默认打开的程序的信息和配置。那么/usr/bin/AndroidSDK就指向这个软连接。接着执行:
gedit ~/.bashrc
在文件末尾添加:

    export ANDROID_SDK_HOME=/usr/bin/AndroidSDK      export PATH=$ ANDROID_SDK_HOME/tools:$PATH      export ANDROID_PRODUCT_OUT=~/android/out/target/product/generic  

第三个ANDROID_PRODUCT_OUT的指向不要照抄,按照你的路径
接着就可以执行:

source ./build/envsetup.sh

与编译源码时执行的相同,作用也是相同的

lunch sdk-eng
emulator

单独编译(建议切换到root下面)
如果你不想编译整个系统,就想编译某一个应用程序,可以使用mmm命令,使用之前,在源码目录下先要执行:

build/envsetup.sh

这样会生成一些命令,有m即make、mm编译当前目录下所有模块、mmm编译指定目录下所有模块。你可以把packages/apps/Music应用的application name改成MyMusic(AndroidManifest.xml中),然后执行:

mmm packages/apps/Music  

在out/target/product/generic/system/app中就可以看见Music.apk,然后执行:

make snod  

重新生成system.img。
再次启动emulator。

0 0
原创粉丝点击