自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(66)
  • 收藏
  • 关注

原创 Android 12 S HIDL Service创建流程

HIDL 这个机制的目的,主要是为了把框架(framework)与 HAL 进行隔离,使得框架部分可以直接被覆盖、更新,而不需要重新对 HAL 进行编译。HAL 的部分将会放在设备的 /vendor 分区中,并且是由设备供应商(vendors)或 SOC 制造商来构建。这使得框架部分可以通过 OTA 方式更新,同时不需要重新编译 HAL。这种设计被称为Treble机制,从Android 8.0引入。

2023-04-28 17:47:06 3132 6

原创 Android 12 S Native Service的创建流程

其中需注意的是IInterface中的纯虚方法,在Bn和Bp去实现的时候,要一模一样。include/CustomizeManagerService.h中新增如下内容。CustomizeManagerService.cpp中新增如下内容。在customize下新增目录include用于存放头文件。新增目录名:customize。

2023-04-23 15:53:22 1022 14

原创 Android 12 S ServiceManager原理

​ServiceManager是Binder通信的核心部分,提供服务注册以及查询的功能。在 Android 11 之前的版本里,它是直接使用 open、mmap、ioctl 等 api 与 binder 驱动交互。而从 Android 11 开始,ServiceManager放弃使用这些较底层的接口,转向 libbinder 库和 AIDL。

2023-04-23 14:26:07 1534 3

原创 Android中C++如何读写json文件

3. 向json文件写入数据。4. 读取json文件内容。

2024-05-11 17:35:39 369

原创 C++ 如何创建线程

C++中可使用pthread_t来创建线程,pthread_t是 POSIX 线程库中的数据类型,用于表示线程的标识符。它通常用于创建、管理和操作线程。在 C 或 C++ 中,你可以使用 pthread_t类型的变量来表示一个线程。头文件:以下具体介绍一下每个方法。

2024-04-26 10:59:32 825

原创 Android Studio修改“choose boot runtime for the IDE“后无法打开

在Android Studio中选择了"choose boot runtime for the IDE"的New后,会自动重启AS,然后就无法打开android studio了,打开直接报错,cause by如下。D:\Users\用户名\AppData\Roaming\Google\AndroidStudio(版本号)删除如下路径的文件即可,会重新走一遍AS的首次打开教程。

2024-04-23 13:30:43 1028 3

原创 最新Android Studio导入aar包的方法

但是这样都无法sync以及编译通过,因为方式已经变了,现在只需要按照如下方式修改即可。2:在MyApplication\app\build.gradle下添加。1:将aar文件复制到MyApplication\app\libs下。

2024-04-11 14:19:55 348

原创 Permission Denial: package=android does not belong to uid=2000

02-01 03:14:17.230 1685 2701 W ContextImpl: Calling a method in the system process without a qualified user: xxxxxxxxx02-01 03:14:17.231 1685 2701 W ActivityTaskManager: Permission Denial: package=android does not belong to uid=2000

2024-04-01 10:48:07 590 1

原创 Android Selinux详解[九]--sepolicy编译生成产物介绍

如果在keystore2_key_contexts中新增标签,可以在此处查看自己新增的标签。如果在hwservice_contexts中新增标签,可以在此处查看自己新增的标签。如果在property_contexts中新增标签,可以在此处查看自己新增的标签。如果在service_contexts中新增标签,可以在此处查看自己新增的标签。如果在seapp_contexts中新增标签,可以在此处查看自己新增的标签。如果在file_contexts中新增标签,可以在此处查看自己新增的标签。

2024-03-28 14:46:55 534

原创 Android Selinux详解[八]--常用sepolicy函数和权限组说明

Selinux中有很多函数,比如domain_auto_trans, r_dir_file等等,可以见源码中定义的地方举例一两个看一下。

2024-03-28 11:18:45 956

原创 C++ ostringstream用法详解

std::ostringstream 是 C++ 标准库中的一个输出字符串流类,它可以用于将各种数据类型转换为字符串,并且支持格式控制和字符串拼接操作。

2024-03-21 14:48:39 1005

原创 C++ istringstream用法详解

可以使用 std::setprecision、std::fixed、std::scientific 等控制符来设置提取浮点数时的精度和格式。使用 >> 操作符可以从 std::istringstream 中提取数据,就像从 std::cin 中读取数据一样。可以使用 good()、eof()、fail()、bad() 等函数来检查流的状态,以确保数据提取的正确性。在提取数据后,通常可以通过检查 std::istringstream 的状态来确保数据提取成功。

2024-03-21 14:33:56 2095

原创 Android Selinux详解[七]--如何给可执行程序bin加标签

经过前面几篇文章的介绍,你应该对Selinux有一定的了解了,现在我们就来实战一下。你可能会在工作的过程遇到要给可执行程序bin加标签的需求,以下来讲解一下怎么给bin加标签。

2024-03-20 16:23:13 413

