[Android] AOSP 开发并刷入Pixel

首先下载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.sh
lunch aosp_sailfish-userdebug
make clean; make -j8

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

adb reboot bootloader
fastboot 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。
主要是修改<sourceFolder><excludeFolder>标签,仅导入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 bootloader
fastboot flashall -w

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

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

02-09 14:56:33.965  1359  1429 I ActivityManager: Retrieving available item: com.android.server.am.ActivityManagerService$ProcessChangeItem@3f42631
02-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:740
02-09 14:56:34.678  1359  2071 I ActivityManager: Retrieving available item: com.android.server.am.ActivityManagerService$ProcessChangeItem@3f42631
  • 1
    点赞
  • 14
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值