惯性聚合 高效追踪和阅读你感兴趣的博客、新闻、科技资讯
阅读原文 在惯性聚合中打开

推荐订阅源

钛媒体:引领未来商业与生活新知
钛媒体:引领未来商业与生活新知
WordPress大学
WordPress大学
T
Tailwind CSS Blog
V
Visual Studio Blog
月光博客
月光博客
Hugging Face - Blog
Hugging Face - Blog
小众软件
小众软件
奇客Solidot–传递最新科技情报
奇客Solidot–传递最新科技情报
博客园 - Franky
freeCodeCamp Programming Tutorials: Python, JavaScript, Git & More
Last Week in AI
Last Week in AI
阮一峰的网络日志
阮一峰的网络日志
量子位
有赞技术团队
有赞技术团队
酷 壳 – CoolShell
酷 壳 – CoolShell
Apple Machine Learning Research
Apple Machine Learning Research
博客园_首页
Jina AI
Jina AI
雷峰网
雷峰网
博客园 - 【当耐特】
博客园 - 叶小钗
美团技术团队
宝玉的分享
宝玉的分享
IT之家
IT之家

Android Performance

SmartPerfetto 架构文章 Q&A:8 个深度技术问答 从 Trace 到洞察:SmartPerfetto AI Agent 的 Harness Engineering 实战 OpenClaw 常见问题解答:Token 消耗、能干什么、本地模型、隐私安全、使用体验 我把 OpenClaw 跑在本地三周后,发现它根本不是聊天机器人 Android Perfetto 系列 10 - Binder 调度与锁竞争 Android Perfetto 系列 9 - CPU 信息解读 Android Perfetto 系列 8:深入理解 Vsync 机制与性能分析 Android Perfetto 系列 7 - MainThread 和 RenderThread 解读 Android Perfetto 系列 6:为什么是 120Hz?高刷新率的优势与挑战 Android Perfetto 系列 5:Android App 基于 Choreographer 的渲染流程 Android Perfetto 系列 4:使用命令行在本地打开超大 Trace Android ANR 系列 3 :ANR 案例分享 Android ANR 系列 2 :ANR 分析套路和关键 Log 介绍 Android ANR 系列 1 :理解 Android ANR 设计思想 Android Perfetto 系列 3:熟悉 Perfetto View Android Perfetto 系列 2:Perfetto Trace 抓取 Android Perfetto 系列 1:Perfetto 工具简介 Android Perfetto 系列目录 2023 年的方方面面 关于 The Android Performance 知识星球介绍 The Performance Design Of OS OS 设计之性能设计 当 App 有了系统权限,真的可以为所欲为? The Performance 星球茶话会 - 第一期 Systrace 线程 CPU 运行状态分析技巧 - Sleep 和 Uninterruptible Sleep 篇 Systrace 线程 CPU 运行状态分析技巧 - Running 篇 Systrace 线程 CPU 运行状态分析技巧 - Runnable 篇 Android 性能优化的术、道、器 Techniques, Philosophy, and Tools for Android Performance Optimization 回顾 2021
Android 系统开发源码环境搭建
Gracker · 2018-11-01 · via Android Performance

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

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

  1. 安装 Ubuntu 系统
  2. 配置 Ubuntu 系统
  3. 安装必备的软件
  4. 配置网络访问环境 (可选)
  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

配置网络访问环境 (可选)

  1. 根据本地环境准备稳定的网络访问方式

下载 AOSP 代码

如果访问 Google 服务器不顺畅,推荐使用清华的镜像站: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
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 性能优化必知必会 :欢迎大家自荐和推荐 (微信私聊即可)
  4. Android性能优化知识星球 : 欢迎加入,多谢支持~

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

微信扫一扫