Android系统源码下载及编译流程

Android系统源码下载及编译流程


  • 1.准备工作
  • 2.Android源码下载
  • 3.Android编译环境搭建
  • 4.Android系统编译
  • 5.Android内核模块编译

1. 准备工作

  • Android 由四个层组成: 
    • Linux 内核(c/c++)
    • 本地用户空间native (c/c++)
    • 应用程序框架层
    • 应用程序层(java) 
      老师说她一般在kernel、native、framework层进行代码安全加固。
  • 选择Android4.4,4.4系统优化较4.0,2.3明显,且不算太大;20G,6.0的大约60G
  • 环境: 
    • ①安装虚拟机Ubuntu16.04编译快 
      4G运存,CPU 4核心,80G硬盘(最后占50G)
    • ②安装samba文件服务器,进行文件传输

2.Android源码下载

两种方式:

  1. repo工具(批处理工具,一次下载多个git仓库) 
    • ①.安装repo: 
      mkdir ~/bin 
      PATH=~/bin:$PATH 
      下载repo脚本: 
      curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo 
      设置repo可执行权限: 
      chmod a+x ~/bin/repo
    • ②.初始化repo客户端 
      创建AndroidCode目录用来存放源码: 
      mkdir AndroidCode 
      cd AndroidCode 
      运行repo下载源码: 
      repo init -u https://android.googlesource.com/platform/manifest -b android-4.4_r1 
      repo sync 
      据说20个G,提供更新.repo文件占10个g,我们暂时用不到,所以采用第二种,并让同学帮我分担了一部分流量~


3.搭建Android编译环境:

  1. 安装一系列工具、依赖: 
    sudo apt-get install -y git flex bison gperf build-essential libncurses5-dev:i386 
    sudo apt-get install libx11-dev:i386 libreadline6-dev:i386 libgl1-mesa-dev g++-multilib 
    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 lib32z-dev ccache 
    sudo apt-get install libgl1-mesa-dev libxml2-utils xsltproc unzip m4

  2. 安装jdk: 
    Android4.4的源码编译所使用的jdk为oracle jdk1.6。jdk一定要安装1.6的最高版本,即jdk1.6.0_45,否则编译中会报错

    • 具体过程: 
      在/usr/loacl目录下创建jvm文件夹用来存放jdk:mkdir /usr/local/jvm 
      复制到/usr/local/jvm中:cp jdk-6u45-linux-x64.bin /usr/local/jvm 
      进入到/usr/local/jvm下,给.bin文件一个可执行权限 
      chmod +x jdk-6u45-linux-x64.bin 
      执行.bin文件进行安装:./jdk-6u45-linux-x64.bin 
      安装成功后设置环境变量,打开/etc/profile,添加如下几行后保存 
      export JAVA_HOME=/usr/local/java/jdk1.6.0_45 
      export JRE_HOME=/usr/local/java/jdk1.6.0_45/jre 
      export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH 
      export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$JAVA_HOME:$PATH
       
      source /etc/profile后,输入java -version,显示java version “1.6.0_45”则成功

4.编译Android源码

  1. 环境初始化: 
    ~.bashrc文件末尾追加export USE_CCACHE = 1(加速编译 ) 
    echo export USE_CCACHE=1 >> ~/.bashrc 
    source ~/.bashrc 
    导入编译Android源码所需的环境变量和其他参数: 
    source build/envsetup.sh 
    最后: make –j4(开启四线程编译) 
    CPU满负荷运行,3个多小时后,系统镜像文件 system.img、ramdisk.img和userdata.img

5. Android内核模块编译

  1. 在/usr/local/android/kernel/goldfish/drivers/char/my_test/下,gedit hello.c 


  1. 在my_test下,gedit makefile//编译hello.c 
    内容:obj-y := hello.o //内建编译,还有个obj-m表示模块编译,没时间实现了~
  2. 在../char下,gedit Makefile //包含hello驱动 
    加入:obj-y += my_test/hello.o
  3. 重新编译,将hello驱动设备编译到内核中; 
    make –j4
  4. 启动后查看内核状态: 
    emulator –kernel zImage –show-kernel & 


成功打印出hello,而且它是以drivers下的char字符驱动的形式实现的。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值