自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(86)
  • 资源 (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 30

原创 Activity的startActivity()—热启动

根据Activity启动时自己所属的进程是否存在,可以将Activity的启动分为两种,根Activity的启动(应用进程未创建)和普通Activity(应用进程已经创建)的启动,两者的启动过程有很多重叠的部分的,根Activity的启动流程也可以认为是应用程序的启动流程。

2024-06-02 23:32:01 610

原创 源码编译framework.jar 并成功导入android studio 开发

以上是作用的具体moudle,想要配所有的模块,需要配置根目录的build.gradle。第二步app目录下的build.gradle。可以编译过,但是在AS里面爆红。

2024-04-26 15:36:52 486

原创 在android 源代码中 使用gradlew 编译android 模块

【代码】在android 源代码中 使用gradlew 编译android 模块。

2024-04-17 14:13:16 236

原创 .a库介绍和编译案例

静态库介绍和案例

2023-12-23 17:58:18 493

原创 surfaceflinger 四

通过以上章节的了解,APP的画面要显示到屏幕上大致上要经过如下图所示系统组件的处理首先App向SurfaceFlinger申请画布(通过dequeueBuffer接口),SurfaceFlinger内部有一个BufferQueue的管理实体,它会分配一个GraphicBuffer给到APP, App拿到buffer后调用图形库向这块buffer内绘画。

2023-07-08 01:42:53 229

原创 Android 画面显示流程三

这样应用完成了对画布的申请操作。在Android系统中每个Activity都有一个独立的画布(在应用侧称为Surface,在SurfaceFlinger侧称为Layer), 无论这个Activity安排了多么复杂的view结构,它们最终都是被画在了所属Activity的这块画布上,当然也有一个例外,SurfaceView是有自已独立的画布的,但此处我们先只讨论Activity画布的建立过程。接下来我们将从应用侧角度从山到下看一下应用所绘制的画面是如何使用到我们上面所设计的流程的。

2023-07-08 00:55:20 628

原创 Android 画面显示流程二

这不是多花费一次跨进程通信的时间吗?为什么设计成了这个样子呢?同样地,当SurfaceFlinger执行到releaseBuffer时,并不能代表HWC 已经完全完成合成工作了,很有可能它还在读取缓冲区的内容做合成, 但不妨碍releaseBuffer的流程执行,虽然HWC还在使用缓冲区做合成,但帧缓冲区的Slot有可能被应用申请走变成DEQUEUED状态,虽然Slot是DEQUEUED状态这时GPU并不能直接存取它,它要等代表着HWC使用完毕的releaseFence的signaled信号。

2023-07-07 16:59:13 730

原创 Android 画面显示流程一

DRM,英文全称 Direct Rendering Manager, 即 直接渲染管理器。DRM是linux内核的一个子系统,提供一组API,用户空间程序,可以通过它,发送画面数据到GPU或者专用图形处理硬件,也可以使用它执行诸如配置分辨率,刷新率之类的设置操作。原本是设计提供PC设备支持复杂的图形设。在DRM之前Linux内核已经有一个叫FBDEV的API,用管理图形适配器的帧缓存区,但不能用于满足基于3D加速的现代基于GPU的视频硬件的需求。

2023-07-07 14:28:46 555

转载 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 536

原创 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 4432

转载 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 315

原创 Linux进程同步机制-Futex

首先,同步的进程间通过mmap共享一段内存,futex变量就位于这段共享 的内存中且操作是原子的,当进程尝试进入互斥区或者退出互斥区的时候,先去查看共享内存中的futex变量,如果没有竞争发生,则只修改futex,而不 用再执行系统调用了。在编译2.6内核的时候,你会在编译选项中看到[*] Enable futex support这一项,上网查,有的资料会告诉你"不选这个内核不一定能正确的运行使用glibc的程序",那futex是什么?可见: futex是从用户态开始,由用户态和核心态协调完成的。

2023-05-22 18:28:32 1201 2

原创 Linux内核学习之syscall的使用

linux内核学习

2023-05-22 18:25:16 1153

原创 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 512

原创 Input系统之APP建立联系

这里主要从三个角度对InputDispatcher与APP之间建立联系的过程 进行分析说明。这里首先用一张框架图来表示InputReader,InputDispatcher,WindowManagerService,与应用层之间的关系,如下所示:核心是socketpair机制,在系统层留下一个fd0,在通过binder进程间通信机制在应用层传递一个fd1,这样系统层的inputDispatcher和应用层的App间建立了一个联系。

2023-03-16 17:27:20 461

原创 Input系统之InputDispatcher

这里新增加了 按键视角部分,以按键的流程来解读整个IMS的数据流走向的框架。新增的派发数据流程截图如下。

2023-03-16 10:58:13 604

原创 Input系统之InputReader

加入该键盘事件到mInboundQueue队列之前,mInboundQueue不为空,但此时用户按下Home键等需要切换APP的按键,在切换App时,新的App会把它的键盘消息接收通道注册到InputDispatcher中去,并且会等待InputReader的唤醒,因此,在这种情况下,也需要返回true,表示要唤醒InputDispatcherThread线程。2.通过processEventLocked()对事件处理,对于设备事件,此函数对根据设备的可用性加载或移除设备对应的配置信息。

2023-03-15 18:23:25 648

原创 input系统之启动介绍

input 系统启动

2023-03-15 16:57:16 299

原创 NDK-JNI数组数据处理

JNI

2023-03-13 15:49:13 249

转载 storage/emulated/0路径下的File.listFiles返回值为null——android

storage/emulated/0路径下的File.listFiles返回值为null

2023-03-02 17:43:50 622

原创 android 驱动学些入门-------Device Tree 第二篇

设备树

2023-02-09 17:34:22 748

原创 android 驱动学些入门-------Device Tree 第一篇

驱动的设备树

2023-02-08 17:29:26 784

原创 Android.mk文件里面集成第三方jar和so

mk文件添加jar和so

2022-12-28 14:47:57 730

原创 C++创建线程pthread_create和gdb的调试小记

pthread线程研究

2022-11-04 15:30:12 601

原创 c++ 添加获取栈信息的code

关于打印c++的log的code

2022-09-09 09:39:50 796

原创 配置git在Linux服务器上

git

2022-07-29 16:14:11 184

原创 add_new _device_point添加权限

selinux

2022-07-28 15:46:46 190

原创 sdk打包成 aar 和 jar的方法

使用gradlew进行编译jar或者aar包

2022-06-29 15:51:55 928

原创 AOSP单独编译kernel 一些模块

android

2022-06-24 14:50:36 513

原创 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 295

转载 智能指针的详解

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 142

原创 配置网络映射盘

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 828

原创 Activity的startActivity()从app调用到binder driver层在到system_server层的分析

链接: activity的startActivity调用流程概览-【需翻墙头】.链接: IPC的通信机制.链接: Binder和AIDL的原理.链接: Activity的启动流程 基于11.

2021-08-31 12:41:47 153

原创 配置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 172

原创 Sepolicy学习(一)

sepolicy 规则介绍sepolicy的规则针对的是linux系统中的进程和文件。进程是主动的,而文件是被动的。所以有对应的进程的规则和文件规则,分别定义进程的合法行为和文件被访问的权限。SELIUNX中,每个对象(进程和文件)被赋予安全的属性。SContext是一个字符串,对于进程的SContext,SContext的格式是"u:r:type[:range]", 进程可以ps -Z获得。...

2021-05-07 15:45:11 5936 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 838

转载 C 语言字节对齐,结构体对齐

1.概念 对齐跟数据在内存中的位置有关。若是一个变量的内存地址正好位于它长度的整数倍,他就被称作天然对齐。好比在32位cpu下,假设一个整型变量的地址为0x00000004,那它就是天然对齐的。2、为何要字节对齐须要字节对齐的根本缘由在于CPU访问数据的效率问题。假设上面整型变量的地址不是天然对齐,好比为0x00000002,则CPU若是取它的值的话须要访问两次内存,第一次取从0x00000002-0x00000003的一个short,第二次取从0x00000004-0x00000005...

2021-04-21 11:48:00 144

原创 framework之中添加资源文件

<RelativeLayout xmlns:android="http://schemas.android.com/apk/res/android" android:layout_width="match_parent" android:layout_height="match_parent" android:orientation="horizontal" android:gravity="center"> android:id="@+id/root"> <!-- 关

2021-03-01 13:02:42 349

原创 JNI层和Aidl层的实现

参照系统的其他服务方式来写,来到frameworks/base/services/core/jni目录下,这里面有很多的JNI服务,创建cpp文件com_android_server_am_HelloService.app,这个名字和AIDL服务包名com.android.server.am相同。#include <jni.h>#include <nativehelper/JNIHelp.h>#include <binder/IServiceManager.h>#

2021-01-07 15:37:05 744

文件列表的显示Demo

文件列表的显示Demo

2023-05-23

Android 音乐特效控制demo

Android播放器音效控制Demo,大家可以学习使用

2023-04-21

mtk 平台 Android下⾳频的测试程序tinyalsa

mtk 平台 Android下⾳频的测试程序tinyalsa

2023-02-15

Qt5WebKit.dll

qxdm 工具打不开提示缺少此dll

2022-08-03

android程序中文件弹框demo

android程序中文件弹框demo

2022-06-17

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除