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
読み込み中...
文章は、創作者によって署名され、ブロックチェーンに安全に保存されています。