- 博客(34)
- 资源 (9)
- 收藏
- 关注
原创 Android日志系统的调研
在某个车机(Android)项目上经常发现logd进程的CPU在3K以上,内存高的时候达到320MB,需要继续优化。另外,需要排查一下为什么会丢日志。
2025-04-08 10:20:00
13
原创 开启zram后的性能差异测试
com.example.gaojianwu.emptywithactionbar冷启动过程中,在system_server进程的android.anim线程中,同样的逻辑,场景1比场景2耗时长,但是都没有出现cpu调度(如runnable)问题,再结合SwapFree的变化差异,耗时差异主要来自对内存的操作上(直接访问ram和访问zram)。现在绝大多数项目都没有开启zram,但面对客户需要减少物理内存的需求,打开zram是一个内存性能优化的选项之一,那么,开启zram后,性能会弱化多少?
2025-04-08 10:02:05
12
原创 性能指标系统资源(CPU/RAM)相关标准
从智能座舱的整机性能角度出发,需要回答如下问题:1、系统资源(CPU、内存、GPU等)都是有限的,前期项目评估和项目开发过程中的性能监测等过程中,系统资源是如何规划的?如果不规划,这些资源肯定会用完,用完或者用到一定程度时,肯定会产生性能问题,到底能用多少?2、如何形成一套客户认可且能客观反映智能座舱系统实际性能的方法论?
2025-04-08 09:45:53
35
原创 AVM/RVDC快起法规梳理
AVM快起需求有多种法规(比如R158、FMVSS111等),测试方法也没有一个具体的可以量化的规范,此文努力梳理这些痛点,希望能够统一这类问题的测试规范。
2025-04-08 09:25:16
4
原创 Excessive CPU
Android系统会监控后台应用的CPU占用情况,如果其超过一定标准,则会对其进行kill处理。有类似下述关键字的日志输出。ActivityManager:Killing .... : excessive cpu
2025-04-08 09:07:18
4
原创 Android native进程(oom_score_adj=-1000)查杀方案
在某个项目中,Android系统的native进程存在内存泄漏,但是无论是用户态的lowmemorykiller还是内核态的Out of Memory都不会查杀该类进程,由此导致系统内存吃紧和异常卡顿。oom_score_adj是-1000,属于进程优先级最重要级别,Android用户态的lmk机制不会主动查杀它,内核态中的OutOfMemory也不会查杀这类进程,所以,这类进程如果存在内存泄漏,对系统而言,将是非常危险的,因为几乎没人会主动查杀它。https://elixir.bootlin.com/li
2025-01-17 16:50:05
74
原创 system_server_lowmem真的是内存不足吗?
Android系统中的system_server_lowmem真的表示系统的内存遇到瓶颈了吗?以及遇到这类日志该如何分析系统的内存,本文会回答这个问题。
2024-12-05 09:20:46
186
原创 systrace系列文章02-systrace的采集
用systrace来分析Android的性能问题,这是每一位从事性能优化的研发人员必不可少的技能之一。性能Trace分为三类,分别是systrace、atrace和perfetto,本文将提供相关的采集方法和脚本。
2024-05-15 08:56:53
208
原创 Android进程和线程CPU策略调整方式
本文介绍了如何调整CPU分组(cgroup/cpuset)和线程的CPU调度策略(包括线程优先级)
2024-02-29 09:55:10
839
1
原创 lmkd的内存清理机制简介
本位初步介绍了Android系统lmkd的清理查杀机制,但还未具体介绍其中查杀的策略,但从源码来看,该策略主要还是针对可感知进程或者更不重要的进程的一些查杀。
2024-01-26 10:19:19
356
原创 解决PyInstaller打包exe后无法运行TraceProcessor的问题
PyInstaller打包成exe文件后,无法解析TraceProcessor,报错Exception: Trace processor failed to start.
2023-11-22 14:07:12
289
原创 解决Android12 USAP Failed to write PID EPIPE (Broken pipe)的问题
在Android12版本上开启USAP功能后,偶现打开应用时出现持续十多秒的黑屏现象,从log中查看,有相关日志Failed to write PID (6621) to pipe (51): write failed: EPIPE (Broken pipe)
2023-11-02 15:44:57
613
原创 性能优化之工具篇-如何获取systrace
分析性能问题时比较常用的工具之一是systrace,Android原生提供了这样的工具,本文将介绍如何使用该工具捕捉性能日志
2023-08-23 09:50:10
309
原创 车机上的LMK优化
LMK是Android原生kernel中的一种kill应用进程的机制,其原理是当系统可用内存不足某些阈值时,开始kill一些优先级较低的进程。但有时候会遇到cache内存明明比limit的内存大,却依然还是进行了kill动作。
2023-07-03 21:21:10
321
1
原创 Android调整应用的cpuset方案
利用Android Process.java类提供的setProcessGroup方法。在ActivityManagerService.java的构造方法中初始化上述工具类对象。通过命令查看对应进程的cpuset组,如。设置某个进程的cpuset组。
2023-07-03 21:05:35
732
1
原创 systrace系列文章01-systrace分析问题的理论基础
在分析Android的性能问题时,systrace是最常用的工具,要想熟练地使用该工具并快速准确的分析相关问题,需要具备一定的理论基础。
2023-05-09 17:12:40
341
1
原创 RV1126上使用OnVif协议操作IPC
使用OnVif协议操作IPC,主要有如下功能:(1)能否主动发现局域网内连接的IPC设备并获取该设备的基础信息;(2)获取IPC设备的RTSP流地址;(3)控制PTZ云台,如左右、变倍聚焦等
2023-05-04 21:38:49
904
原创 中控混音方案
中控系统存在收音机、导航、电话、语音交互等多种应用输出音频的场景,在不同场景下可能存两种以上的声音同时输出,如果不对其进行协调处理,会出多种音频交杂,极其影响用户体验,例如:在播放音乐时,播放导航提示,如果音乐不进行降音或静音,会导致导航音听不清。针对此类情况,将对声音应用类型行进行分级处理,在两种以上音频同时输出时对低优先级音频进行静音、mute等动作,进一步提升不同场景下的用户体验。
2023-05-04 21:29:38
190
原创 pyinstaller生成的exe找不到Module或者配置文件等问题解决方案
解决python工程生成的exe文件在运行时出现各种找不到module、配置文件等错误,可以很方便的将我们的python工程生成windows可执行的exe文件,使用方的电脑上无需安装python的相关环境即可正常运行该exe程序。
2023-04-28 11:19:26
3898
原创 RV1126上实现OnVif协议操作IPC并RTSP拉流
RV1126是一款瑞芯微(RockChip)旗下的视频编解码芯片,本次项目中使用的这款芯片基于Linux系统,使用buildroot编译工具。项目中需要使用到IPC,因此不可避免的离不开OnVif协议,同时,在通过OnVif协议获取到IPC的RTSP流地址后,使用Ffmpeg拉流操作。
2023-03-10 15:57:25
1810
1
原创 编译Android版本的ffmpeg
Ffmpeg的下载链接Ffmpeg官网可以直接下载最新的版本:https://ffmpeg.org/如果要下载旧的版本,可进入该链接,往下拉即可看到各个版本:Download FFmpeg编译Android版本的Ffmpeg本文下载的是ffmpeg-3.2.16,同时考虑到Ffmpeg的源码中没有libx264,因此还需要下载libx264的源码,下载链接为:x264, the best H.264/AVC encoder - VideoLAN编译libx264环境:ubuntu16
2022-01-11 08:32:49
1354
原创 彻底解决Battery Historian上传zip后没有submit按钮的问题
何为Battery HistorianBattery Historian是Android提供的用于分析功耗问题的工具,它有如下适用场景:显示进程从什么位置以及通过何种方式消耗电池电量。 识别系统为了延长电池续航时间可能会延迟甚至移除应用中的哪些任务。具体详见官网:https://developer.android.google.cn/topic/performance/power/setup-battery-historian?hl=zh_cn怎么安装Battery Historian具
2021-09-03 15:29:34
6044
2
原创 Android机顶盒M1上ANR问题的排查方法和应对方案
1. ANR的理论背景1.1 ANR的定义ANR是Application Not Response的英文缩写,即应用程序无响应。当某个应用(非visible)出现ANR时,会在主界面中弹出一个“应用无响应”的弹出框,严重影响用户体验。ANR是Android自身消息调度逻辑中的一套针对应用的耗时检测机制,每一个应用都是依靠UI主线程去绘制画面从而展现给用户,但是,这其中就可能出现某些应用的UI主线程中由于逻辑太过复杂或者UI主线程未能在有限的时间内处理完四大组件(Activity、Serv..
2020-12-02 14:44:13
3883
原创 persistent=true的应用在覆盖安装后出现闪退
问题描述2020-11-20上午发现versionCode=2130923534版本的com.xxx.ota应用的静默升级存在600多次crash,经过分析,主要来自(1)java.lang.ClassCastException: com.xxx.ota.biz.binder.OtaUpdateBinder cannot be cast to com.xxx.ota.biz.binder.OtaUpdateBinder(2)Caused by: android.content.res.Re
2020-12-02 14:39:20
860
原创 Ubuntu服务器搭建OpenGrok,阅读Android源码
OpenGrok是一个很好的阅读Android开源框架,通过在Linux服务器上搭建该框架,可以做到一处部署源码,多处阅读源码。下文主要介绍在Ubuntu中搭建OpenGrok的具体步骤。1、安装JDK环境这块无需介绍,网上有很多的参考方法2、安装Tomcat参考Tomcat官网https://tomcat.apache.org/3、安装和配置ctags这个很重要,它会直接决定OpenGrok的索引是否成功(1)查看exuberant-ctags版本信息:dpkg -l ..
2020-11-04 10:00:06
1233
原创 安卓开发环境的搭建和解决在Eclipse新建安卓5.1工程不能自动生成R文件的问题
1、安卓开发环境的搭建下载Eclipse4.4版本,解压之后即可打开Eclipse;下载最新版本的ADT,本文写作的时候,最新的版本是ADT23.0.6版本,然后在Eclipse中进行加载,具体的方法如下图所示(下图是我的已经加载好了的截图),在Work with中加载ADT的路径,然后点击Next-->Finish,让Eclipse自动下载和安装:获取Android的SDK,由于go
2015-10-10 12:50:11
1102
Android apk反编译工具
2023-10-11
RV1126上使用OnVif协议操作IPC
2023-05-04
nginx-rtmp.tar.gz
2021-09-08
Go1.17-Battery-Historian.tar.gz
2021-09-03
reboot_test.rar
2020-11-04
sendEmailTest_sina.py
2020-05-12
CameraWindow.java
2020-05-12
用C语言实现的区间操作程序
2015-05-21
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人