- 博客(88)
- 资源 (2)
- 收藏
- 关注
转载 AAOS里特有的车载事件定制CustomInputService
AAOS默认支持的自定义事件Code位于文件hardware/interfaces/automotive/vehicle/2.0/types.hal 中,App可以利用这些预设的事件Code进行监听和自定义处理逻辑。当然,Car OEM 厂商可以使用任意有符号的 32 位数值来扩展支持自定义输入HW_CUSTOM_INPUT的 CustomInputType 枚举范围,以支持更多的按键 Code,确保处理的范围符合实际的车辆按键需求。
2024-06-21 16:59:48
144
原创 Activity的startActivity()—热启动
根据Activity启动时自己所属的进程是否存在,可以将Activity的启动分为两种,根Activity的启动(应用进程未创建)和普通Activity(应用进程已经创建)的启动,两者的启动过程有很多重叠的部分的,根Activity的启动流程也可以认为是应用程序的启动流程。
2024-06-02 23:32:01
767
原创 源码编译framework.jar 并成功导入android studio 开发
以上是作用的具体moudle,想要配所有的模块,需要配置根目录的build.gradle。第二步app目录下的build.gradle。可以编译过,但是在AS里面爆红。
2024-04-26 15:36:52
806
1
原创 在android 源代码中 使用gradlew 编译android 模块
【代码】在android 源代码中 使用gradlew 编译android 模块。
2024-04-17 14:13:16
328
原创 surfaceflinger 四
通过以上章节的了解,APP的画面要显示到屏幕上大致上要经过如下图所示系统组件的处理首先App向SurfaceFlinger申请画布(通过dequeueBuffer接口),SurfaceFlinger内部有一个BufferQueue的管理实体,它会分配一个GraphicBuffer给到APP, App拿到buffer后调用图形库向这块buffer内绘画。
2023-07-08 01:42:53
285
原创 Android 画面显示流程三
这样应用完成了对画布的申请操作。在Android系统中每个Activity都有一个独立的画布(在应用侧称为Surface,在SurfaceFlinger侧称为Layer), 无论这个Activity安排了多么复杂的view结构,它们最终都是被画在了所属Activity的这块画布上,当然也有一个例外,SurfaceView是有自已独立的画布的,但此处我们先只讨论Activity画布的建立过程。接下来我们将从应用侧角度从山到下看一下应用所绘制的画面是如何使用到我们上面所设计的流程的。
2023-07-08 00:55:20
679
原创 Android 画面显示流程二
这不是多花费一次跨进程通信的时间吗?为什么设计成了这个样子呢?同样地,当SurfaceFlinger执行到releaseBuffer时,并不能代表HWC 已经完全完成合成工作了,很有可能它还在读取缓冲区的内容做合成, 但不妨碍releaseBuffer的流程执行,虽然HWC还在使用缓冲区做合成,但帧缓冲区的Slot有可能被应用申请走变成DEQUEUED状态,虽然Slot是DEQUEUED状态这时GPU并不能直接存取它,它要等代表着HWC使用完毕的releaseFence的signaled信号。
2023-07-07 16:59:13
830
1
原创 Android 画面显示流程一
DRM,英文全称 Direct Rendering Manager, 即 直接渲染管理器。DRM是linux内核的一个子系统,提供一组API,用户空间程序,可以通过它,发送画面数据到GPU或者专用图形处理硬件,也可以使用它执行诸如配置分辨率,刷新率之类的设置操作。原本是设计提供PC设备支持复杂的图形设。在DRM之前Linux内核已经有一个叫FBDEV的API,用管理图形适配器的帧缓存区,但不能用于满足基于3D加速的现代基于GPU的视频硬件的需求。
2023-07-07 14:28:46
671
转载 Android input系统中ANR的机制
问题1:如果在activity任意周期(onCreate,onResume等),同步执行耗时超过5s(ANR时间)的任务,期间不进行点击,那会触发ANR吗?答:不会。原因:ANR的条件是waitQueue 不为空,在activity启动过程,没有触发按键事件的分发,也就 自然不会调用ANR检查流程,即processAnrsLocked()问题2:如果在button点击的时候,在onClick回调同步执行耗时超过5s的任务。点击一次会触发ANR吗?点击2次呢,3次呢?
2023-06-08 11:29:23
759
原创 android开发之NDK配置开发
输入命令javah -jni com.example.mr5.jnidemo.JniUtil --------包名+类名。3、将CMake的安装路径添加到PATH环境变量,或将其添加到项目的local.properties文件中,如下所示。5、在local.properties的文件添加NDK的路径和SDK的路径。8、在build.gradle文件中ndk的模块。
2023-06-01 16:24:09
4987
转载 Android Framework层的JNI机制
概括的说,系统启动zygote进程时,会调用AndroidRuntime::start()方法,接着调用AndroidRuntime::startReg(),然后调用到了register_android_util_Log()这个方法。其实,jni.h是Android根据Java本地调用的标准写成的一个头文件,在它里面包括了基本类型(类型的映射),以及JavaVM,JNIEnv,jclass,jmethodID,jfiledID等数据结构的定义。接下来要分析的Log中JNI的使用,就在这个目录之中。
2023-05-24 11:23:26
484
原创 Linux进程同步机制-Futex
首先,同步的进程间通过mmap共享一段内存,futex变量就位于这段共享 的内存中且操作是原子的,当进程尝试进入互斥区或者退出互斥区的时候,先去查看共享内存中的futex变量,如果没有竞争发生,则只修改futex,而不 用再执行系统调用了。在编译2.6内核的时候,你会在编译选项中看到[*] Enable futex support这一项,上网查,有的资料会告诉你"不选这个内核不一定能正确的运行使用glibc的程序",那futex是什么?可见: futex是从用户态开始,由用户态和核心态协调完成的。
2023-05-22 18:28:32
1465
2
原创 android 源码framework中加入自定义服务
定义 ISelfManager.aidl 文件系统里面很多的aidl文件定义在android_7.1.1/frameworks/base/core/java/android/os下,所以我们需要做的就是参考其他的aidl,照样子写一个简单的ISelfManager.aidl在android_7.1.1/frameworks/base/core/java/android/os/目录下建立ISelfManager.aidl文件。代码如下:j``package android.os;interfac.
2023-04-03 14:13:01
604
原创 Input系统之APP建立联系
这里主要从三个角度对InputDispatcher与APP之间建立联系的过程 进行分析说明。这里首先用一张框架图来表示InputReader,InputDispatcher,WindowManagerService,与应用层之间的关系,如下所示:核心是socketpair机制,在系统层留下一个fd0,在通过binder进程间通信机制在应用层传递一个fd1,这样系统层的inputDispatcher和应用层的App间建立了一个联系。
2023-03-16 17:27:20
531
原创 Input系统之InputDispatcher
这里新增加了 按键视角部分,以按键的流程来解读整个IMS的数据流走向的框架。新增的派发数据流程截图如下。
2023-03-16 10:58:13
1186
原创 Input系统之InputReader
加入该键盘事件到mInboundQueue队列之前,mInboundQueue不为空,但此时用户按下Home键等需要切换APP的按键,在切换App时,新的App会把它的键盘消息接收通道注册到InputDispatcher中去,并且会等待InputReader的唤醒,因此,在这种情况下,也需要返回true,表示要唤醒InputDispatcherThread线程。2.通过processEventLocked()对事件处理,对于设备事件,此函数对根据设备的可用性加载或移除设备对应的配置信息。
2023-03-15 18:23:25
717
转载 storage/emulated/0路径下的File.listFiles返回值为null——android
storage/emulated/0路径下的File.listFiles返回值为null
2023-03-02 17:43:50
998
原创 android实现片段记忆
本地内存存取//存储sharedPreference数据private void saveCurrentdata(Context context,String filename,String brand,String device,String index,String weight,String version){ SharedPreferences.Editor editor = context.getSharedPreferences(filename,Context.MODE.
2022-05-15 15:22:08
331
转载 智能指针的详解
unique_ptr 是 C++ 11 提供的用于防止内存泄漏的智能指针中的一种实现,独享被管理对象指针所有权的智能指针。unique_ptr对象包装一个原始指针,并负责其生命周期。当该对象被销毁时,会在其析构函数中删除关联的原始指针。unique_ptr具有->和*运算符重载符,因此它可以像普通指针一样使用。#include <iostream>#include <memory>struct Task { int mId; Task(int id )
2021-12-06 18:46:58
185
原创 配置网络映射盘
1.在/etc/apt/sources.list 中配置可以下载的源*将原内容清空,复制以下内容到sources.list文本之中 deb http://10.130.32.45:8080/ubuntu/ bionic main restricted deb http://10.130.32.45:8080/ubuntu/ bionic-updates main restricted deb http://10.130.32.45:8080/ubuntu/ bionic universe
2021-11-18 10:22:40
902
原创 Activity的startActivity()从app调用到binder driver层在到system_server层的分析
链接: activity的startActivity调用流程概览-【需翻墙头】.链接: IPC的通信机制.链接: Binder和AIDL的原理.链接: Activity的启动流程 基于11.
2021-08-31 12:41:47
218
原创 配置repo的呕血制作
前提条件已安装Git已在部门Gerrit上添加SSH公钥已添加部门Gerrit权限下载Repo(1)打开Ubuntu终端,输入指令,使用Git clone的方式下载Repo工具。cd ~git clone ssh://<您的工号>@gerrit2.***.com:29418/repo这里是将Repo工具下载到了当前Ubuntu用户的home目录下。如果您是有经验...
2021-05-09 22:14:57
201
原创 Sepolicy学习(一)
sepolicy 规则介绍sepolicy的规则针对的是linux系统中的进程和文件。进程是主动的,而文件是被动的。所以有对应的进程的规则和文件规则,分别定义进程的合法行为和文件被访问的权限。SELIUNX中,每个对象(进程和文件)被赋予安全的属性。SContext是一个字符串,对于进程的SContext,SContext的格式是"u:r:type[:range]", 进程可以ps -Z获得。...
2021-05-07 15:45:11
7040
6
原创 framework层的event_log分析
一、查看log的方向和方式涉及到Activity生命周期问题时,主要是查看event log (logcat -b events | grep am_)涉及到某个生命周期(一般指am_on_xxx)耗时时,结合“Slow Looper main”查看是哪个消息耗时,app 端log的形式:am_on_xxx_called:[userId,className,reason,duration],duration是miui加的二、常见场景的log1、正常启动一个activitysystem_serve
2021-04-27 18:57:58
1022
转载 C 语言字节对齐,结构体对齐
1.概念 对齐跟数据在内存中的位置有关。若是一个变量的内存地址正好位于它长度的整数倍,他就被称作天然对齐。好比在32位cpu下,假设一个整型变量的地址为0x00000004,那它就是天然对齐的。2、为何要字节对齐须要字节对齐的根本缘由在于CPU访问数据的效率问题。假设上面整型变量的地址不是天然对齐,好比为0x00000002,则CPU若是取它的值的话须要访问两次内存,第一次取从0x00000002-0x00000003的一个short,第二次取从0x00000004-0x00000005...
2021-04-21 11:48:00
213
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人