cm源码下载和源码结构介绍,recovery的编译。

来源:互联网 发布:用友t3软件下载 编辑:程序博客网 时间:2024/04/30 10:47
一,下载源码前准备工作:
java 环境搭建【请参照博文http://blog.csdn.net/azsx02/article/details/68952492】
编译环境Ubuntu 12.04:
  1. $sudo apt-get install git gnupg flex bison gperf build-essential
  2.   zip curl libc6-dev libncurses5-dev:i386 x11proto-core-dev
  3.   libx11-dev:i386 libreadline6-dev:i386 libgl1-mesa-glx:i386
  4.   libgl1-mesa-dev g++-multilib mingw32 tofrodos
  5.   python-markdown libxml2-utils xsltproc zlib1g-dev:i386

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

在用户目录下创建一个~/bin目录,并添加到环境变量中(要将git软件下载安装在此目录,在别的目录运行可能会找不到此软件,所以要添加到环境变量中)
  1. $mkdir ~/bin
  2. $PATH=~/bin:$PATH  [今后如果在repo sync的时候提示未找到repo 就要执行该命令]

下载repo脚本并修改权限为可执行
  1. $curl https://dl-ssl.google.com/dl/googlesource/git-repo/repo > ~/bin/repo
  2. $chmod a+x ~/bin/repo

创建一个保存android源码的目录,修改为最大权限,并进入到该目录下'
  1. $mkdir ~/android
  2. $chmod -R 777 ~/android
  3. $cd ~/android"
  4. $mkdir cm10.2
  5. $cd cm10.2



,下载源码:     
初始化repo,并选择要下载的分支(版本)
  1. $repo init -u git://github.com/CyanogenMod/android.git -b cm-10.2

在这过程中需要输入你的姓名、邮箱等信息
  1. Your Name  【写入你的用户名】
  2. Your Email   【写入你的邮箱地址】

  1. 接下来要写入 Y 确定。

下载【同步】源码
  1. $repo sync

        repo sync是一个相当长并且痛苦的过程,下载完后包括.repo缓存文件夹一共18G,也就是折算下来需要下载9G左右。
         网速快者4-5小时可以完成,一般者一个夜晚,小水管者就无法预测了。

 
代码下载过程中,经常提示以下错误:
error: Failed connect to android.googlesource.com:443;Connection refused while accessinghttps://android.googlesource.com/a/platform/frameworks/base/info/refs
fatal: HTTP request failed
error: Cannot fetch platform/tools/motodev
error: Cannot fetch platform/frameworks/base
error: Cannot fetch platform/prebuilts/sdk
error: Exited sync due to fetch errors

解决方法:编辑/etc/hosts文件
  1. $ gedit /etc/hosts
  2. 增加下面内容,保存(提前保存好):
  3. 74.125.31.82 www.googlesource.com5
  4. 74.125.31.82 android.googlesource.com
  5. 203.208.46.172 cache.pack.google.com
  6. 59.24.3.173cache.pack.google.com9
  7. 然后重新输入
  8. $ repo sync

三,源码结构简介:
  1. 第一级目录如下:
  2. |-- abi      
  3. |-- android
  4. |-- bionic          (Bionic C库)
  5. |-- bootable    (引导相关代码)
  6. |-- build      (build目录中的内容不是目标所用的代码,而是编译和配置所需要的脚本和工具)
  7. |-- cts           (Android兼容性测试套件标准)
  8. |-- dalvik          (JAVA虚拟机)
  9. |-- developers
  10. |-- development     (程序开发所需要的模板和工具)
  11. |-- device         (设备)
  12. |-- docs      (文档)     
  13. |-- external        (目标机器使用的一些库,android使用的一些开源的模组)
  14. |-- frameworks      (应用程序的框架层 核心框架)
  15. |-- hardware        (部分厂家开源的硬解适配层HAL代码)
  16. |-- libcore       (核心库)
  17. |-- libnativehelper
  18. |-- ndk           (本地开发工具包)
  19. |-- out                      (编译完成后的代码输出与此目录)
  20. |-- packages        (Android的各种应用程序)
  21. |-- pdk8
  22. |-- prebuilt        (Android在各种平台下编译的预置脚本)
  23. |--prebuilts 
  24. |-- sdk      (sdk及模拟器)
  25. |-- system          (底层文件系统库、应用及组件——C语言)
  26. |-- tools  
  27. |--vendor      

  28. Package目录展开:
  29. |-- apps                                (应用程序库)
  30. |-- experimental
  31. |-- inputmethods                (输入法)
  32. |-- providers                        (提供器,提供应用程序、界面所需的数据)
  33. |-- screensavers
  34. |-- wallpapers             (墙纸)            

  35. Apps目录展开
  36. 自行查阅

四,recovery编译流程
同步源码到最新,我同步的源码目录为~/android/cm10.2/,要改为自己的源码目录,下面每一步也一样!
  1. $cd ~/android/cm10.2
  2. $repo sync


更新完成后,执行下面命令,完成环境的安装
  1. $./build/envsetup.sh

下一步,make我们后面要用到的工具
  1. $make -j4 otatools

会生成out目录,在/out/host/linux-x86/bin中有后面要用到的工具。

将/out/host/linux-x86/bin加入环境变量,变量具体位置要改成你的
  1. $gedit ~/.bashrc

在文本最后添加:
export PATH=$PATH:~/android/cm10.2/out/host/linux-x86/bin
保存退出,执行下面命令,让刚加的环境变量生效:
  1. $source ~/.bashrc

从官方包中,别人的ROM包也可以,拿出boot.img。我放到了~/android/目录
开始建立我们机型的device目录:

  1. $./build/tools/device/mkvendor.sh huawei c8812 ~/android/boot.img

出现版本提示后按Ctrl+z 强制停止,然后进行后面的步骤。
命令参考:
./build/tools/device/mkvendor.sh device_manufacturer_name device_name /your/path/to/the/boot.img

此时在/device/huawei/中就会有你的机型了,里面有你的配置文件:AndroidBoard.mk,AndroidProducts.mk, BoardConfig.mk, device_.mk, kernel, system.prop,recovery.fstab, and vendorsetup.sh.

修改配置文件:
在这里很重要的一个文件就是recovery.fstab,是你手机里各个设备分区对应的挂载点,可以理解为手机的分区表。如果这个文件有错误,那么进入recovery后,会提醒分区挂载失败。
这个文件我们可以从官方的recovery.img提取出来。也可以直接解包别人编译好的recovery,得到recovery.fstab

开始编译,执行命令
  1. $./build/envsetup.sh

如果提示lunch未安装,只可以执行
source build/envsetup.sh   

编译开始:
  1. $make -j4 recoveryimage
复制代码
输出的目录为:out/target/product/n8880e/recovery.img文件,就是我们要的
0 0