AOSP Hook API


最近对安卓API进行源码Hook,稍微记录一下操作流程,不过我是直接在别人已经设置好的环境下进行修改的,所以AOSP的环境和编译设置别人都已经帮我搞好了,其实没有什么困难的步骤。

之后有必要研究一下,编译流程。

AOSP 编译

API Hook

其实就是Java代码,我们的方式是在源码中API调用的地方打印log,然后实际动态测试时不断检测log的生成。

编译

修改好之后就是再编译,AOSP编译是增量编译,所以之后编译都挺快的。

1. 导航到Android源码树的根目录。
2. 执行环境设置脚本 source build/envsetup.sh。
3. 选择适合您目标设备的构建配置,如:lunch aosp_x86-eng
4. m -j35    //-j35 参数告诉make命令并行运行35个编译任务,这里根据实际修改是多少个编译任务


我们的指令是:
source build/envsetup.sh
lunch aosp_crosshatch-user   //表示user 模式,后续执行编译的时候有些App会根据不同编译模式选择编或者不编
m -j35  

编译好后,可以看到output的地址,把其中的img刷入手机中。
在这里插入图片描述

刷入镜像

刷机首先需要,能连接上设备。不然会< waiting for any device >。

fastboot flashall
< waiting for any device >
  1. 安装谷歌USB驱动
    我是使用Android Studio的SDK Manager安装的。
    在这里插入图片描述
    https://developer.android.com/studio/run/win-usb?hl=zh-cn
    也可以看谷歌官方这个文档获取驱动。

  2. 用驱动连接上设备
    https://blog.csdn.net/weixin_44183483/article/details/119330911
    这里参考了大佬的文档,但是略有出入。
    在大佬文档中,可以看到Piexl的设备,但是我的电脑里是检测不到设备的。在这里插入图片描述
    我的:
    在这里插入图片描述

实际上问题在于:
adb reboot bootloader
首先要让设备进入Fastboot的模式。可以尝试看看 fastboot device 能不能有设备
在这里插入图片描述
之后运行fastboot flashall

> fastboot flashall
< waiting for any device >
--------------------------------------------
Bootloader Version...: b1c1-0.4-7617406
Baseband Version.....: g845-00194-210812-B-7635520
Serial Number........: FLHG65002576010J8BG00658
--------------------------------------------
fastboot: error: ANDROID_PRODUCT_OUT not set

我因为把img拖到了其它电脑上,而新电脑没有配置ANDROID_PRODUCT_OUT ,出现这个报错,需要把ANDROID_PRODUCT_OUT 加入系统环境,地址就是存放img的地址。
再运行,就成了。
在这里插入图片描述

fastboot: error: could not read android-info.txt

在我过了许久又一次进行fastboot的时候,报了这个错误,我这里是因为ANDROID_PRODUCT_OUT 是上次那个地址,把它变为新的地址就行了。

猜你喜欢

转载自blog.csdn.net/m0_54352040/article/details/129770141