自我蒸馏:抓取Android trace并分析cpu占用的Skill
分享一个Skill,它能自动抓取Android系统的Trace,并分析指定进程的CPU占用情况。 Skill链接:android-auto-trace 下面是一个简单的使用示例: 帮我分析下进程com.test.agentdemo的cpu占用情况 首先通过已连接的Android设备调用Perfetto抓取Trace,触发命令中可指定抓取时长及自定义Trace Tag。 抓...
分享一个Skill,它能自动抓取Android系统的Trace,并分析指定进程的CPU占用情况。 Skill链接:android-auto-trace 下面是一个简单的使用示例: 帮我分析下进程com.test.agentdemo的cpu占用情况 首先通过已连接的Android设备调用Perfetto抓取Trace,触发命令中可指定抓取时长及自定义Trace Tag。 抓...
近期在看Android上的某个新特性,需要自行搭建环境编译镜像,记录下折腾过程。 在Android模拟器上调试apk是很方便的,调试Framework就没那么方便了。本文介绍如何在模拟器上调试Framework。由于手头资源受限,我的调试环境如下: Ubuntu 20.04上下载AOSP源码,交叉编译arm64镜像 Mac M4 Pro上运行模拟器加载自行编译的镜像 1. 下...
你有没有好奇过,ChatGPT 是怎么查天气、做计算的?背后的秘密就是“工具调用”。本文将带你了解工具调用的过程。 1. 原理 现代 AI Agent 开发框架(如 LangChain、AgentScope)通常提供开箱即用的 Agent 类,比如 ReActAgent。前缀 ReAct 代表 Reasoning + Acting,即推理与行动: 推理就是指调用大模型分析问题 ...
Android开发中,如果要调试预装service,有两种方式: 将apk打包到系统镜像中,重新刷机 将现有系统的rootfs remount成可读写的,然后把apk push到/system/priv-app/目录 本文介绍如何remount Android模拟器。 不知道从哪个版本开始,Android模拟器默认不允许remount了。即使能adb root也不行,会报下面...
本文内容涉及两种Agent开发模式的对比,仅代表个人观点。 不同的开发模式有不同的应用场景,并不存在绝对的优劣之分。 1. 背景 Dify和LangChain都可以用来开发Agent,但它们在设计理念和使用场景上有显著差异: Dify的特点是低代码、可视化,通过拖拽相关组件拼搭业务(很像Scratch少儿编程),适合非技术人员快速落地想法; LangChain是面向开发者的模块...
近期发现一个现象,某些在Linux平台能正常运行的程序,移植到Android上会crash,分析这些crash后发现还真是程序自身的问题。 看来不是Android没事找事,而是Linux纵容了这些潜在的Bug。 先看个例子,示例程序中有个明显的踩内存操作: #include <stdio.h> #include <stdlib.h> int main() { ...
最近被性能组同学盯上了,说我负责的一个基础模块在某硬件平台上,开机阶段有个线程cpu占用较高,需配合调查。 最终发现,系统中的libuv版本较老,特定场景下函数uv__async_spin会长时间空转,消耗较多cpu;新版本的libuv对此做了优化,同样场景下cpu占用时长降幅高达50%以上。 libuv v1.40.0版本引入该问题,v1.45.0修复该问题。 1. 背景 1.1 li...
正常情况下,进程收到SIGQUIT信号会生成coredump然后退出。但在Android系统中,SIGQUIT有特殊用途:用来dump线程状态/调用栈。 注:本文内容基于android-14.0.0_r74。 1. 背景 近期发现一个问题,执行bugreportz收集信息的时候,系统中有几个应用会退出,退出原因是收到了SIGQUIT信号。 查看Android源码发现,bugrepor...
谈到智能指针,大家首先想到的肯定是std::shared_ptr,其实Android binder中也实现了一套智能指针sp/wp,原理类似,也是基于引用计数。Android之所以自己搞一套,估计是因为当时的C++标准还不完善。 我司的基础库中也有一套自研的智能指针,和Android中的实现类似。之所以写这篇文章,是因为最近发现这里面隐藏多年的一个bug:特定场景下weak_ptr虽然能提...
本文主要介绍HaloOS通信中间件vbslite,代码版本tag_V1.0.0_20250721,运行在Ubuntu 20.04上。 1. 代码规范 2. 线程模型 3. 数据收发流程 4. 内存使用情况 4.1 拷贝次数 4.2 内存预分配 5. 总体观感 1. 代码规范 如果要打造一个良性的开源社区,方便大家协...