Android系统源码编译环境搭建(清华镜像,想编译什么版本都可以,只是有JDK和make的版本要求)

上一次,写得有点匆忙,现在补上清华镜像源码的详细下载方法。


编译Android 5.1源代码并烧录到Nexus4(用的是清华镜像的源)

环境准备:
基本环境:ubuntu-14.04-desktop-64bit
其他要求:空闲磁盘空间足够大,内存越大越好(本人128G固态硬盘,16G内存,只能编译一个系统源码,编译第二个就会报磁盘空间不足,本人重装了系统,128G固态硬盘装win7和ubuntu14.04,通过挂在方式http://blog.csdn.net/aknew123/article/details/53442580,将Linux的软件和work space(源码编译)放在普通硬盘,这样就可以不用花大价钱,提高系统性能又资源利用最大化)。


==========================================
第一部分:编译环境初始化
==========================================
1. 安装Oracle JDK或openJDK也可以


2. 安装必备工具软件
$sudo apt-get install git gnupg flex bison gperf build-essential zip curl libc6-dev libncurses5-dev:i386 x11proto-core-dev libx11-dev:i386 libreadline6-dev:i386 libgl1-mesa-dri:i386 libgl1-mesa-dev g++-multilib mingw32 tofrodos python-markdown libxml2-utils xsltproc zlib1g-dev:i386 dpkg-dev
$ sudo ln -s /usr/lib/i386-linux-gnu/mesa/libGL.so.1 /usr/lib/i386-linux-gnu/libGL.so  


安装valgrind调试工具。在Ubuntu上执行以下命令:
sudo apt-get install valgrind
安装repo工具  #配置环境变量,下载repo安装到~/bin/repo目录,修改为可执行权限
mkdir ~/bin
PATH=~/bin:$PATH
curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
chmod a+x ~/bin/repo
repo下载源码需要google账户,暂时借用
[calvin@lihao-desktop ~/Android/Android2.0/source 18:44:28]$ git config --global user.email "lihao921@gmail.com"
[calvin@lihao-desktop ~/Android/Android2.0/source 18:44:28]$ git config --global user.name "Cavin Lee"


注意:关于repo的初始化,可以上清华镜像网站去看看,这里就不写这么详细了。


3. 配置ccache
安装ccache并将export USE_CCACHE=1加入到~/.bashrc中。
 
==========================================
第二部分:源代码下载
========================================== 
初始化仓库
mkdir android_source
cd android_source
repo init -u https://aosp.tuna.tsinghua.edu.cn/platform/manifest(这是清华镜像的源,也算是挺快的了
运行完这句,会初始化你的repo,往回看,选择你想下的版本,比如android-5.1.1_r1,运行下一句
repo init -u https://aosp.tuna.tsinghua.edu.cn/platform/manifest -b android-5.1.1_r1(目标版本)
执行完后就配置好了本版,提示你改变配置可以修改账户,不用管。接下来,同步代码树

repo sync -j4

因为环境没有那么好,常常会断开,所以,我们不直接运行repo sync -j4,我们编写一个shell脚本repo_code.sh,运行(./repo_code)这个脚本就好,sync 失败就再自动sync ,直到sync成功,sync成功后就可以看淡工程目录了。

repo_code.sh脚本内容如下:
#!/bin/bash    
echo "======start repo sync======"    
    repo sync -j4    
    while [ $? = 1 ]
do    
    echo "======sync failed, re-sync again======"    
    sleep 3    
    repo sync -j4   
done  
echo "======repo sync finish======"  

此过程比较漫长,慢慢等,会报The requested URL returned error: 404 Not Found,不用管!


 
==========================================
第三部分:源代码编译 
==========================================
1.下载必须的源码刷手机的驱动文件并配置


    进 https://developers.google.com/android/nexus/drivers 根据手机型号选对应的驱动包
    下载三个驱动包: broadcom-mako-krt16s-f54c9ff9.tgz, lge-mako-krt16s-23ef7d53.tgz, qcom-mako-krt16s-cc4bd932.tgz 
    解压到源码根目录(也就是~/android5.1)
    运行三个解压后的sh文件, 在根目录下会多出vendor目录, 这就是硬件驱动目录


2. 开始编译


    导入编译android环境变量: source build/envsetup.sh
    设置编译缓存大小: prebuilts/misc/linux-x86/ccache/ccache -M 50G
    选择编译终端类型: lunch full_mako-userdebug
    编译源码: make -j4


     查看是否生成 system.img boot.img recovery.img userdata.img等需要的文件
     第一次编译要等待比较久的时间,编译成功后,可以看到下面的输出:
     Target system fs image:    out/target/product/generic/obj/PACKAGING/systemimage_intermediates/system.img
     Install system fs image: out/target/product/generic/system.img
     Target ram disk: out/target/product/generic/ramdisk.img
     Target userdata fs image: out/target/product/generic/userdata.img
     Installed file list: out/target/product/generic/installed-files.txt 


     编译SDK,这一步是可选的,执行以下命令:
     make sdk


3. 设置环境变量(编译成功之后配置,用于将镜像安装到模拟器或真机上)
   export ANDROID_HOME=~/android5.1
   export PATH=$PATH:${ANDROID_HOME}/out/host/linux-x86/bin        fastboot 或 emulator模拟器存放目录
   export ANDROID_PRODUCT_OUT=${ANDROID_HOME}/out/target/product/mako  img镜像存放目录


==========================================
第四部分:编译好的系统刷入手机
==========================================
1. 运行模拟器,命令:
直接敲 emulator (Android终于出来了,哈哈哈!!!)
模拟器运行需要四个文件,分别是Linux Kernel镜像zImage和Android镜像文件system.img、userdata.img和ramdisk.img。执行emulator命令时,
如果不带任何参数,则Linux Kernel镜像默认使用~/Android/prebuilt/android-arm/kernel目录下的kernel-qemu文件,
而Android镜像文件则默认使用ANDROID_PRODUCT_OUT目录下的system.img、userdata.img和ramdisk.img,
也就是我们刚刚编译出来的镜像问题。
    当然,我们也可以以指定的镜像文件来运行模拟器,即运行emulator时,即:
    USER-NAME@MACHINE-NAME:~/Android$ emulator -kernel ./prebuilt/android-arm/kernel/kernel-qemu 
-sysdir ./out/target/product/generic 
-system system.img -data userdata.img 
-ramdisk ramdisk.img


 
2.刷入手机
进入 system.img所在目录
1) 进入刷机模式: adb reboot bootloader


fastboot format cache




fastboot format userdata


2) 刷image进手机:sudo fastboot -w flashall  


或者分别刷入 fastboot flash recovery recovery.img


          fastboot flash  boot boot.img


       fastboot flash system system.img


       fastboot flash userdata userdata.img 进入手机


####################################问题和解决方案###############################
1.fastboot devices 已经找到设备,但fastboot flash却一直waiting for device时,
用fastboot命令查看设备提示无权限,如下:


$ fastboot -l devices
no permissions         fastboot usb:3-1    (是没有权限的原因)
解决方案:
(1).将fastboot的所有者属性改成root
用which fastboot命令找到fastboot所在的目录,然后进入此目录;再用命令chown改其属性:
sudo chown root:root fastboot
(2).将其权限更改一下:
sudo chmod +s fastboot




  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值