
Android
嵌入式Linux,
BSP软件工程师
展开
-
android 音频加载hal so调试
1. 整个加载流程图2. 加载hal so的代码位置AudioFlinger.cppaudio_module_handle_t AudioFlinger::loadHwModule(const char *name){ if (name == NULL) { return AUDIO_MODULE_HANDLE_NONE; } if (!settingsAllowed()) { return AUDIO_MODULE_HAND原创 2021-06-03 15:36:59 · 793 阅读 · 0 评论 -
ota升级命令
@echo update system through internet potroute delete 192.168.30.0route add 192.168.30.0 mask 255.255.255.0 192.168.10.1 metric 1adb\adb.exe connect 192.168.30.254:5555set result=%ERRORLEVEL%if %result% equ 1 (@echo ------update fail---------- p原创 2021-04-30 15:52:30 · 711 阅读 · 1 评论 -
使用monkey命令来打开一个app
Knowin inSight10:/ # pm packge listadb shell monkey -p com.aispeech.player.eng -v 1原创 2021-04-19 17:12:30 · 1824 阅读 · 0 评论 -
android性能测试工具之dumpsys
补记: MAT(memory analyzer tool )是google 推荐的进行内存使用量分析的工具. 功能全面而强大!!!首先看一下dumpsys有哪些功能:dumpsys 用来给出手机中所有应用程序的信息,并且也会给出现在手机的状态。dumpsys [Option]meminfo 显示内存信息cpuinfo 显示CPU信息account 显示accounts信息activity 显示所有的activities的信息window 显示键盘,窗口和它们的关系wifi 显示wifi信息转载 2021-04-15 15:02:08 · 720 阅读 · 0 评论 -
MTK8167平台音频播放日志
========================================================12-04 10:52:04.368 512 599 I PowerWrap: PowerHal_TouchBoost12-04 10:52:04.369 254 269 I libPowerHal: 20: set freq: 1300000, freq max:150000012-04 10:52:04.370 254 269 I libPowerHal: 20:原创 2020-12-08 20:09:03 · 1725 阅读 · 0 评论 -
Android apk签名
set in_pk8="D:\MTK\key\security\platform.pk8"set in_x509_pem="D:\MTK\key\security\platform.x509.pem"set out_name=out.keystore.platformset out_alias="is05"set storePassword=12345678set keyPassword=12345678set tmp_file1=platform.p12set tmp_file2=pla原创 2020-07-23 18:15:14 · 609 阅读 · 0 评论 -
用bat-抓取android日志
@echo off@clsset filename=%date:~0,4%%date:~5,2%%date:~8,2%%time:~0,2%%time:~3,2%%time:~6,2%set postfix=debug.logset debugfilename=%filename%-%postfix%adb shell logcat -G 4Madb shell logcat > %debugfilename%pause原创 2020-06-19 17:04:03 · 792 阅读 · 0 评论 -
Android 9.0 修改音量等级
weiqifa@bsp-ubuntu1804:~/mt8167s-9.0-sdk$ git diff frameworks/base/services/core/java/com/android/server/audio/AudioService.javadiff --git a/frameworks/base/services/core/java/com/android/server/audio/AudioService.java b/frameworks/base/services/core/java原创 2020-05-18 14:10:41 · 2343 阅读 · 0 评论 -
camera-open-log
--------- beginning of main04-22 17:21:51.865 316 4209 I ADB_SERVICES: post waitpid (pid=4208) status=000004-22 17:21:51.865 316 316 I ADB_SERVICES: for fd 32, revents = 201104-22 17:21:51.8...原创 2020-04-23 23:01:14 · 6503 阅读 · 0 评论 -
暴力修改SElinux权限
平台版本 SDK版本 版本名称9.0 28 Pie (Android P)8.1 27 Oreo(Android O)(奥利奥)8.0 26 Oreo(Android O)(奥利奥)7.1 25 Nougat(Android N)(牛轧糖)7.0 24 Nougat(Android N)(牛轧糖)6.0 23 Marshmallow(Android M)(棉花糖)5.1 22 Lol...原创 2020-04-23 11:34:14 · 1595 阅读 · 1 评论 -
Android系统root破解原理分析
上一篇文章Android adb 源码分析理论基础root破解过程的终极目标是替换掉系统中的su程序。但是要想替换掉系统中su程序本身就是需要root权限的,怎样在root破解过程中获得root权限,成为我们研究的重点了。下面我们先清点一下我们需要破解系统情况,假设需要破解的Android系统具备如下条件: 办法1、可以通过adb连接到设备,一般意味着驱动程序已经安装。 ...原创 2018-10-24 11:53:51 · 1558 阅读 · 0 评论 -
Android ADB 源码分析(三)
前言之前分析的两篇文章Android Adb 源码分析(一)嵌入式Linux:Android root破解原理(二) 写完之后,都没有写到相关的实现代码,这篇文章写下ADB的通信流程的一些细节看这篇文章之前,请先阅读Linux的SOCKET编程详解 - 江召伟 - 博客园对socket通信有简单的了解1、ADB基本通信理解:(1)adb的本质,就是soc...原创 2018-10-26 22:49:40 · 2073 阅读 · 0 评论 -
Android Flash分区大小查看
正常的8G Flash有多少可以用的这样算吧:硬盘和U盘厂家的算法:8GB*1000=8000MB*1000=8000000KB*1000=8000000000B电脑系统的算法:8000000000B/1024=7812500KB/1024=7629.4MB/1024=7.45GB所以U盘在7.4G左右是正常的,是电脑系统算法和厂家算法的区别而已,所有硬盘和存储设备都是这样算的。一种是1...原创 2018-10-26 15:32:30 · 4253 阅读 · 0 评论 -
让Android Studio支持系统签名(证书)
有时候,我们开发的apk需要用到系统权限,需要在AndroidManifest.xml中添加共享系统进程属性: android:sharedUserId="android.uid.system" android:sharedUserId="android.uid.shared" android:sharedUserId="android.media"这时候apk的签名就需要是系...原创 2018-11-01 10:13:52 · 2624 阅读 · 0 评论 -
Android Adb 源码分析
扭起屁股得意洋洋最近,我负责的项目因为临近量产,把之前的userdebug版本关闭,转成了user版本,增加selinux的权限,大家都洋溢在项目准备量产的兴奋和喜悦之中不能自拔谁知,好景不长,user版本发布之后,各种bug接踵而来,但是因为user版本权限的原因,我们之前保留在/data/logs/下面的日志不能pull出来,定位问题非常困难 不得不想到的解决方案第一个办法...原创 2018-10-23 17:39:03 · 3944 阅读 · 1 评论 -
Android内核学习笔记
0、android系统启动《Android系统启动流程 -- bootloader》《The Android boot process from power on》《Android 启动过程介绍》《Android培训班(86)内核运行之前的引导程序》 这是一系列文章《Android 分区挂载》 1、init《深入理解android 卷1》 第3章 深入理解init...原创 2018-10-21 22:57:44 · 620 阅读 · 0 评论 -
RK方案 manifest.xml编译问题,并解决方案
编译出错 Install: out/target/product/rk3288/system/priv-app/TeleService/TeleService.apk Install: out/target/product/rk3288/system/priv-app/Telecom/Telecom.apk Install: out/target/product/rk3288/syst...转载 2018-10-23 15:59:49 · 2224 阅读 · 1 评论 -
Service rootservice does not have a SELinux domain defined
新增一个SELINUX启动的时候出现问题新增如下service rootservice /system/bin/rootservice user root group root disabled oneshoton property:sys.boot_completed=1 start rootservice具体补丁请查看文件链接:https:...原创 2018-10-18 15:49:04 · 1958 阅读 · 0 评论 -
Android Jni 例程
1.Jni的作用Java是一种比较高级的语言,Java调用c库,调用c++库是必不可少的,所以Jni就应运而生了。NDK:NDK是Native Development Kit的缩写,是Google提供的一套工具集,可以让你其他语言(C、C++或汇编)开发 Android的 JNI。NDK可以编译多平台的so,开发人员只需要简单修改 mk 文件说明需要的平台,不需要改动任何代码,NDK就可以帮...原创 2018-10-18 10:44:47 · 541 阅读 · 0 评论 -
内存泄露Lowmemorykiller分析
01 前言最近疫苗事情非常火热,这件事情让我对刘强东有点刮目相看,我们需要更多的人关注曝光此类问题 02 正文Android Kernel 会定时执行一次检查,杀死一些进程,释放掉内存。Low memory killer 是定时进行检查。Low memory killer 主要是通过进程的oom_adj 来判定进程的重要程度。这个值越小,程序越重要,被杀的可能...原创 2018-07-23 20:21:31 · 2166 阅读 · 1 评论 -
Bootloader传参数到Kernel
01 前言这几天一直在考虑准备写点什么东西,本来想介绍下文件系统,不过文件系统是概念性的东西比较多,我自己也是看书摘抄的多,Bootloader传参数到Kernel,这个在我们开发中会经常遇到。bootloader有什么用?我突然想到,小时候去河里炸鱼,我们要自制鱼雷,把烟花里面的火药拆出来放到一个玻璃瓶里面,然后接上雷管露在外面,用泥封住瓶口,再用一些饭来吸引鱼,当我们看...原创 2018-09-03 17:22:26 · 1426 阅读 · 0 评论 -
Android Input子系统-含实例源码
1 Input子系统作用Android很多外设都是用到input子系统,比如touchscreen,键盘等都需要用到 input子系统,输入设备都可以归纳为input子系统,像我们定制类比较多的,很多 需要用到输入子系统,比如一键打开相机,一键唤醒等。2 Android input子系统框架input框架讲解最好的一篇文章 https://blog.youkuaiyun.com/mmmccc...原创 2018-09-07 13:51:53 · 1366 阅读 · 0 评论 -
触摸屏响应速度性能分析
前言上一篇文章介绍了Android Input子系统,Touchscreen是典型的输入设备,有个大神同事专门做过TP,写了一篇文章总结了下,但是格式方面不是很好,我再整理一下发出来。 Android Input子系统介绍 https://mp.weixin.qq.com/s?__biz=MzA5NTM3MjIxMw==&mid=2247484112&idx=1&s...原创 2018-09-09 20:29:20 · 4525 阅读 · 1 评论 -
Linux Android 常用shell命令汇总 不断更新
01 前言Linux shell命令应该算是非常入门的东西,但是实际上在使用的时候,会遇到各种各样的问题,前几天我在我们的项目上需要做一个功能,根据进程名字杀死这个进程,下面是过程 1、我们正常需要的操作是 ps |grep xxx kill -9 xx2、kill命令是常用的,但是用killall命令会更快 killall -9 xxx3、令我困扰的是我用的那个没有kil...原创 2018-09-06 15:30:11 · 1176 阅读 · 0 评论 -
adb 抓取日志到指定文件,文件命名为当前电脑时间
需求产生原因我们保存日志的时候,需要把日志文件名命名为当前的系统时间,方便我们以后查看日志。命令如下adb logcat > "%date:~0,4%-%date:~5,2%-%date:~8,2% %time:~0,2%-%time:~3,2%-%time:~6,2%.txt"命令解析输出为:2016-11-09 15-40-16.txt说明:在windows 的cmd命令...原创 2018-10-12 15:11:56 · 3906 阅读 · 0 评论 -
openwrt 音频开发
1、Linux 音频架构图音视频的好坏 直接影响 产品体验2、音频架构图层次说明openWRT 采用 ALSA 层次图,如下Application: 上层应用 主要调用alsa-lib 中的接口 实现业务逻辑。使用alsa-util中aplay,arecord,amixer,speaker-test进行相关测试。 HAL层 : 移植alsa-lib 和 alsa-utils....原创 2018-10-30 19:30:19 · 2310 阅读 · 0 评论 -
Android.mk中添加宏定义
在Boardconfig.mk中添加一个IMAGE_FOR_FACTORY_TEST:= true由于Boardconfig.mk和各目录的Android.mk是相互关联的所以我们可以在Android.mk 中添加一个ifdef IMAGE_FOR_FACTORY_TEST LOCAL_CFLAGS += -DFACTORY_TESTendif...原创 2018-11-01 14:07:43 · 4634 阅读 · 0 评论 -
android 7.1 apk的systemuid和系统应用Setting相同导致开机找不到库的问题
前言Android apk加载机制这就是我最近在解决的一个问题,32位的apk可以用32位的库,那64位的apk可以用64位的库,如果我想64位的apk同时使用32和64位的库呢?android加载so文件的机制apk在安装的过程中,系统就会对apk进行解析根据里面so文件类型,确定这个apk安装是在32 还是 64位的虚拟机上,如果是32位虚拟机那么就不能使用64位so,如果是64...原创 2019-03-13 00:46:12 · 2954 阅读 · 0 评论 -
Android 7.1 32位apk导致的系统库找不到问题
出现问题因为我们安卓7.1系统的应用都是64位的APK,我们自己开发的应用是32位的APK,这样在启动的时候,就大概率的出现库找不到的问题。错误的日志如下:Line 440: 03-12 10:48:39.620 634 634 W PackageManager: Instruction set mismatch, PackageSetting{1e08467 com.evergra...原创 2019-03-12 15:18:26 · 2652 阅读 · 0 评论 -
Android 7.1 32位apk导致的系统库找不到问题
出现问题因为我们安卓7.1系统的应用都是64位的APK,我们自己开发的应用是32位的APK,这样在启动的时候,就大概率的出现库找不到的问题。错误的日志如下:Line 440: 03-12 10:48:39.620 634 634 W PackageManager: Instruction set mismatch, PackageSetting{1e08467 com.evergra...原创 2019-03-12 15:18:26 · 9111 阅读 · 2 评论 -
android 7.1 apk的systemuid [2]
1上周发的一篇文章《android 7.1 apk的systemuid和系统应用Setting相同导致开机找不到库的问题》,然后有个小伙伴找我讨论了,觉得自己的脑洞了打开了很多,所以针对这个问题再次做一次总结,如果大家有好的建议也可以在文末留言。2先说一个命令 adb shell dumpsys package p > dumpsys_p ,这个命令可以查看apk的一些状态,包括apk...原创 2019-03-19 20:07:31 · 1750 阅读 · 0 评论 -
[RK3399 Android7.1] 开启保存上一次重启前日志
保存上一次重启前日志的必要分析死机的情况需要我们把上一次不能及时抓取的日志拿到是非常关键的,这个方法非常有利于我们分析内核panic和Android 死机的情况。开启的方法内核配置在dts文件里面添加下面两个节点ramoops_mem: ramoops_mem {reg = <0x0 0x110000 0x0 0xf0000>;reg-names = "ramoops_m...原创 2019-03-07 14:39:45 · 3360 阅读 · 0 评论 -
Android 7.1 bootchart触发后导致不断重启
android7.1 bootchartandroid 7.1的bootchart问题比较多,之前的版本还是比较稳定的,但是7.1之后出现了问题。由於7.0 bootchart.cpp中有bug, google在7.1上還沒有修复,当我们执行下面的命令后 adb shell 'echo 120 > /data/bootchart/start'手机会不断的重启。详情请参考:sys...原创 2019-03-07 11:37:09 · 898 阅读 · 0 评论 -
图文|Android 使用Thread 和多线程使用互斥锁
如何使用一个线程//定义一个线程private SendThread mSendThread = null; /** * 发送线程实体 */ private class SendThread extends Thread{ public void run() { } } //实例化线程 if (m...原创 2019-03-04 11:45:27 · 937 阅读 · 0 评论 -
adb 抓取日志
adb rootadb remountmkdir C:\Users\Administrator\Desktop\idpadlogC:cd C:\Users\Administrator\Desktop\idpadlogset h=%time:~0,2%set h=%h: =0%set m=%time:~3,2%set m=%m: =0%set y=%date:~0,4%%date:...原创 2019-03-14 10:33:04 · 1460 阅读 · 0 评论 -
Android studio JNI jni实例
1.Jni的作用 1.Jni的作用Java是一种比较高级的语言,Java调用c库,调用c++库是必不可少的,所以Jni就应运而生了。看了这个文章的同学,应该能够自己写个APK装在自己的手机里面吧,以前刚开始做android的时候,写了一个“地瓜手电筒”和一个音乐播放器。NDK:NDK是Native Development Kit的缩写,是Google提供的一套工具集,可以让你其...原创 2019-02-26 17:06:59 · 708 阅读 · 0 评论 -
adb 启动某个apk
有时候需要用apk来启动某个apkadb shell am start -n com.android.launcher3/com.android.launcher3.Launcher 具体查看~/rk3399_7in1/packages/apps/Launcher3/AndroidManifest.xml原创 2019-02-20 09:52:26 · 4874 阅读 · 0 评论 -
Android 亮屏速度分析总结
前面聊的最近在调试项目的亮屏速度,我们希望在按下power键后到亮屏这个时间能达到500MS以内,在Rockchip 3399和3288上面的时间都不能达到要求,因此引发了一系列的调试之路。计算按下power键到亮屏的时间Android 唤醒时间统计刚开始的时候,我只在android阶段统计时间,也能看到时间的差异,但是不是最准确的,我统计的时间日志如下01-18 09:13:...原创 2019-01-11 11:30:46 · 3345 阅读 · 0 评论 -
Android ANR 实例分析
什么事ANR以下四个条件都可以造成ANR发生:InputDispatching Timeout:5秒内无法响应屏幕触摸事件或键盘输入事件BroadcastQueue Timeout :在执行前台广播(BroadcastReceiver)的onReceive()函数时10秒没有处理完成,后台为60秒。Service Timeout :前台服务20秒内,后台服务在200秒内没有执行完毕。C...原创 2018-12-30 16:44:55 · 3923 阅读 · 0 评论 -
Android 充电LED控制
1、前言充电LED灯控制是Android设备的基本功能,主要用于提示设备的电池状态,充电状态,满电状态,低电状态,很多手机厂商还使用呼吸效果来显示,普通的低端设备会使用两个LED灯表示,红灯表示充电和低电,绿灯表示满电。 之前写的文章 《Android充电系统介绍》2、kernel 层控制充电LED代码位置主要在kernel/driver/power/power_supply_...原创 2018-12-14 10:36:36 · 2941 阅读 · 0 评论