
Android
文章平均质量分 90
ʚ兔子的先森ɞ
一只立志于养老婆的程序猿。
展开
-
Android system — 链接器命名空间共享库配置方法(Android 11后)
native进程的so库是直接通过dlopen打开的,而其对应的命名空间也是直接通过linker进行判断的,并没有调用到libnativeloader.so,因此native进程的配置方式也与应用进程不同。中,我们提到了“目录-区段”映射属性dir.name,指向 [name] 区段所应用到的目录的路径,其实就是baseconfig.cc中定义的dirToSection。通过上面的代码跟踪我们会发现,其实在Android 11后,应用进程共享库的配置位置都在。中我们可以看到调用了。原创 2024-04-29 16:35:03 · 2871 阅读 · 3 评论 -
Android system — 链接器命名空间(linker namespace)源码分析
应用程序对应的可执行文件app_process会创建一个类加载器classloader并调用System.loadLibrary加载so库,最终会调用至android_dlopen_ext;而native的二进制bin文件是通过dlopen获取so库的handle,但是无论是dlopen还是android_dlopen_ext最后都是调用do_dlopen函数,所以从do_dlopen开始分析。android_namespace_link_t::is_accessible()进行权限判断。原创 2024-04-28 17:37:50 · 1923 阅读 · 0 评论 -
Android system — Android链接器命名空间(Android 11后)
android 7.0加入了对私有系统so库API调用的限制(因为私有系统库会在任意时刻更新,使用这些系统库的应用有可能会在更新后崩溃),android 8.0引入了project Treble实现框架与供应商解耦合(解决系统碎片化,升级慢),这都需要依赖链接器命名空间机制。这里主要关注的重点是链接器命名空间在android 7.0引入后对System.loadLibrary,dlopen和dlsym函数的限制。Android 11 又对配置方式进行了修改,不再使用静态文件进行配置。原创 2024-04-28 14:44:01 · 2072 阅读 · 4 评论 -
Android wifi — WiFi空口包交互过程
本文通过抓取的WiFi空口包,简要分析下WiFi的连接过程。连接三步骤探测(Probe Request、Probe Response)认证(Authentication)关联(Association Request、Association Response)如下图可见,WiFi连接过程可大致分为 探测/扫描(Probe)-> 认证(Authentication) -> 关联(Association) -> EAPOL 四个阶段。原创 2023-12-25 14:35:46 · 1745 阅读 · 1 评论 -
Android network — iptables四表五链
我们先来看一下netfilter官网iptablesiptablesTheiptablesip6tablesip6tables也就是说iptables实际上只是位于用户空间的一个面向系统管理员的Linux防火墙的管理工具而已,而真正实现防火墙功能的是netfilter,它是Linux内核中实现包过滤的内核模块,iptables对应在内核中的模块应该是ip_tables,我们查看系统内核中ip_tables的信息的时候可以看到这个模块是在netfilter这个目录下的。实际上除了iptables。原创 2023-08-05 16:13:08 · 2070 阅读 · 0 评论 -
Android system实战 — Android R(11) 第三方apk权限
最近在调试时遇到了第三方apk申请运行时权限,以及signature级别 install 权限不允许赋予给第三方apk,虽然这是Android系统安全性的一种体现,但在某些情况下,确实是有需求去放开权限,使app能使用更方便,毕竟让用户允许权限在一定程度上来说并不是一件容易的事情。原创 2023-03-02 17:05:21 · 2561 阅读 · 0 评论 -
Android system — settings数据库
Android系统设置数据库用于保存系统的一些默认设置值,另外在开发的时候,有时候我们一些设置属性要保存到本地,防止软件卸载后配置属性消失,也可以将这些值保存到系统数据库中。原创 2023-02-18 21:38:34 · 3805 阅读 · 2 评论 -
android9.0 系统默认时间跳变
最近修改客户问题的时候发现系统默认时间和ntp网络时间之间出现了一次时间的跳变,虽然不是什么大问题,但是可以跟进了解一下。原创 2022-09-22 17:10:15 · 1656 阅读 · 0 评论 -
Android logd日志原理
无论是Android系统开发,还是应用开发,都离不开log,Androd上层采用logcat输出log。因此我们这次基于Android源码9.0,解读logd的日志记录过程。logcat命令说明logcat -b events // 输出指定buffer的loglogcat -s "ActivityManager" logcat -L //上次重启时的loglogcat -f [ filename ] //将log保存到指定文件logcat -g //缓冲区大小。...原创 2022-08-29 14:24:42 · 1566 阅读 · 0 评论 -
分析解决logcat报read: Unexpected EOF
在做android开发调试过程中,我们经常会用到logcat,通过logcat可以更直接的看出程序执行的顺序以及开发产生的日志信息,但是,今天客户遇到一个问题,logcat提示read: Unexpected EOF!异常,然后日志就不在打印了。今天我们就分析一下为什么logcat会出现read: Unexpected EOF异常,以及出现read: Unexpected EOF异常后日志无法正常输出的原因。原创 2022-08-23 14:00:57 · 2094 阅读 · 0 评论 -
Android init.rc启动shell脚本
最近在解决客户的一个问题的时候,帮忙调试了一个开机脚本,其中涉及了部分SELinux的权限的配置,因此记录一下,该案例基于amlogicS905L3A芯片开发,在AndroidP上进行的测试,在其他设备上大同小异,请自行查找或替换为对应的路径。注AndroidP上为了区分系统和厂商定制化内容,脚本应编译至vendor/bin下,而不是system/bin下。...原创 2022-07-20 19:59:51 · 2639 阅读 · 0 评论 -
PowerManagerService(一)— 初始化
PowerManagerServcie是android系统电源管理的核心服务,它在Framework层建立起一个策略控制方案,向下决策HAL层以及kernel层来控制设备待机状态,主要功能是控制系统待机状态,屏幕显示,亮度调节,光线/距离传感器的控制等。 除了与应用程序交互之外,还要与系统中其它模块配合,在提供良好的能源管理同时提供友好的用户体验。比如听音乐时持续保持系统唤醒,应用通知来临唤醒手机屏幕等场景 分析一个服务,首先要从它对应用层提供的api 入手,观察提供了哪些接口调用;主要分为四个层次原创 2022-06-30 15:39:42 · 1220 阅读 · 1 评论 -
Android network基础知识 — IPv4和IPv6的区别
Internet协议(IP)是为连接到Internet网络的每个设备分配的数字地址。它类似于电话号码,是一种独特的数字组合,允许用户与他人通信。IP地址主要有两个主要功能。首先,有了IP,用户能够在Internet上被识别。第二,IP地址允许计算机通过Internet发送和接收数据,也就是我们经常说的通信。在本文中,我们将深入研究两种类型的IP地址:IPv4与IPv6。我们将从以下几个方面来给大家介绍这两种类型的IP地址,让大家了解到两类IP的必备知识: IPv4和IPv6是不同类型的IP地址。它们的原创 2022-06-09 14:37:06 · 2537 阅读 · 3 评论 -
Android network — DHCP协议详解
DHCP协议详解0. 前言1. DHCP协议1.1 DHCP报文种类1.2 DHCP报文格式2. DHCP工作流程2.1 IP地址分配方式2.2 租约表2.3 工作流程2.4 服务器处理流程0. 前言 前言主要给大家介绍下什么是DHCP?以及为什么使用DHCP? DHCP(Dynamic Host Configuration Protocol,动态主机配置协议),前身是BOOTP协议,是一个局域网的网络协议,使用UDP协议工作,统一使用两个IANA分配的端口:67(服务器端),68(客户端)。DH原创 2022-04-30 21:30:32 · 3606 阅读 · 1 评论 -
Android network — StateMachine机制
StateMachine与State模式1. State模式1.1 意图1.2 适用性1.3 结构1.4 Context与State交互1.5 理解2. Android中StateMachine机制2.1 StateMachine类作用3. Android 中StateMachine模块分析3.1 State Machine各个模块作用3.2 建立树形层次结构存储State5.3 状态机的StateStack建立和状态切换3.4 消息处理与派发4. Android中StateMachine实例应用5. 后记原创 2022-04-29 19:32:13 · 859 阅读 · 0 评论 -
Android Bluetooth(一) — 蓝牙模块代码整体架构
Android Bluetooth(一) — 蓝牙模块代码整体架构0. 前言1. 代码分布2. 整体结构3. 常用类和名词解释4. 以蓝牙 打开 enable 为例简单说明下蓝牙工作的整个过程:5. 后续分析0. 前言 我之前提过,我目前接触的最多的Android 版本是 Android kk(4.4)与Android P(9.0),因为最近在Android kk上做了一个wifi模组的移植适配工作,因此对WiFi&BT模块有了些了解,本系列主要基于Android kk进行了解分析,也许其他版原创 2022-04-27 22:48:30 · 3464 阅读 · 1 评论 -
Android WiFi —softAP流程分析
Android WiFi — Ap功能实现与源码分析0. 前言1. wifiAp的ip2. WifiAp的config分析2.1 默认的config2.2 修改wifiAp的config配置流程3. 开启/关闭WifiAp热点状态流程4. 已连接设备列表4.1 读取wifiAp的已连接设备列表4.2 设备列表实时更新4.3 设备连接限制5. 源码分析5.1 WifiAp始于UI5.2 WifiConfiguration配置5.2.1 获取wifiConfig5.2.2 设置wifiConfig5.3 wif原创 2022-04-26 23:38:04 · 5278 阅读 · 0 评论 -
SurfaceFlinger的dump信息详解
SurfaceFlinger的dump信息详解1. 特殊宏的打开2. Sync机制3. DispSync参数4. layer的dump4.1 区域信息4.2 基本信息4.3 buffer信息4.3.1 数据格式4.3.2 activeBuffer4.3.3 queued-frames 新的帧的数量4.3.4 mRefreshPending刷新卡住了吗?4.4 SurfaceFlingerConsumer的dump4.4.1 材质名称4.4.2 mCurrentCrop裁剪区域4.4.3 mCurrentTr原创 2022-03-21 10:56:00 · 8981 阅读 · 0 评论 -
surfaceflinger分析
Surfaceflinger分析1. Surfaceflinger介绍2. bufferqueue 原理3. surfaceflinger 关系图4. layer显示内存分配5. surfaceflinger Layer1. Surfaceflinger介绍 surfaceflinger作用是接受多个来源的图形显示数据,将他们合成,然后发送到显示设备。比如打开应用,常见的有三层显示,顶部的statusbar底部或者侧面的导航栏以及应用的界面,每个层是单独更新和渲染,这些界面都是有surfaceflin原创 2022-03-09 20:40:12 · 2284 阅读 · 0 评论 -
Android系统分析—OTA升级
Android系统分析—OTA升级1. recovery1.1 升级流程2. 辅助功能2.1 ui.cpp2.2 screen_ui.cpp2.3 default_device.cpp2.4 roots.cpp2.5 bootloader.cpp2.6 verifier.cpp2.7 install.cpp2.8 adb_install.cpp3. updater进程4. applypatch5. 其他辅助库6. RecoverySystem1. recovery recovery的源代码在boota原创 2022-03-08 15:00:17 · 4346 阅读 · 0 评论 -
Android NativeDaemonConnector源码解析
NativeDaemonConnector源码解析1. NativeDaemonConnector2. 初始化3. 向netd发送指令4. 响应码5. netd 主动上报的消息处理6. 原理总结7. 打开有线网1. NativeDaemonConnector NetworkManagerService 和 netd 之间的桥梁public class NetworkManagementService extends INetworkManagementService.Stub imp原创 2022-03-04 18:45:55 · 2799 阅读 · 4 评论 -
Android wifi信号强度显示流程
Android wifi信号强度显示流程1. RSSI2. 从wpa_supplicant获取RSSI3. framework层对wifi信号强度的处理4. StatusBar 更新wifi信号强度5. Settings中的wifi列表更新wifi信号强度1. RSSI wifi的信号强度使用RSSI表示, 在Android的Framework中会中会转换为对应的格数在状态栏来显示 RSSI(Received Signal Strength Indication) 代表接收的信号强度指示, 它与模原创 2022-03-01 16:56:45 · 9451 阅读 · 0 评论 -
Android KK(4.4) 以太网和DHCP启动过程介绍
Android KK(4.4) 以太网和DHCP启动过程介绍1. ethernet启动流程2. DHCP启动过程2.1 JNI层接口2.2 DHCP客户端(libnetutils) 常做Android的大佬们可能知道,Android 5.0是一个历史分水岭一样的版本,其前后改动应该是所有版本中最大的了,而目前我的工作主要就围绕着Android P(9.0)和Android KK(4.4)两个版本进行支持,再了解熟悉了9.0的网络流程后,乘胜追击熟悉下Android 4.4 的网络模块,在源码基础上对以太原创 2022-02-25 17:25:14 · 1443 阅读 · 0 评论 -
EthernetMornitor 与 EthernetStateTracker
EthernetMornitor 与 EthernetStateTracker1. EthernetMonitor1.1 startMonitoring()1.2 handleEvent(String ifname,int event)1.3 EthernetStateTraker.notifyStateChange()1.4 EthernetStateTraker.notifyPhyConnected()2. 发送消息之后,EthernetStateTraker 会handleMessage()3. se原创 2022-02-16 19:27:25 · 498 阅读 · 0 评论 -
亿点点概述Android基础必会的四五六【四大组件 五大存储 六大布局】
Android 四大组件 五大存储 六大布局1. Android四大组件1.1 Activity1.1.1 概念1.1.2 生命周期1.1.3 四种启动模式1.1.4 三种跳转方式1.2 Service1.2.1 概念1.2.2 两种启动方式 最近girl friend需要搞Android基础汇报,在不情不愿却又你情我愿的的情况下,一起搞定了她的汇报文档,搞都搞了就想着自己也巩固下基础,做一份总结,希望可以让对Android感兴趣的朋友对Android的基础知识有些了解1. Android四大组件原创 2022-02-11 15:48:21 · 2277 阅读 · 0 评论 -
“makefile”的那些事儿(二)
makefile书写规则1. 规则举例2. 规则的语法3. 在规则中使用通配符4. 文件搜寻5. 伪目标 规则包含两个部分,一个是依赖关系,一个是生成目标的方法。 在Makefile中,规则的顺序是很重要的,因为,Makefile中只应该有一个最终目标,其它的目标都是被这个目标所连带出来的,所以一定要让make知道你的最终目标是什么。一般来说,定义在Makefile中的目标可能会有很多,但是第一条规则中的目标将被确立为最终的目标。如果第一条规则中的目标有很多个,那么,第一个目标会成为最终的目标。ma原创 2022-02-07 13:45:33 · 654 阅读 · 0 评论 -
“makefile” 的那些事儿(一)
详解makefile文件0. makefile概述2. make是如何工作的?0. makefile概述 或许很多Winodws的程序员都不知道这个东西,因为那些Windows的IDE都为你做了这个工作,但我觉得要作一个好的和 professional的程序员,makefile还是要懂。这就好像现在有这么多的HTML的编辑器,但如果你想成为一个专业人士,你还是要了解 HTML的标识的含义。特别在Unix下的软件编译,你就不能不自己写makefile了,会不会写makefile,从一个侧面说明了一个人是原创 2022-01-24 20:29:14 · 950 阅读 · 0 评论 -
Android network框架分析之EthernetServiceImpl和NetworkManagementService交互深入分析
Android network框架分析之EthernetServiceImpl和NetworkManagementService交互深入分析0. 引言1. EthernetServiceImpl通过NetworkManagementService监听网络状态的变化1.1 EthernetNetworkFactory.start1.2 InterfaceObserver1.3 BaseNetworkObserver1.4 INetworkManagementEventObserver1.5 NetworkMa原创 2022-01-10 16:47:57 · 3904 阅读 · 0 评论 -
Android network框架分析之NetworkManagementService和netd交互深入分析(二)
Android network框架分析之NetworkManagementService和netd交互深入分析(二)0. 引言1. NetworkManagementService和Netd交互深入分析1.1 NetworkManagementService的启动1.2 NetworkManagementService如何接收Netd传递的消息1.3 NativeDaemonConnector处理Netd的消息1.3.1 NativeDaemonConnector.listenToSocket1.3.2 N原创 2022-01-10 14:28:54 · 2270 阅读 · 0 评论 -
Android network框架分析之NetworkManagementService和netd交互深入分析(一)
Android network框架分析之NetworkManagementService和netd交互深入分析(一)0. 引言1. Netd深入分析1.1 Netd概述以及前期知识准备1.2 Netd的启动1.3 Netd进程main函数分析1.4 NetlinkManager1.5 NetlinkHandler1.5.1 NetlinkHandler::start1.5.2 SocketListener::threadStart1.5.3 NetlinkListener::onDataAvailable1原创 2022-01-06 17:28:25 · 4129 阅读 · 2 评论 -
Android network框架分析之NetworkFactory与NetworkAgent深入分析
Android network框架分析之NetworkFactory与NetworkAgent深入分析0. 引言1. EthernetNetworkFactory的初始化1.1 EthernetNetworkFactory.EthernetNetworkFactory1.2 EthernetNetworkFactory.start2. NetworkFactory网络工厂类详解及注册流程分析2.1 NetworkFactory类简介2.2 NetworkFactory注册到ConnectivityServi原创 2022-01-04 18:39:28 · 2569 阅读 · 0 评论 -
Android network框架分析之AsyncChannel原理分析
Android network框架分析之AsyncChannel原理分析以及实操演练0. 引言1. AsyncChannel功能概括1.1 AsyncChannel概括1.2 AsyncChannel的特点1.3 AsyncChannel工作模式2. Messenger概括2.1 Messenger的成员变量和构造函数2.2 Messenger.send发送函数2.3 IMessenger2.4 以Handler为参数初始化Messenger并通信流程2.5 以Service IBinder为参数初始化Me原创 2021-12-29 14:16:00 · 4160 阅读 · 0 评论 -
Android 9.0(P) 适配以太网功能
Android P 适配以太网功能0. 引言1. 需求及成果展示1.1 需求分析1.2 成果展示2. 实施流程2.1 Android P 以太网部分更新变化2.1.1 源码文件的增加2.1.2 接口参数的变动2.2 App层Settings修改2.3 Framework的适配2.3.1 EthernetService加入SystemServiceManager并启动2.3.2 EthernetService介绍2.3.3 EthernetServiceImpl 介绍2.3.4 EthernetTracker原创 2021-12-24 14:53:38 · 5936 阅读 · 10 评论 -
Android network框架分析之EthernetService启动流程
Android network框架分析之EthernetService启动流程0. 引言1. 开篇2. 前期准备知识2.1 Android Framework中网络相关的4大Service2.1.1 ConnectivityService2.1.2 NetworkPolicyManagerService2.1.3 NetworkManagementService2.1.4 NetworkStatsService2.2 Netd守护进程3. 以太网服务(EthernetService)启动流程3.1 Syst原创 2021-12-24 19:52:15 · 3926 阅读 · 0 评论 -
Android SoftAP 实现框架
Android SoftAP 实现框架1. SoftAP 简介2. 功能模块与框架图框架图3. 功能简单分析3.1 设备启动与管理3.2 网络共享功能的实现4. SoftAP 运行时序图 目前在跟进公司适配自己的WiFi模组,在Android 4.4适配过程中发现AP功能无法打开,而更换其他模组则无问题,由于对接的开发人员十分不靠谱,所以我不得不自行学习一下相关知识,事实证明,今天又是被迫吸取知识的一天,skr~1. SoftAP 简介 无线AP(AP,Access Point,无线访问节点、会话原创 2021-12-23 19:33:18 · 4199 阅读 · 4 评论 -
Makefile中=, :=, ?=和+=的含义
Makefile中=, :=, ?=和+=的含义1. 含义1.1 " = "1.2 " := "1.3 " ?= "1.4 " += "2. 实例 在Makefile语法中,时不时会见到各种“=”号的赋值语句,除了常见的“=”和“:=”,还有“?=”等 那么这些赋值等号分别表示什么含义呢?1. 含义1.1 " = "“=”是最普通的等号,然而在Makefile中确实最容易搞错的赋值等号,使用“=”进行赋值,变量的值是整个makefile中最后被指定的值。不太容易理解,举个例子如下:VI原创 2021-12-20 11:10:18 · 4274 阅读 · 0 评论 -
Android应用层之下不得不说的体系架构
Android体系架构1. 架构1.1 应用程序框架(Application Framework)1.2 进程通信层(Binder IPC)1.3 系统服务层(Android System Services)1.4 硬件抽象层(HAL)1.5 Linux内核(Linux Kernel)2. 实例3. 小节本文讲述的Android系统体系架构,是指应用层之下的整个系统内部的架构层级关系。而并非常说的4层架构:应用层,framework,运行库与环境,Linux内核,而是把系统内部的流程调用划分更加详细。原创 2021-12-16 20:50:27 · 2027 阅读 · 0 评论 -
理解Java反射机制
理解Java反射机制1. 概述2. 反射原理3. 反射的优缺点4. 反射的用途5. 反射相关的类5.1 Constructor5.2 Field5.3 Method5.4 Class类的原理6. 反射实例6.1 创建对象6.2 获取/修改属性6.3 调用方法6.4 调用内部类7. 小节对于Java使用者来说,反射机制可以说是不得不了解的重要技能之一1. 概述JAVA反射机制,可在运行态直接操作任意类或对象的所有属性和方法,主要有以下几个功能:在运行时获取任意对象所属的类在运行时构造类的实例对原创 2021-12-10 13:48:21 · 2001 阅读 · 0 评论 -
ps进程命令
ps进程命令1. 概述Linux上进程的5种状态ps标识对应的5种状态码2. ps的使用及示例说明命令参数输出结果含义1. 概述 在adb shell终端,输入 ps,可查看Android当前所有的进程状态。ps命令是Process Status的缩写。ps命令用来列出系统中当前运行的那些进程及状态。ps命令列出的是当前那些进程的快照,就是执行ps命令的那个时刻的那些进程,如果想要动态的显示进程信息,就可以使用top命令。 ps命令对于分析系统异常情况时都是必备的技能,需要通过这个简单命令来查看系原创 2021-12-07 20:15:21 · 1508 阅读 · 0 评论 -
源码详解Android 9.0(P) 系统启动流程之SystemServer
Android系统启动流程 SystemServer0. 前言1. system_server启动的整体概述2. system_server进程启动2.1 forkSystemServer2.2 Zygote.forkSystemServer0. 前言 在前面的篇章源码详解Android 9.0§ 系统启动流程之Zygote进程中我们重点分析了zygote启动的流程,但是剩余了两个重点的知识点没有讲解,其中之一就是Android system_server进程启动的完整流程,在本篇中我们将要揭开sys原创 2021-11-30 16:00:22 · 5925 阅读 · 0 评论