banner
fwrite

fwrite

好好生活
twitter
github
email

Android 源码编译

使用 apt 安裝以下工具 先使用 apt 安装以下工具

  sudo apt upgrade
  sudo apt update
  
  sudo apt install -y \
      vim \
      git-core \
      gnupg \
      flex \
      bison \
      gperf \
      build-essential \
      zip \
      unzip \
      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 \
      libncurses5 \
      libelf-dev \
      libswitch-perl

安装 google 的 repo 工具来下载 Android 源码、Android 内核代码
下载安装 repo 工具

  mkdir ~/bin
  PATH=~/bin:$PATH
  curl https://storage.googleapis.com/git-repo-downloads/repo > ~/bin/repo
  chmod a+x ~/bin/repo

下载源码#

  mkdir android_source && cd android_source

确认有设定 git 的基本资讯, name 、 email

  git config --global user.name <Your Name>
  git config --global user.email <you@example.com>

repo init :指定你要下载的 url & branch (branch name 可以参考官方文档)

  repo init -u https://android.googlesource.com/platform/manifest \
      -b android-13.0.0_r1
  repo sync

编译 Android#

初始化环境:在 Android 下载好的根资料夹下达以下命令

  cd ~/android_source
  
  source ./build/envsetup.sh

lunch 选择编译目标:选择要编译的目标,格式组成是 BUILD 、 BUILDTYPE
Build 是指编译完后要运行的平台

BUILD目标设备补充
Full模拟器全编译,包含所有语言、应用、输入法… 等等
full_manguromanguro全编译,运行于 Galaxy Nexus GSM/HSPA+("manguro")
full_pandapanda全编译,运行于 PandaBoard ("panda")

BUILDTYPE 则分为三种类型

BUILDTYPE功能特点
user发布到市场上的版本,预设没有 root 权限、adb 关闭
userdebug开放 root、adb 权限,一般用于真机调试
eng拥有最大权限 (root),并具有额外调适工具,一般用于模拟器

make 编译:可以按照自己电脑的 CPU 核心数量来编译

  # make -j$(nproc)
  
  make -j10

Android Source 单编译 - 模组#

除了全部编译以外,我们可以使用单单编译某一个应用模块 (eg. Settings 应用模块)
在 Android Source 根目录中,执行以下命令

  source ./build/envsetup.sh
  
  lunch xxx

进入 Setting 目录下,使用 mm 编译

  mmm packages/apps/Settings

除了 mm 指令以外,还可以使用其他命令单编译

指令功能
mm编译当前目录下 Module(必须进入指定工程的目录中才能编译)
mmm编译指定目录下 Module,但不编译其依赖的 Module (可以在 Android 源代码的目录结构中的任意级目录,编译任意指定的工程)
mma编译当前目录下 Module,包含其依赖的 Module
mmma编译 指定路径下的 所有 Module,并包含其依赖

模拟器运行#

  source ./build/envsetup.sh
  
  lunch xxx
  
  emulator
加载中...
此文章数据所有权由区块链加密技术和智能合约保障仅归创作者所有。