原创 Android Selinux详解[六]--新增属性标签相关

3. 以system_server为例,因为它本身对system_prop的属性有set权限,如果需要在systemserver中新增属性的话,可以以sys.开头,或者以persist.sys.开头,都不用再去新增对应的权限了。1. 对于没有在property_contexts中定义的属性,默认标签为default_prop。2. 以下这种代表以sys.开头的属性标签都为system_prop,其他的也都是一样的。属性有很多种命名方法,但对应的标签页不同,安卓原生的一个属性标签可以参考。

2024-03-18 16:52:30 1044

原创 Android Selinux详解[五]--新增hal服务标签相关

在sepolicy/public/service.te中还有一个neverallow,此neverallow意思为不允许domain对非hwservice_manager_type的hal service进行add find权限。在工作过程中,SElinux常用的有以下几个文件可用于新增标签。hwservice在源码中可以看看,主要有如下几种声明类型。

2024-03-13 16:39:24 406

原创 Android Selinux详解[四]--新增服务标签相关

system server创建的service,如果是新增的java层系统服务,并且由system server拉起,则基本都是如下声明。带有app_api_service的声明说明除了isolated apps外,其他APP都可以访问的。带有system_api_service的说明只有system api的服务。所以经过上述解释,是否对服务该怎样进行type有一定的了解了呢。service有以下几种声明,相应解释如下。可以看到,有如下几种标签声明。

2024-03-13 15:59:48 751

原创 Android Selinux详解[三]--新增设备节点标签相关

上个章节说了在file_context中也可以新增节点,但可能会出现标签无法生效的情况,这种情况下就需要在genfs_contexts中去新增设备节点相关的标签了,因为在genfs_contexts中打的标签,系统会自动执行restorecon命令,而在file_contexts中新增设备节点标签,是需要代码或者手动执行restorecon命令才会生效的。

2024-03-11 15:13:44 825

原创 Android Selinux详解[二]--新增文件标签相关

在工作过程中,SElinux常用的有以下几个文件可用于新增标签restorecon在Selinux中是一个非常常用的命令,其解释如下"restorecon" 是一个用于恢复文件或目录的 SELinux 安全上下文的命令。在使用 SELinux(Security-Enhanced Linux)时,每个文件和目录都有一个安全上下文,它描述了文件或目录的安全属性和访问权限。如果由于某种原因安全上下文发生了改变,例如文件被移动或复制,可能导致安全上下文不一致。

2024-03-07 16:43:42 981

原创 Android Selinux详解[一]---整体介绍

Android 使用安全增强型 Linux (SELinux) 对所有进程强制执行强制访问控制 (MAC),甚至包括以 Root/超级用户权限运行的进程(Linux 功能)。借助 SELinux,Android 可以更好地保护和限制系统服务、控制对应用数据和系统日志的访问、降低恶意软件的影响,并保护用户免遭移动设备上的代码可能存在的缺陷的影响。ELinux 按照默认拒绝的原则运行:任何未经明确允许的行为都会被拒绝。下面大概介绍一下工作中经常遇到的Selinux相关知识。

2024-03-07 14:21:03 1343

原创 Android中 在目录下创建文件涉及到的权限问题分析

Android中读写目录涉及到的权限一般有三个,一个是selinux, 另一个是用户组, 还有一个是目录本身权限问题,本文章针对这三点做详细解析。

2024-03-05 17:03:17 1278

原创 C++ static_cast基本用法

static_cast 是 C++ 中的一种类型转换操作符,用于执行编译时类型转换。它可以在一定程度上实现隐式类型转换,但是相较于 C 风格的强制转换,static_cast 在类型安全性和可读性上更有优势。

2024-02-28 13:48:19 441

原创 C++中epoll用法总结

epoll能显著的提高程序的CPU利用率。本文中代码是源码中healthd中的ueventfd的epoll监听代码。

2024-02-19 13:53:00 905

原创 C++层uevent获取

本文用的是#include 主要讲述android中怎么在C++层接收uevent。首先创建一个线程用于循环去获取uevent。然后在这个线程中就可循环获取uevent了。

2024-02-01 19:35:30 242

原创 C++ stat函数用法

/time of lastaccess 文件最近一次被存取或被执行的时间, 一般只有在用mknod、 utime、read、write 与tructate 时改变.time_t st_mtime;//time of last change i-node 最近一次被更改的时间, 此参数会在文件所有者、组、 权限被更改时更新。//blocksize for filesystem I/O 文件系统的I/O 缓冲区大小.dev_t st_rdev;

2024-01-31 18:09:52 472

原创 signal 7 (SIGBUS), code 1 (BUS_ADRALN)/ signal 11 (SIGSEGV), code 1 (SEGV_MAPERR) 报错解决

根因是类是继承RefBase的,使用的是sp智能指针,智能指针会自己管理内存,而我用的是Amessage,AHandler,在AHandler中的onMessageReceived中会在处理完消息后,会清除所有占用的内存空间,这个就与智能指针的清理产生冲突。导致发生native crash。遇到问题时,会出现以上三个问题,每次出现问题的。

