不管是 Android App 开发工程师还是 Android 系统开发工程师,对 Android 系统有一定的了解是很有必要的,正好我这几天在家里搭建了个开发环境,把过程分享出来,有需要的人可以看一下。
大概的步骤包含下面几个:
- 安装 Ubuntu 系统
- 配置 Ubuntu 系统
- 安装必备的软件
- 配置 VPN (可选)
- 下载 AOSP 代码
- 配置编译环境并编译 Pixel 的代码
- 刷机
- 修改和编译 Framework 、Service、Res
建议准备下面的硬件,当然没有也没关系,有了更好
- PC 或者笔记本
- 512GB 的 SSD
- Pixel 手机一台
安装 Ubuntu 系统
Linux 这边我建议用 Ubuntu 系统,不建议用虚拟机,直接安装一个新的 Ubuntu 系统会比较好,Ubuntu 目前最新的 LTS 版本是 18.04,目前安装 Ubuntu 的步骤会比较简单:
- 下载 Ubuntu18.04 版本:ubuntu 18.04
- 使用 Ubuntu 推荐的工具做一个 U 盘启动盘
- 使用 U 盘安装 Ubuntu 系统
配置 Ubuntu 系统
- 安装搜狗输入法
- 安装 vim :sudo apt install vim
- 安装 adb
- 安装 fastboot
安装必备的软件
- VS Code
- Android Studio
- Meld
- Wine
- WPS
配置 VPN (可选)
- ShadowSocks
下载 AOSP 代码
没有 v-p-n 的话,推荐使用清华的镜像站:https://mirror.tuna.tsinghua.edu.cn/help/AOSP/
## repo 下载
1 | mkdir ~/bin |
建立工作目录
1 | mkdir 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 | sudo apt-get update |
安装相关依赖
1 | 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
解压如下:
编译 Pixle 的系统镜像
在源码根目录下执行
1 | source build/envsetup.sh |
执行下面的命令选择要编译的手机型号和版本(user、userdebug、eng)
1 | lunch |
选择好了之后,输入对应的数字或者数字后面的,执行 make 开始编译(可选择加 -j4,4带代表线程数,机器性能好的话可以8或者16,看cpu):
1 | make -j8 |
编译成功
out 目录会生成对应的 image
刷机
在源码根目录下,执行下面的命令,即可刷入对应的系统到
1 | fastboot flashall |
修改和编译 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
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 |
关于我 && 博客
下面是个人的介绍和相关的链接,期望与同行的各位多多交流,三人行,则必有我师!
- 博主个人介绍 :里面有个人的微信和微信群链接。
- 本博客内容导航 :个人博客内容的一个导航。
- 个人整理和搜集的优秀博客文章 - Android 性能优化必知必会 :欢迎大家自荐和推荐 (微信私聊即可)
- Android性能优化知识星球 : 欢迎加入,多谢支持~
一个人可以走的更快 , 一群人可以走的更远