Android IMX6Q源码编译

2018-04-26  本文已影响105人  Felix_lin

参考文档:

基础知识

一、Android刷机的组件含义

  1. Android 启动流程:
    • 当你的Android手机启动时首先会启动RADIO,然后是SPL。
    • 此时SPL 会根据你的按键,确定进入哪个模式( 例如Recovery,Fastboot等等),
    • 如果没有按其他键,那么spl 会将kernel 载入到记忆体中,ramdisk 也会载入到你的设备的根目录
  1. imag文件:
    Kernel 操作系统内核操作系统内核是指大多数Linux操作系统的核心部分。它由操作系统中用于管理存储器、文件、外设和系统资源的那些部分组成。操作系统内核通常运行进程,并提供进程间的通信
    • data目录:安卓data目录,存放用户的一些私有文件, 会被挂载到 /data
    • root目录:安卓root文件系统,里面存放init init.rc等文件,会被挂载到 /
    • recovery目录:当启动到recovery模式时,做root文件系统,一般不会直接使用
    • system目录:安卓system目录,存放二进制文件和库,会被挂载到 /system
    • recovery.img:EXT4格式的img文件,由recovery目录生成
    • userdata.img 用户文件系统其实就是userdata目录的内容
    • system.img 系统文件系统其实就是system目录中的内容
    • boot.img 集成内核的zImage、ramdisk.img、dtb(设备树文件)还有启动参数
    • ramdisk.img 其实就是/文件目录下的内容,由root目录生成,然后被集成到boot.img,不会被直接使用
    • vendor.img: 包含平台二进制文件,位于/vendor
    • partition-table.img:GPT分区表映像,,用于SD卡。

二、搭建Android源码编译环境

详细可参考:https://source.android.com/source/initializing

  1. 需要使用 Linux 或 Mac OS,我采用的是Ubuntu 14.0.4

    • 搭建一些必须的程序包:

        sudo apt-get install git-core gnupg flex bison gperf build-essential zip curl zlib1g-dev gcc-multilib g++-multilib libc6-dev-i386 lib32ncurses5-dev x11proto-core-dev libx11-dev lib32z-dev ccache libgl1-mesa-dev libxml2-utils xsltproc unzip
      
    • 初始化git,替换自己的邮箱和名字

        git config –global user.email “test@test.com” 
        git config –global user.name “test”
      
  2. make编译需求:

    • Android 4.0.x (Ice Cream Sandwich) 及更低版本需要将 make 3.82 还原到较低版本,以避免出现编译错误
  3. 需要的Linux版本

    • Android 6.0 (Marshmallow) - AOSP master:Ubuntu 14.04 (Trusty)
    • Android 2.3.x (Gingerbread) - Android 5.x (Lollipop):Ubuntu 12.04 (Precise)
    • 2.3以下需要32位的系统
  4. 对应的JDK版本:

    • Android 7.0 (Nougat) - Android 8.0 (O):Ubuntu - OpenJDK 8;Mac OS - jdk 8u45 或更高版本
    • Android 5.x (Lollipop) - Android 6.0 (Marshmallow):Ubuntu - OpenJDK 7;Mac OS - jdk-7u71-macosx-x64.dmg
    • Android 2.3.x (Gingerbread) - Android 4.4.x (KitKat):Ubuntu - Java JDK 6;Mac OS - Java JDK 6
    • Android 1.5 (Cupcake) - Android 2.2.x (Froyo):Ubuntu - Java JDK 5

    注:

     如果 Ubuntu >= 15.04
    
     请运行以下命令:
     
     sudo apt-get update
     sudo apt-get install openjdk-8-jdk
    

I.MX6Q Android端编译流程

1. 编译命令(Ubuntu 16.04下编译)

部分实用指令

  1. 更新默认的 Java 版本

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

repo指令

Google源码编译介绍
repo是我们以 Git 为基础构建的代码库管理工具。Repo 可以在必要时整合多个 Git 代码库,将相关内容上传到我们的修订版本控制系统,并自动执行 Android 开发工作流程的部分环节。Repo 并非用来取代 Git,只是为了让您在 Android 环境中更轻松地使用 Git。Repo 命令是一段可执行的 Python 脚本,您可以将其放在路径中的任何位置。使用 Android 源代码文件时,您可以使用 Repo 执行跨网络操作。例如,您可以借助单个 Repo 命令,将文件从多个代码库下载到本地工作目录。

  1. repo status 列出文件状态
  2. repo diff 查看未提交的修改
  3. repo start 新建一个主题分支
  4. git add 暂存更改
  5. repo upload 将更改上传到审核服务器
  6. repo sync 同步所有可用项目的文件 此处可用于检测文件是否下载完全,或者从新开始下载,在文件下载终止或卡住时,可用Ctrl+Z,中止指令后重新恢复
  7. repo branches 查看现有分支的列表
  8. repo prune 安全移除已过时的主题分支 在本地文件分支出问题时可调用
  9. repo init -u https://android.googlesource.com/platform/manifest -b android-4.0.1_r1
    初始化 Android 源代码到工作目录 -b 来指定相应分支
上一篇 下一篇

猜你喜欢

热点阅读