2024-01-29 14:34:37 326

原创 C++如何在文件的倒数第二行末尾插入数据

【代码】C++如何在文件的倒数第二行末尾插入数据。

2024-01-26 18:24:08 244

原创 Android中C++层fstream用法详解

ios::trunc   = 0x10, // 在读写前先将文件长度截断为0(默认)ios::nocreate = 0x20, //文件不存在时产生错误,常和in或app联合使用ios::noreplace = 0x40, //文件存在时产生错误,常和out联合使用ios::binary  = 0x80  //二进制格式文件。

2024-01-26 18:21:27 1590

原创 Amessage的clear会清除对象并释放内存空间

然后在onMessageReceived方法中接收这个message,然后执行list.clear()清除这个操作,clear时发现会将DataStructure之前new出来的所有对象都清除,并释放内存空间。其中DateStructure是一个继承Refbase的类。然后将这个list通过Amessage发送。然后往list中添加数据。

2024-01-11 09:53:34 501

原创 vector存储对象后在调用clear时是否会release对象所在的空间

vector存储对象后,在调用clear时并会release对象所在的空间,需要手动释放空间。

2024-01-11 09:40:33 388

原创 如何读取文件内容获取其中的关键字

/以:分割字符串,分割后的分别存到splitLastLine,会被分割成“tag1", "3, tag2", "1"//以,分割字符串splitLastLine[1]//打开文件流,文件名为:fileName。//如果无法打开此文件,return。//将token存入res。//将string转成long。通过ifstream去读取文件。//格式加入是上面这种。

2024-01-08 23:46:32 525

原创 如何读取文件的最后一行并解析

其实本质上文件读写就是一个指针指向文件中某个位置后进行读写,所以简单来说tellg()和seekg()都是用于设置该指针的位置的。主要函数如下,函数主要功能为调转到文件的最后一行,并解析最后一行的内容。ios::end 从文件末尾开始计算偏移量。ios::cur 从当前位置开始计算偏移量。ios::beg 从文件头开始计算偏移量。用于设置在输入流中的位置。用于在输入流中获取位置。

2024-01-08 15:11:33 575

原创 如何在Android Framework源码中增加jni方法

我们都知道,在Android Framework源码中,有很多这种类型的方法,方法前缀有"public static native",这种方法就是native方法,会调用到jni中去。那如何在Android Framework源码中新增一个jni方法呢?主要需要以下几个步骤,以android源码为例PhoneWindowManager.java, 增加两个jni方法import xxx;.........

2023-12-21 17:09:27 1129

原创 Android 12 S 系统开机流程分析 - SecondStageMain(三)

define(`', `')define(`', `')define(`', `')

2023-11-14 09:16:58 266

原创 Android 12 S 系统开机流程分析 - SetupSelinux(二)

本文接着上文开始讲解,上文中最后一步执行后会执行init启动过程中的第二步SetupSelinux(Selinux配置阶段),这样又会走到main.cpp中的main方法。

2023-11-08 07:37:47 517

原创 Android 12 S 系统开机流程分析-FirstStageMain(一)

开机启动流程 init加载流程

2023-11-07 19:06:06 815 1

原创 Android S从桌面点击图标启动APP流程 (六)

系列文章Android 12的源码链接:上文讲到了 Process.start, 这里接着往下讲解。

2023-10-27 10:32:04 259

原创 Android S从桌面点击图标启动APP流程 (五)

系列文章Android 12的源码链接:一般更新activity的可见性log如下:确定next activity的可见性设置为可见状态free住屏幕开始设置为可见更新next的可见性确定prev的可见性设置前一个prev为不可见立即设置不可见将prev加入stopping队列。

2023-10-27 10:26:37 455

原创 Android S从桌面点击图标启动APP流程 (四)

系列文章本文重点讲解activity pause完成后通知Server端以及之后的操作。

2023-10-13 09:35:00 540

原创 Android S从桌面点击图标启动APP流程 (三)

mAtmService.getLifecycleManager().scheduleTransaction(prev.app.getThread(),prev.appToken, PauseActivityItem.obtain(prev.finishing, userLeaving, prev.configChangeFlags, pauseImmediately));frameworks/base/services/core/java/com/android/server/wm/ClientLife

2023-10-13 09:31:00 182

原创 Android S从桌面点击图标启动APP流程 (二)

系列文章Android S从桌面点击图标启动APP流程 (一)Android 12的源码链接:Android 12 Aosphttp://aospxref.com/android-12.0.0_r3/frameworks/base/services/core/java/com/android/server/wm/ActivityStarter.javaframeworks/base/services/core/java/com/android/server/wm/ActivityStarter.java​

2023-10-12 15:39:23 382

空空如也

空空如也

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

TA关注的人

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