pixel2真机调试aosp

文章目录

  • pixel2真机调试aosp
    • 2.下载源码
    • 3.下载完成后编译aosp
    • 4.as导入aosp
      • 1.导入加速
      • 2.配置正确的源码跳转
      • 3.调试aosp
    • 4. 其他
      • repo查看其他分支

pixel2真机调试aosp

##1. 前置工作

  1. 解锁手机,让手机允许刷机
adb reboot bootloader # 重开机后看到机器人
fastboot flashing unlock #进入解锁画面,音量键选择unlock the bootloader 加上电源键进行解锁
  1. 刷入官网rom
    1.为了确定解锁后的手机能够刷机 2.刷特定版本的rom确保之后编译的系统映像是同一版本
    官网rom位置
    记住自己下载的rom的版本,不同手机能下载的rom版本不同,官网已经标出
  2. 下载后解压,命令行里运行(adb reboot bootloader),并在解压文件目录下运行fastboot-all.sh脚本开始刷机。完成刷机后系统重启。可以进入系统-关于手机里查看手机build number (eg:PQ3A.190405.003)

2.下载源码

1.获取repo工具,这里可能需要

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

2.下载aosp
aosp有很多branch 和tag。记得我们上面刷的rom版本 PQ3A.190405.003 找到对应tag的分支
分支列表

1.新建目录
2 在该目录下执行 repo init -u https://aosp.tuna.tsinghua.edu.cn/platform/manifest -b android-9.0.0_r35(这里是上面找到的分支)
3.repo sync -j4 #注意不要开太多线程,经常会出错

ps:可以使用如下shell脚本,同步出错可以继续同步

#/bin/sh
repo sync -j4
while [ $? -ne 0 ]
do
repo sync -j4

3.下载完成后编译aosp

  1. 编译前需要下载driver(没有driver只能编译emulator),注意根据上面选择的tag(PQ3A.190405.003)选择driver版本
    driver地址
    需要下载两个一个是Vendor Image,另一个是Driver。下载至我们下载的aosp目录。解压进入相应的目录执行里面的shell脚本进行解压。ps:解压过程中需要输入I ACCEPT
  2. 编译aosp
source ./build/envsetup.sh
lunch #选择和手机对应的版本
make -j16

3.编译完成后刷机

 #进入Bootloader Mode
adb reboot bootloader
# 进行刷机
fastboot flashall -w

ps:刷机过程可能出现的问题

  1. 命令找不到
    解决:sdk platform tools
    下载最新的platform-tools(放到path环境变量中或者将其中的工具替换系统中已有的)
    比如:which fastboot 查到在/usr/bin/fastboot中,将下载fastboot直接移动到/usr/bin目录下
  2. 如果碰到error: Cannot generate image for userdata
    编辑flash-all.sh,把-w去掉。

4.as导入aosp

1.源码根目录执行 make idegen
2.执行development/tools/idegen/idegen.sh
3.as 打开android.ipr文件

1.导入加速

  1. 加载前配置提速
    打开android.iml文件,有大量excludeFolder,是指不会导入到AS的模块,默认除了以下14个文件夹之外的所有文件都会导致到AS工程, 这显然还会非常庞大的,那么我们可以有选择的导入 如下:
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
      
  1. 加载后提速
    Project Structure -> Modules,在相应的包右键excluded可快速去除某些模块, 其中红色代码Exclueded选项(即代表已删除的目录)。

2.配置正确的源码跳转

  1. 这里的配置JDK/SDK,是用于解决在分析和调试源码的过程,能正确地跳转到目标源码,而非SDK中的代码。 点击File菜单下的Project Structure
  2. Project Structure -> SDKs, 新建 JDK(None), 其中JDK目录可选择跟原本JDK一致即可, 然后删除其classpath和SourcePath的内容,确保使用Android系统源码文件
  3. Project Structure -> SDKs, 选中Android API level Platform, 然后选择其Java SDK为前面新建的JDK(None)
  4. Project Structure -> Project -> 选中Project SDK, 选择前面的Android API 25 Platform
  5. Project Structure -> Modules -> android -> Dependencies: 先删除Android API 25 Platform之外的所有依赖, 然后点击下图绿色的+号来选择Jars or directories,将frameworks添加进来, 也可添加其他所关注的源码;添加后将framework的依赖放到最前面
    pixel2真机调试aosp_第1张图片

3.调试aosp

1.as点击attach 进程 选择显示所有进程
pixel2真机调试aosp_第2张图片
2. frameworks各大核心服务运行在system_server进程, 在调试器上名字为system_process,通过attach到system_process我们可以调试AMS等的代码

4. 其他

repo查看其他分支

#源码目录下执行
cd .repo/manifests
git branch -a | cut -d / -f 3

参考:
源码导入
刷机和编译
源码下载

你可能感兴趣的:(android)