首先下载AOSP代码,这个可以参考以前的文章
https://blog.csdn.net/y874961524/article/details/80725389

上篇文章介绍了编译后启动模拟器,模拟器不需要驱动,所以比较容易,但是运行缓慢,下面我们学习将aosp编译到真机。

这一步假设我们已经成功下载了AOSP代码,但是因为需要刷入真机,所以还需要下载驱动,重新编译等步骤。

repo 使用

AOSP开发离不开使用Repo这个工具,我们先来看下基本时使用。

使用repo sync同步最新的代码。

然后我们新建一个自己的分支,便于我们比较改动。

# 这里我们建立一个分支,刚clone下来的代码是没有分支的repo start tianrui/aosp_debug --all

详细参考资料
https://source.android.com/setup/develop/repo
https://blog.csdn.net/salmon_zhang/article/details/79180075

下载驱动

repo保持在当前分支即可,无须特意切换,我们需要根据手机机型下载对应的驱动。

编译aosp时会生成system.img文件,这个文件是最终刷机用的,但是system.img文件必须依赖驱动文件生成,如果没有放入对应的驱动就编译,那么生成的镜像也是无法正常刷机的。

下面通过这个网站查找对应的手机代号,也可以直接下镜像使用fastboot刷入:
https://developers.google.com/android/images

这里我是用的pixel手机测试的,经过查找该手机代号是sailfash,然后到这个网站上找镜像。
https://developers.google.com/android/drivers

因为是基于最新代码编译,所以我们下载最新版即可,如果是基于其他分支的代码编译,我们就需要下载对应分支的驱动。

两个文件都需要下载解压,得到两个脚本文件。

执行两个脚本,即可提取出驱动,将提取出的vendor/目录放到aosp根目录。

驱动下载完成。

全部编译aosp

这个时候需要将aosp全部编译下,因为我们之后就使用mm部分编译了,使用部分编译之前,需要先全部编译一次。

source build/envsetup.shlunch aosp_sailfish-userdebugmake clean; make -j8

大约需要2小时,aosp编译完成,这个时候我们使用

adb reboot bootloaderfastboot flashall -w

即可将镜像刷入手机。

AOSP导入Android Studio

生成idea的相关文件

soruce build/envsetup.sh  mmm development/tools/idegen/  ./development/tools/idegen/idegen.sh

这个时候,可以使用Android Studio 导入这个android.ipr文件,导入之前可以删除一些文件夹,提高导入速度。

修改android.iml,提高导入速度

如果只是修改framework模块的代码,那么只导入framework模块即可,x。
主要是修改标签,仅导入framework/base模块。

参考:

 <sourceFolder url="file://$MODULE_DIR$/frameworks/base/core/tests/coretests/BinderProxyCountingTestService/src" isTestSource="true" />      <sourceFolder url="file://$MODULE_DIR$/frameworks/base/core/tests/coretests/BstatsTestApp/src" isTestSource="true" />      <sourceFolder url="file://$MODULE_DIR$/frameworks/base/core/tests/coretests/DisabledTestApp/src" isTestSource="true" />      <sourceFolder url="file://$MODULE_DIR$/frameworks/base/core/tests/coretests/EnabledTestApp/src" isTestSource="true" />

配置源码跳转

将 Project Setting 中的依赖都删除。ClassPath仅保留这两个,SourcePath都删除。

将自动编译关掉,否则会卡。

配置完成后,源码就可以正常跳转了。
同样,这样配置完成后也可以使用Android Studio进行Debug源码。

修改AOSP

下面我们演示下修改aosp中的framework代码。

我们把ActivityManagerService的LOG开关全部打开,然后重新编译个Rom刷入手机。
改动如下:

然后在aosp目录执行

// 下面这两步每次打开终端都需要soruce build/envsetup.sh  lunch aosp_sailfish-userdebug// 仅编译framework模块mmm framework// 重新生成system.img镜像make snod

然后刷入手机,跟之前步骤一样。

adb reboot bootloaderfastboot flashall -w

重启手机,AOSP已经运行在我们手机上了。

看下ActivityManagerService的LOG,说明我们的改动生效了。

02-09 14:56:33.965  1359  1429 I ActivityManager: Retrieving available item: com.android.server.am.ActivityManagerService$ProcessChangeItem@3f4263102-09 14:56:34.213  1359  1429 D ActivityManager: activityIdleInternalLocked: Callers=com.android.server.am.ActivityManagerService.activityIdle:7819 android.app.IActivityManager$Stub.onTransact:2751 com.android.server.am.ActivityManagerService.onTransact:3282 android.os.Binder.execTransact:74002-09 14:56:34.678  1359  2071 I ActivityManager: Retrieving available item: com.android.server.am.ActivityManagerService$ProcessChangeItem@3f42631

更多相关文章

  1. 没有一行代码,「2020 新冠肺炎记忆」这个项目却登上了 GitHub 中
  2. 一款常用的 Squid 日志分析工具
  3. 分支和循环(二)(零基础学习C语言)
  4. GitHub 标星 8K+!一款开源替代 ls 的工具你值得拥有!
  5. RHEL 6 下 DHCP+TFTP+FTP+PXE+Kickstart 实现无人值守安装
  6. Linux 环境下实战 Rsync 备份工具及配置 rsync+inotify 实时同步
  7. 5个顶级的Android开发库
  8. Download Android(安卓)Source Code in Windows
  9. Android(安卓)WebDAV 客户端实现

随机推荐

  1. android studio下module 未指定output pa
  2. android 访问移动网络时的wap代理设置
  3. Android随笔之标题栏的去除以及自定义
  4. Android(安卓)界面刷新
  5. android之File,Saving State,Preferences
  6. Android学习开发之路~~系列教程
  7. Android(安卓)对话框AlertDialog和AlertD
  8. Android屏幕解锁和点亮
  9. android将发送短信写入发件箱
  10. [置顶] Android如何保证一个线程最多只能