Android
文章平均质量分 71
fighting-shiny
Android系统开发攻城狮
展开
-
Android中C++如何读写json文件
3. 向json文件写入数据。4. 读取json文件内容。原创 2024-05-11 17:35:39 · 367 阅读 · 0 评论 -
C++ 如何创建线程
C++中可使用pthread_t来创建线程,pthread_t是 POSIX 线程库中的数据类型,用于表示线程的标识符。它通常用于创建、管理和操作线程。在 C 或 C++ 中,你可以使用 pthread_t类型的变量来表示一个线程。头文件:以下具体介绍一下每个方法。原创 2024-04-26 10:59:32 · 825 阅读 · 0 评论 -
最新Android Studio导入aar包的方法
但是这样都无法sync以及编译通过,因为方式已经变了,现在只需要按照如下方式修改即可。2:在MyApplication\app\build.gradle下添加。1:将aar文件复制到MyApplication\app\libs下。原创 2024-04-11 14:19:55 · 326 阅读 · 0 评论 -
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 · 589 阅读 · 1 评论 -
Android Selinux详解[九]--sepolicy编译生成产物介绍
如果在keystore2_key_contexts中新增标签,可以在此处查看自己新增的标签。如果在hwservice_contexts中新增标签,可以在此处查看自己新增的标签。如果在property_contexts中新增标签,可以在此处查看自己新增的标签。如果在service_contexts中新增标签,可以在此处查看自己新增的标签。如果在seapp_contexts中新增标签,可以在此处查看自己新增的标签。如果在file_contexts中新增标签,可以在此处查看自己新增的标签。原创 2024-03-28 14:46:55 · 529 阅读 · 0 评论 -
Android Selinux详解[八]--常用sepolicy函数和权限组说明
Selinux中有很多函数,比如domain_auto_trans, r_dir_file等等,可以见源码中定义的地方举例一两个看一下。原创 2024-03-28 11:18:45 · 949 阅读 · 0 评论 -
C++ ostringstream用法详解
std::ostringstream 是 C++ 标准库中的一个输出字符串流类,它可以用于将各种数据类型转换为字符串,并且支持格式控制和字符串拼接操作。原创 2024-03-21 14:48:39 · 958 阅读 · 0 评论 -
C++ istringstream用法详解
可以使用 std::setprecision、std::fixed、std::scientific 等控制符来设置提取浮点数时的精度和格式。使用 >> 操作符可以从 std::istringstream 中提取数据,就像从 std::cin 中读取数据一样。可以使用 good()、eof()、fail()、bad() 等函数来检查流的状态,以确保数据提取的正确性。在提取数据后,通常可以通过检查 std::istringstream 的状态来确保数据提取成功。原创 2024-03-21 14:33:56 · 2011 阅读 · 0 评论 -
Android Selinux详解[七]--如何给可执行程序bin加标签
经过前面几篇文章的介绍,你应该对Selinux有一定的了解了,现在我们就来实战一下。你可能会在工作的过程遇到要给可执行程序bin加标签的需求,以下来讲解一下怎么给bin加标签。原创 2024-03-20 16:23:13 · 410 阅读 · 0 评论 -
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 · 1036 阅读 · 0 评论 -
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 · 403 阅读 · 0 评论 -
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 · 747 阅读 · 0 评论 -
Android Selinux详解[三]--新增设备节点标签相关
上个章节说了在file_context中也可以新增节点,但可能会出现标签无法生效的情况,这种情况下就需要在genfs_contexts中去新增设备节点相关的标签了,因为在genfs_contexts中打的标签,系统会自动执行restorecon命令,而在file_contexts中新增设备节点标签,是需要代码或者手动执行restorecon命令才会生效的。原创 2024-03-11 15:13:44 · 814 阅读 · 0 评论 -
Android Selinux详解[二]--新增文件标签相关
在工作过程中,SElinux常用的有以下几个文件可用于新增标签restorecon在Selinux中是一个非常常用的命令,其解释如下"restorecon" 是一个用于恢复文件或目录的 SELinux 安全上下文的命令。在使用 SELinux(Security-Enhanced Linux)时,每个文件和目录都有一个安全上下文,它描述了文件或目录的安全属性和访问权限。如果由于某种原因安全上下文发生了改变,例如文件被移动或复制,可能导致安全上下文不一致。原创 2024-03-07 16:43:42 · 969 阅读 · 0 评论 -
Android Selinux详解[一]---整体介绍
Android 使用安全增强型 Linux (SELinux) 对所有进程强制执行强制访问控制 (MAC),甚至包括以 Root/超级用户权限运行的进程(Linux 功能)。借助 SELinux,Android 可以更好地保护和限制系统服务、控制对应用数据和系统日志的访问、降低恶意软件的影响,并保护用户免遭移动设备上的代码可能存在的缺陷的影响。ELinux 按照默认拒绝的原则运行:任何未经明确允许的行为都会被拒绝。下面大概介绍一下工作中经常遇到的Selinux相关知识。原创 2024-03-07 14:21:03 · 1285 阅读 · 0 评论 -
Android中 在目录下创建文件涉及到的权限问题分析
Android中读写目录涉及到的权限一般有三个,一个是selinux, 另一个是用户组, 还有一个是目录本身权限问题,本文章针对这三点做详细解析。原创 2024-03-05 17:03:17 · 1272 阅读 · 0 评论 -
C++ static_cast基本用法
static_cast 是 C++ 中的一种类型转换操作符,用于执行编译时类型转换。它可以在一定程度上实现隐式类型转换,但是相较于 C 风格的强制转换,static_cast 在类型安全性和可读性上更有优势。原创 2024-02-28 13:48:19 · 440 阅读 · 0 评论 -
C++中epoll用法总结
epoll能显著的提高程序的CPU利用率。本文中代码是源码中healthd中的ueventfd的epoll监听代码。原创 2024-02-19 13:53:00 · 901 阅读 · 0 评论 -
C++层uevent获取
本文用的是#include 主要讲述android中怎么在C++层接收uevent。首先创建一个线程用于循环去获取uevent。然后在这个线程中就可循环获取uevent了。原创 2024-02-01 19:35:30 · 242 阅读 · 0 评论 -
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 · 462 阅读 · 0 评论 -
C++如何在文件的倒数第二行末尾插入数据
【代码】C++如何在文件的倒数第二行末尾插入数据。原创 2024-01-26 18:24:08 · 243 阅读 · 0 评论 -
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 · 1588 阅读 · 0 评论 -
vector存储对象后在调用clear时是否会release对象所在的空间
vector存储对象后,在调用clear时并会release对象所在的空间,需要手动释放空间。原创 2024-01-11 09:40:33 · 388 阅读 · 0 评论 -
如何读取文件内容获取其中的关键字
/以:分割字符串,分割后的分别存到splitLastLine,会被分割成“tag1", "3, tag2", "1"//以,分割字符串splitLastLine[1]//打开文件流,文件名为:fileName。//如果无法打开此文件,return。//将token存入res。//将string转成long。通过ifstream去读取文件。//格式加入是上面这种。原创 2024-01-08 23:46:32 · 525 阅读 · 0 评论 -
如何读取文件的最后一行并解析
其实本质上文件读写就是一个指针指向文件中某个位置后进行读写,所以简单来说tellg()和seekg()都是用于设置该指针的位置的。主要函数如下,函数主要功能为调转到文件的最后一行,并解析最后一行的内容。ios::end 从文件末尾开始计算偏移量。ios::cur 从当前位置开始计算偏移量。ios::beg 从文件头开始计算偏移量。用于设置在输入流中的位置。用于在输入流中获取位置。原创 2024-01-08 15:11:33 · 573 阅读 · 0 评论 -
Android 12 S 系统开机流程分析 - SecondStageMain(三)
define(`', `')define(`', `')define(`', `')原创 2023-11-14 09:16:58 · 260 阅读 · 0 评论 -
Android 12 S 系统开机流程分析 - SetupSelinux(二)
本文接着上文开始讲解,上文中最后一步执行后会执行init启动过程中的第二步SetupSelinux(Selinux配置阶段),这样又会走到main.cpp中的main方法。原创 2023-11-08 07:37:47 · 508 阅读 · 0 评论 -
Android 12 S 系统开机流程分析-FirstStageMain(一)
开机启动流程 init加载流程原创 2023-11-07 19:06:06 · 809 阅读 · 1 评论 -
Android 12 S 自定义Native服务selinux权限添加
节点在此目录添加定义:genfs_contexts。并且与system_server互相通信。native服务访问hal服务。原创 2023-06-13 17:32:14 · 648 阅读 · 0 评论 -
Android 12 S activity切换动画介绍
一个是startActivityLocked,另一个是resumeTopActivityInnerLocked,但这个resumeTopActivityInnerLocked方法在启动过程中会被调用两次,第一次调用时是在startActivityInner过程中调用的,此时前一个activity并未进入paused状态,会执行不下去,第二次则是前一个activity进入paused状态了,然后回掉completePausedLocked,继而调用了此方法,如上图。//如果新起的activity没有动画。原创 2023-10-09 11:42:36 · 485 阅读 · 0 评论 -
.gitconfig配置--提高使用效率
[user] email = [email protected] name = xxx.xx [color] ui = auto [core] editor=vim //这样在git commit --amend的时候就可以用vim进行编辑原创 2023-10-09 11:42:14 · 55 阅读 · 0 评论 -
ubuntu 下 .vimrc配置vim
endif。原创 2023-09-18 10:33:49 · 122 阅读 · 0 评论 -
Android 12 S WindowInset解析
window content的一系列inset,可以理解为 一个Activity相对于手机屏幕需要空出的地方以腾纳给statusbar、Ime、Navigationbar等系统窗口,具体表现为该区域需要的上下左右的宽高,比如输入法窗口的区域就是一个Inset)WindowInsets包括三类:SystemWindowInsets、StableInsets、WIndowDecorInsets。在源码中,Insets 对象拥有 4 个 int 值,用于描述矩形四个边的偏移。返回以像素为单位的稳定insets。原创 2023-09-21 09:36:00 · 529 阅读 · 4 评论 -
一些我觉得非常不错的文章
显示相关:Android Vsync原理简析 - 知乎我会慢慢收藏,发现好的,就放到这里~~~~这是一个漫长的博客~~原创 2023-08-30 14:41:42 · 75 阅读 · 0 评论 -
一:WindowManagerService启动流程 - Android 12
执行到这里,表示system_server启动完成,WMS会调用其他组件的systemReady。最重要的是执行了PhoneWindowManager的init。原创 2023-05-16 16:07:45 · 499 阅读 · 0 评论 -
如何抓trace
4. 执行以下命令看下进程相关信息。原创 2023-05-09 16:45:35 · 485 阅读 · 0 评论 -
Android 12 S SystemServer启动过程中的服务分析
由此可见,WindowManagerService以及ActivityManagerService等的服务的进程号都是SystemServer,但是是跑在不同的线程上。原创 2023-05-04 16:40:36 · 102 阅读 · 0 评论 -
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 · 3105 阅读 · 6 评论 -
Android代码下载编译调试简介
复制这些内容,粘贴到对应gerrit上的SSH Public Keys中。2:然后会让你输入两次密码,最后出现。经过以上的配置,此时就可以下载代码了。lunch根据项目选择对应的序号。资源管理的一个工具,所以在安装。3:此时在主目录下执行la,将密钥添加到对应gerrit。:然后在用户主目录新建一个。过滤两个及两个以上的关键字。原创 2023-04-26 09:38:30 · 131 阅读 · 1 评论 -
Android 12 S Native Service的创建流程
其中需注意的是IInterface中的纯虚方法,在Bn和Bp去实现的时候,要一模一样。include/CustomizeManagerService.h中新增如下内容。CustomizeManagerService.cpp中新增如下内容。在customize下新增目录include用于存放头文件。新增目录名:customize。原创 2023-04-23 15:53:22 · 998 阅读 · 14 评论