Android Tech And Perf

Android 系统开发源码环境搭建

Word count: 915Reading time: 3 min
2018/11/01

不管是 Android App 开发工程师还是 Android 系统开发工程师,对 Android 系统有一定的了解是很有必要的,正好我这几天在家里搭建了个开发环境,把过程分享出来,有需要的人可以看一下。

大概的步骤包含下面几个:

  1. 安装 Ubuntu 系统
  2. 配置 Ubuntu 系统
  3. 安装必备的软件
  4. 配置 VPN (可选)
  5. 下载 AOSP 代码
  6. 配置编译环境并编译 Pixel 的代码
  7. 刷机
  8. 修改和编译 Framework 、Service、Res

建议准备下面的硬件,当然没有也没关系,有了更好

  1. PC 或者笔记本
  2. 512GB 的 SSD
  3. Pixel 手机一台

安装 Ubuntu 系统

Linux 这边我建议用 Ubuntu 系统,不建议用虚拟机,直接安装一个新的 Ubuntu 系统会比较好,Ubuntu 目前最新的 LTS 版本是 18.04,目前安装 Ubuntu 的步骤会比较简单:

  1. 下载 Ubuntu18.04 版本:ubuntu 18.04
  2. 使用 Ubuntu 推荐的工具做一个 U 盘启动盘
  3. 使用 U 盘安装 Ubuntu 系统

mydesktop

配置 Ubuntu 系统

  1. 安装搜狗输入法
  2. 安装 vim :sudo apt install vim
  3. 安装 adb
  4. 安装 fastboot

安装必备的软件

  1. VS Code
  2. Android Studio
  3. Meld
  4. Wine
  5. WPS

配置 VPN (可选)

  1. ShadowSocks

下载 AOSP 代码

没有 v-p-n 的话,推荐使用清华的镜像站:https://mirror.tuna.tsinghua.edu.cn/help/AOSP/

## repo 下载 


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

建立工作目录

1
2
mkdir WORKING_DIRECTORY
cd WORKING_DIRECTORY

初始化仓库

1
repo init -u https://aosp.tuna.tsinghua.edu.cn/platform/manifest

下载代码(-c –no-tags 能下载更少的代码)

1
repo sync -c --no-tags

配置编译环境并编译 Pixel 的代码

配置编译环境

安装jdk

1
2
sudo apt-get update
sudo apt-get install openjdk-8-jdk

安装相关依赖

1
2
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 libgl1-mesa-dev libxml2-utils xsltproc unzip

下载 Pixle 的驱动

编译 Android Master 的代码的话,需要下载对应的手机的驱动,在这个页面找到自己需要的驱动:
https://developers.google.cn/android/blobs-preview
extract-qcom-sailfish

解压如下:
extract-google_devices-sailfish

编译 Pixle 的系统镜像

在源码根目录下执行

1
source build/envsetup.sh

执行下面的命令选择要编译的手机型号和版本(user、userdebug、eng)

1
lunch

lunch

选择好了之后,输入对应的数字或者数字后面的,执行 make 开始编译(可选择加 -j4,4带代表线程数,机器性能好的话可以8或者16,看cpu):

1
make -j8

make-j8

编译成功

out 目录会生成对应的 image
out_folde

刷机

在源码根目录下,执行下面的命令,即可刷入对应的系统到

fastboot

1
fastboot flashall

fastboot-flashal

修改和编译 Framework 、Service、Res

以下命令都在源码根目录下执行

修改代码 IDE

java代码

java 代码推荐使用 AndroidStudio 打开、编辑

c/cpp代码

c/cpp 代码推荐使用 SourceInsight 、Eclipse、VS Code 打开、编辑

编译 Framework

1
mmm framework/base

编译 Services

1
mmm frameworks/base/services

编译 res

1
mmm frameworks/base/core/res

root && remount

root--remount

push

root && remount 之后,就可以把对应的 framework、Services、Res 等 push 进去,重启 shell 即可生效,或者直接 adb sync system 即可, sync system 会把 out目录下对应机型的 system 目录和手机的 system 目录进行同步,很是方便。

例子:

1
adb root && adb remount && adb shell stop && adb sync system && adb shell start

关于我 && 博客

  1. 关于我 , 非常希望和大家一起交流 , 共同进步 .
  2. 博客内容导航
  3. 优秀博客文章记录 - Android 性能优化必知必会

一个人可以走的更快 , 一群人可以走的更远

微信扫一扫

CATALOG
  1. 1. 安装 Ubuntu 系统
  2. 2. 配置 Ubuntu 系统
  3. 3. 安装必备的软件
  4. 4. 配置 VPN (可选)
  5. 5. 下载 AOSP 代码
    1. 5.1. 建立工作目录
    2. 5.2. 初始化仓库
    3. 5.3. 下载代码(-c –no-tags 能下载更少的代码)
  6. 6. 配置编译环境并编译 Pixel 的代码
    1. 6.1. 配置编译环境
      1. 6.1.1. 安装jdk
      2. 6.1.2. 安装相关依赖
    2. 6.2. 下载 Pixle 的驱动
    3. 6.3. 编译 Pixle 的系统镜像
    4. 6.4. 编译成功
  7. 7. 刷机
  8. 8. 修改和编译 Framework 、Service、Res
    1. 8.1. 修改代码 IDE
      1. 8.1.1. java代码
      2. 8.1.2. c/cpp代码
    2. 8.2. 编译 Framework
    3. 8.3. 编译 Services
    4. 8.4. 编译 res
    5. 8.5. root && remount
    6. 8.6. push
  9. 9. 关于我 && 博客