![](https://img-blog.csdnimg.cn/20190918140012416.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
3.2.1 Android系统经验
文章平均质量分 75
3.2.1 Android系统经验
vimer-hz
书是越读越薄的
展开
-
lighteffect架构优化详细设计文档
2]将framework和vendor目录下的LedManager类统一,通过aidl增加接口供apk和系统调用。原因:由于系统中兼容了lighteffect和lighteffect2,写代码时只记了一个,出现代码bug。强制关闭LED时,由于疏忽只杀了lighteffect进程,忘记杀lighteffect2进程。从图1-1我们可以看出,整个系统对于LED的控制比较混乱,很容易出现灯效控制混乱的结果。最后,Apk可直接跨过Framework层调用Hal层的lighteffect控制灯效。原创 2023-04-28 20:38:34 · 776 阅读 · 0 评论 -
qcom sdm660刷机
5. 烧机的rom并不包含改动的LOG,重新push camera.sdm660.so测试。QFIL的configure里设置选择emmc对应烧的是falt build!如果手机rom download succeed,仍不能正常开机,双清下缓存!1. 把相关.elf .img文件拷贝从S86611AA1下拷贝到当前目录下。电源键+音量上下键同时按,重启时电源键+音量上下键同时按。(1)软件选择flat build,选择ddr。3. 执行flash脚本。(3)download后重启手机。原创 2023-04-25 21:55:38 · 668 阅读 · 0 评论 -
通过Android反编译分析问题根因
问题:喜马拉雅初次进入直播功能时显示无网络连接;播放音频时,播放界面下方内容无法加载,显示网络未连接。getActiveNetworkInfo应该是ConnectivityManager的接口!而从app市场下载的ximalaya.apk版本:6.6.66.3。(1)软件包使用ximalaya.apk版本:6.6.48.3。grep "网络不可用,请检查网络设置" ./ -R -n。查看文件import:就知道用到平台哪些代码了!toast显示"网络不可用,请检查网络设置"反编译代码里一堆a,b,c...原创 2023-04-24 23:54:41 · 419 阅读 · 0 评论 -
atrace和systrace的基本使用方法
atrace和systrace的基本使用方法原创 2022-08-02 22:46:50 · 3430 阅读 · 0 评论 -
Android Input分析
1 Android Input系统框图图1 Android Input系统框图Android Input可以分为触摸屏事件,按键消息等。上层app的消息是通过WMS分发的,分发给当前的活动窗口。2 Android Input主要模块(1)WMS:管理窗口,收集和分发input事件(2)InputManager:接收和分发输入事件(3)EventHub:打开所有输入设备,对输入事件进行映射(4)InputReader:InputReader收集到input事件并进行判断处理(5)转载 2022-02-16 22:22:12 · 1852 阅读 · 0 评论 -
Android Sensor分析
1 Android Sensor系统框架Android Sensor系统框架如下:图1 Android Sensor系统框架图(1)SystemServer创建SensorService服务。(2)之后将SensorService服务添加到ServiceManager里。注意:ServiceManager管理的是SensorService服务不是SensorManager!(3)Android app通过SensorManager获取SensorService服务,SensorMana.转载 2022-02-16 22:21:02 · 5492 阅读 · 0 评论 -
SystemServer服务和ServiceManager服务分析
1 SystemServer服务分析SystemServer是zygote启动的第一个Android服务进程,主要工作如下:(1)创建系统所有核心服务(2)将服务添加到ServiceManager中(3)将服务初始化1.1 SystemServer启动的服务(1)powerPowerManagerService:电源管理BatteryService:电池服务(2)ActivityManagerServiceActivity管理服务(3)PackageManagerService转载 2022-02-15 11:29:01 · 2439 阅读 · 0 评论 -
Android启动过程
1 Android启动过程(1)上电(2)bootloader在cpu内部,根据GPIO设置判断系统是从U盘还是flash启动,引导uboot启动。(3)uboot初始化外设,设置启动参数,根据参数引导linux kernel启动。(4)kernel初始化硬件,加载驱动,根据uboot参数启动系统。(5)Android挂载分区,创建目录,加载驱动,init守护进程,启动系统服务(ServiceManager,adbd等)。2 Android启动模式通过uboot来区分通过哪个转载 2022-02-14 16:00:20 · 1007 阅读 · 0 评论 -
Android.mk基本语法及示例
Android.mk基本语法及示例转载 2022-02-11 21:48:51 · 2481 阅读 · 0 评论 -
Android系统架构与分层
android系统架构与分层如下:图1 android系统架构与分层软件从底层到上层分为:Uboot,Linux Kernel和Android OS。1 Uboot将flash中的kernel搬到内存,引导kernel的启动;而cpu会引导uboot的启动,cpu中有一段固化的rom,可以从usb,sdcard,flash中引导uboot启动。2 Linux Kernel将底层硬件抽象为文件,向上提供接口。3 Android OS从底层到上层分为:3.1 H转载 2022-02-09 23:14:29 · 4256 阅读 · 0 评论 -
深入理解PackageManagerService
原文链接:https://blog.csdn.net/Innost/article/details/47253179本章主要内容:详细分析PackageManagerService1概述PackageManagerService是本书分析的第一个核心服务,也是Android系统中最常用的服务之一。它负责系统中Package的管理,应用程序的安装、卸载、信息查询等。图1展示了PackageManagerService及客户端的类家族。图1 PackageManagerServic...转载 2021-08-22 11:59:21 · 3003 阅读 · 0 评论 -
Android应用程序的线程消息循环模型(ActivityThread,HandlerThread,AsyncThread)
对于不定期的后台任务来说,有两种处理方式。(1)每当条件满足,就创建一个子线程来执行一个不定期的后台任务;当任务执行完毕后,新创建的子线程随之退出。(2)创建一个具有消息循环的子线程,每当条件满足时,就将一个不定期的后台任务封装成一个消息发送到这个子线程的消息队列中去执行;当条件不满足时,子线程因为消息队列为空而进入睡眠等待状态。Android采用第2种。Android应用程序线程的三种消息循环模型。(1)应用程序主线程消息循环模型(2)与界面无关的应用程序子线程消息循环模型(3)与界面相关的应转载 2021-08-13 23:11:16 · 589 阅读 · 0 评论 -
深入理解Surface系统
原文链接:https://blog.csdn.net/Innost/article/details/47208337本章主要内容· 详细分析一个Activity的显示过程。· 详细分析Surface。· 详细分析SurfaceFlinger。1 概述Surface是继Audio系统后要破解第二个复杂的系统。本章将集中精力打通Surface系统的“任督二脉”,这任督二脉分别是:· 任脉:应用程序App和Surface的关系。· 督脉:Surface和SurfaceFlinge...转载 2021-07-29 22:01:05 · 1732 阅读 · 0 评论 -
Android系统广播机制(Broadcast Receiver)
广播(Broadcast)是一种在组件之间进行消息传递的方式。这些组件可以运行在同一个进程中,也可以在不同的进程中。事实上,广播机制就是在Binder进程间通信的基础上实现的。那么,有了Binder通信Android系统为什么还需要广播机制呢?在Binder通信时,Client端在和Server端通信前要先获得Server端的一个代理。而在广播中,发送者是不需要直到接收者是否存在的,这降低了发送者和接收者之间的耦合度。所以Android系统需要广播机制。Android系统将广播接收者抽象为一种Broadc转载 2021-07-14 00:01:11 · 1994 阅读 · 0 评论 -
深入理解Audio系统
原文链接:https://blog.csdn.net/Innost/article/details/47208109本章主要内容·详细分析AudioTrack。·详细分析AudioFlinger。·详细分析AudioPolicyService。7.1 综述Audio系统是Android平台的重要组成部分,它主要包括三方面的内容:· AudioRecorder和AudioTrack:这两个类属于Audio系统对外提供的API类,通过它们可以完成Android平台上音...转载 2021-07-03 09:51:13 · 2262 阅读 · 2 评论 -
Android应用程序的消息处理机制(MessageQueue,Looper,Handler)
Android应用程序是通过消息驱动的。应用程序的每个线程启动时,会在内部创建一个消息队列,然后再进入到一个无限循环中。如果有新的消息需要处理,那么线程就会将它从消息队列中取出来处理;否则,线程进入睡眠状态,直到有新的消息需要处理为止。Android系统主要通过MessageQueue,Looper和Handler三个类来实现Android应用程序的消息处理。MessageQueue类用来描述消息队列,Looper类用来创建消息队列,进入消息循环;Handler类用来发送消息和处理消息。1 创.转载 2021-06-24 23:01:27 · 1064 阅读 · 1 评论 -
AudioPolicy流程分析
转载自:https://blog.csdn.net/Innost/article/details/6158960UML顺序图:AudioPolicy.svghttps://download.csdn.net/download/u012906122/19589078转载 2021-06-12 16:25:27 · 660 阅读 · 1 评论 -
AudioFlinger流程分析
转载自:https://blog.csdn.net/Innost/article/details/6142812转载 2021-06-06 17:36:05 · 1599 阅读 · 0 评论 -
AudioTrack流程分析
转载自:https://blog.csdn.net/Innost/article/details/6125779UML顺序图:AudioTrack.mdj转载 2021-05-30 23:35:13 · 1784 阅读 · 1 评论 -
Android代码分层调试
1 打印分层1 HYH_SnapdragonCamera:printDebug.printLine()2 HYH_frame_base_java:System.out.println( "HYH_frame_base_java: getPersistedString mKey:" + mKey);printLine(); 3 HYH_frame_base_jni:ALOGE("HYH_frame_base_jni: %s (line = %d)", __...原创 2021-05-25 23:14:53 · 339 阅读 · 1 评论 -
qcom sdm660 code编译
1 全编译1.source build/envsetup.sh2.lunch S88661AA1-userdebug3.make update-api4.make -j16编译问题:Communication error with Jack server (58), try 'jack-diagnose'修改如下:(1)\.jack-server\config.propertiesjack.server.service.port=8086jack.server..原创 2021-05-24 21:43:29 · 648 阅读 · 0 评论 -
解决vendor和frameworks‘libxxx.so already defined‘的编译问题
问题背景:vendor目录:sdm845_la2.0/caf/vendor/qcom/proprietary/chi-cdk/vendor/nodeframeworks目录:sdm845_la2.0/caf/frameworksvendor和frameworks目录下都有预编译模块libxxx,如何解决"libxxx.so already defined"的编译问题?1 同时打开frameworks和vendor下的预编译libxxx编译模块libxxx:source .原创 2021-05-24 21:11:40 · 1548 阅读 · 3 评论 -
Android.mk递归包含子目录
define recursive-makefiles $(eval RECURSIVE_MAKEFILES := $(shell find $(1)/ -type f -name Android.mk)) $(eval EXCLUSIVE_LIST := $(1)/Android.mk) $(filter-out $(EXCLUSIVE_LIST),$(RECURSIVE_MAKEFILES))endefLOCAL_PATH := $(call my-dir)include.原创 2021-05-23 21:49:21 · 1213 阅读 · 1 评论 -
android cpp层常用调试手段
cpp层加打印和打印调用栈原创 2021-05-22 22:23:55 · 732 阅读 · 1 评论 -
android java层常用调试手段
1 Java层加打印和打印调用栈Slog.e(TAG,"freeformWindowManagement: " + freeformWindowManagement);Log.e(TAG,"mHasFreeformWorkspaceSupport:" + mHasFreeformWorkspaceSupport);import android.os.Debug;Debug.getCallers(10);2 sleeptry{ Thread.sleep(200...原创 2021-05-22 22:22:43 · 507 阅读 · 1 评论 -
adb调试常用
1 adb shell dumpsys[1]adb shell dumpsys meminfoadb shell dumpsys meminfo <package_name>其中,package_name 也可以换成程序的pid,pid可以通过 adb shell ps 来查找下图是某个程序的内存使用情况:重点关注如下几个字段:(1)Native/Dalvik 的 Heap 信息具体在上面的第一行和第二行,它分别给出的是JNI层和Java层的内存分配情况,..原创 2021-05-22 18:21:54 · 1533 阅读 · 1 评论 -
adb logcat命令
[0 adb logcat --help]adb logcat --help-s:设置输出日志的标签, 只显示该标签的日志-f:将日志输出到文件(手机上)-v:设置日志的输出格式, 注意只能设置一项-g:查看日志缓冲区信息-G:设置日志缓冲区[1 adb logcat -s]adb logcat -s LogUtiladb logcat -s LogUti...转载 2019-12-24 17:24:30 · 1854 阅读 · 1 评论 -
adb remount失败,显示‘Read-only system push failed‘
1. adb root2. adb remount3. adb disable-verity4. adb reboot5. adb root6. adb remount原创 2019-12-02 22:59:20 · 606 阅读 · 1 评论 -
高通QFIL刷机:高通sdm845_la2.0用QFIL软件meta_build和flat_build刷机
[1 代码准备](i)amss_standard_oem:高通源码(ii)test_device:amss_standard_oem对应的二进制文件(高通已经编译)(iii)caf:高通源码对应的谷歌源码[2 编译源码]将amss_standard_oem/LINUX/android/vendor/qcom目录下的proprietary文件夹拷贝到caf/vendor...原创 2018-10-25 20:23:27 · 22083 阅读 · 13 评论