- 博客(91)
- 收藏
- 关注
原创 记录一次WLAN Panic导致的gcore问题分析
高通Q+A架构,WLAN驱动Panic引起Kernel HANG,从而生成gcore的问题
2024-04-24 21:51:50
1243
4
原创 [Android][WIFI]手机作AP,关闭移动网络后,STA端断开重连问题分析
手机作为AP时,关闭移动网络流量开关,STA端出现断开重连的现象
2023-01-04 13:31:46
5072
1
原创 [Android]Android P(9) WIFI学习笔记 - 扫描 (3)
Android P WiFi扫描请求发起、扫描结果返回流程流程串联。
2022-09-09 14:50:56
2028
1
原创 [Android][DevTips]chrt命令修改线程优先级与调度策略
此次介绍的是Android系统中内置的chrt命令的使用和一些注意事项;
2022-08-18 10:41:35
1599
原创 SELinux规则添加进阶
在上一篇中,我们已经了解了一个常规`avc denied`日志信息该如何应对。当时挖的两个坑,今天来填一下:- 添加的SELinux规则是否存在权限放大;- 添加的SELinux规则是否触犯neverallow;实际上,这是一类问题,今天正好遇到了对应的需求,就以此为例,进行以下介绍:...
2022-07-26 13:58:43
1881
1
原创 [Android]基于AOSP源码为Pixel3编译boot.img(下)
如何将Android Kernel源码并入AOSP源码,使后者的编译框架可以直接从源码编译boot.img——下篇
2022-07-22 14:01:10
2564
2
原创 [Android]基于AOSP源码为Pixel3编译boot.img(中)
如何将Android Kernel源码并入AOSP源码,使后者的编译框架可以直接从源码编译boot.img——中篇
2022-07-08 13:37:36
1878
3
原创 [Android]基于AOSP源码为Pixel3编译boot.img(上)
如何将Android Kernel源码并入AOSP源码,使后者的编译框架可以直接从源码编译boot.img——上篇
2022-07-06 18:45:12
3507
10
原创 [Android][DevTips]修改AOSP编译环境OUT_DIR
在将Android kernel集成进AOSP编译树中,会或多或少出现由于环境变量OUT_DIR为相对路径,导致存放路径错误(例如产物生成在了kernel/msm-4.9/out下),这类问题可以通过如下任意一种方法解决
2022-07-05 10:48:42
956
原创 [Android][ASM]指令注入入门(四)——实际需求实现(中)
[Android][ASM]指令注入入门(四)——实际需求实现(中)前言在上一篇中,我们实现了无返回值的方法收尾插入Binder.clearCallingIdentity()/Binder.restoreCallingIdentity()方法;而这一篇,会在此基础上,将使我们的工具支持带返回值的方法;开发步骤源码端import java.util.Random;public class Test2 { private static final Random R = new
2022-05-06 10:03:27
302
原创 [Android][ASM]指令注入入门(三)——实际需求实现(前)
[Android][ASM]指令注入入门(三)——实际需求实现(前)前言在上一篇中,我们搭建了基于Ubuntu(WSL2)下JAVA的开发环境,今天我们基于这个环境,来实现一个实际需求:为特定方法的首尾分别插入Binder.clearCallingIdentity()与Binder.restoreCallingIdentity()产生这样需求的原因是如下这样一个情况:某些功能需要system_server内部各个服务间相互调用,但是开发人员在设计API时,无法考虑到调用方是否具备调用其他服务的权限
2022-04-29 15:40:02
1602
原创 [Android][ASM]指令注入入门(二)——开发环境搭建与Hello World
[Android][ASM]代码注入入门(二)—— 开发环境搭建与Hello World前言在上一篇中,我们见识了AOSP中使用asm实现的一个功能——lockedregioncodeinjection:其可以在编译时为services.core.unboosted.jar中指定类中的同步代码块添加try-catch代码块,并在代码块的首位追加boostPriorityForLockedSection()与resetPriorityAfterLockedSection()方法调用,并将最后修改产物保存为
2022-04-28 11:10:23
641
原创 [Android]基于AOSP源码为Pixel3编译vendor.img
[Android]基于AOSP源码为Pixel3编译vendor.img[Android]基于AOSP源码为Pixel3编译vendor.img前言环境台式机AOSP版本Pixel型号正文下载AOSP代码编译AOSP获取vendor.img提取vendor.img编译规则修改验证后记[Android]基于AOSP源码为Pixel3编译vendor.img前言环境台式机Ubuntu16.04AOSP版本9.0(android-9.0.0_r46 )Pixel型号Pixel3 (4GB + 6
2022-04-24 14:29:30
3804
14
原创 [Android][WIFI]关闭WLAN耗时分析
[Android][WIFI]关闭WLAN耗时分析前言基于Android P(9) 分析流程梳理详见:[Android]Android P(9) WIFI学习笔记 - Framework (2)和[Android]Android P(9) WIFI学习笔记 - HAL (2)背景引发这个思考,是由于一个现象:在热点打开的时候,关闭WLAN耗时约为1s;在热点关闭后,再关闭WLAN,耗时在2s以上;这么一个一致性很差的现象,确实很难让人理解,于是翻开之前的流程图,开始了梳理之路;梳理
2022-04-14 11:41:16
3114
3
原创 [Android][CTS][WIFI]Android P上CtsNetTestCases测试项导致系统重启问题分析
复现步骤执行:cts-tf > run cts -m CtsNetTestCases后概率复现;初步分析通过多次尝试,发现大多集中在如下这项测试项:android.net.wifi.cts.WifiManagerTest#testStartLocalOnlyHotspotSingleRequestByApps单跑此项后验证,确实有较高概率导致system_server进程崩溃,Android上层重启:cts-tf > run cts -m CtsNetTestCases -t
2022-01-13 18:14:04
2966
3
原创 [Android]CTS Fail项分析方法
[Android]CTS Fail项分析方法常规步骤为:通跑某一模块;查看测试结果;对Fail项进行单跑;辅助信息抓取;通跑某一模块以网络模块为例,通过如下测试项为例,在cts-tradefed交互界面输入list m可查看与之对应的待测模块(modules):cts-tf > list m...CtsNetTestCases...从中可以看到,CtsNetTestCases明显是网络相关的测试模块,因此执行:cts-tf > run cts -m CtsNetT
2021-12-29 13:19:08
4506
原创 [Android]通过‘avc denied‘日志信息添加SELinux规则
[Android]通过’avc denied’日志信息添加SELinux规则前言本文仅讨论如果通过’avc denied’日志信息,确定缺失的SELinux规则。暂不讨论:添加的SELinux规则是否存在权限放大;添加的SELinux规则是否触犯neverallow;(有时间再补上这两部分,挖坑+1…)背景最近在跑CTS,有些Fail项与SELinux有关,这里举个例子:cts-tf > run cts -m CtsNetTestCases -t android.net.ipv6
2021-12-28 17:45:23
3529
原创 [WSL]使用Beyond Compare作为WSL中git difftool的处理工具
首先需要在Windows侧安装Beyond Compare,并获得WSL下的路径,例如:/mnt/c/Program\ Files/Beyond\ Compare\ 4/BCompare.exe空格需要使用反斜杠("\")转义,或者使用单引号括起来:'/mnt/c/Program Files/Beyond Compare 4/BCompare.exe'修改~/.gitconfig[diff] tool = bc4[difftool "bc4"] cmd = '/mnt..
2021-11-26 14:03:58
1035
原创 [Android][ASM]指令注入入门(一)—— services.core.unboosted与services.core.priorityboosted
[Android][ASM]代码注入入门(一)—— 从services.jar开始说起前言以AOSP android-9.0.0_r46分支为例,这个模块改动不大,理论上适用于后续版本,但不保证;从实战入手,必要时讨论实现原理,适合直接上手实操,不适合系统学习;起因熟悉services.jar编译步骤的人应该都知道,services.jar编译实际上是静态引入多个jar包而成的:而services.core又是通过静态引入services.core.unboosted.jar而成的:对
2021-11-15 14:39:39
3575
原创 Lite Git (V) - Remote
Lite Git (V) - Remote前言本专栏名为Lite Git。主要想与Pro Git对应,后者为Git官方指南,有兴趣,或者想了解更多细节的同学,请移步官网下载PDF版。本专栏主要为了让初出茅庐的同学更快、更合理地掌握Git的基本运用;同时,本专栏也会介绍一下作为Android开发人员关心的:repo的运用;本篇是该专栏的第五篇,主要介绍Git的远端与本地的概念,属于比较重要的一节,刚开始了解Git的同学强烈建议了解一下;远端(Remote)仓库何为远端仓库?顾名思义,是相对于本
2021-11-02 17:22:52
175
原创 Lite Git (IV) - Branch
Lite Git (IV) - Branch前言本专栏名为Lite Git。主要想与Pro Git对应,后者为Git官方指南,有兴趣,或者想了解更多细节的同学,请移步官网下载PDF版。本专栏主要为了让初出茅庐的同学更快、更合理地掌握Git的基本运用;同时,本专栏也会介绍一下作为Android开发人员关心的:repo的运用;本篇是该专栏的第三篇,主要介绍Git的分支创建、删除,已经了解的可以跳过此篇;分支概念在介绍分支的概念前,先介绍一下git log这个命令:虽然在上一节我们就使用过git
2021-10-28 13:38:15
168
原创 Lite Git (III) - First Commit
Lite Git (III) - First Commit前言本专栏名为Lite Git。主要想与Pro Git对应,后者为Git官方指南,有兴趣,或者想了解更多细节的同学,请移步官网下载PDF版。本专栏主要为了让初出茅庐的同学更快、更合理地掌握Git的基本运用;同时,本专栏也会介绍一下作为Android开发人员关心的:repo的运用;本篇是该专栏的第三篇,主要介绍Git仓库的的结构划分,属于比较重要的一节,刚开始了解Git的同学强烈建议了解一下;在了解了本章节以后,后续的git命令学习就是手到
2021-10-27 14:56:14
263
原创 Lite Git (II) - Initialize
Lite Git (II) - Initialize前言本专栏名为Lite Git。主要想与Pro Git对应,后者为Git官方指南,有兴趣,或者想了解更多细节的同学,请移步官网下载PDF版。本专栏主要为了让初出茅庐的同学更快、更合理地掌握Git的基本运用;同时,本专栏也会介绍一下作为Android开发人员关心的:repo的运用;本篇是该专栏的第一篇,主要介绍Git的仓储创建,已经了解的可以跳过此篇;何为git仓库 (git repository)顾名思义,由git管理的一个目录,可以称之为一
2021-10-26 16:53:22
133
原创 Lite Git (I) - Setting up
Lite Git (I) - Setting up前言本专栏名为Lite Git。主要想与Pro Git对应,后者为Git官方指南,有兴趣,或者想了解更多细节的同学,请移步官网下载PDF版。本专栏主要为了让初入茅庐的同学更快、更合理地掌握Git的基本运用;同时,本专栏也会介绍一下作为Android开发人员关心的:repo的运用;本篇是该专栏的第一篇,主要介绍Git的安装,已经了解的可以跳过此篇;安装GitUbuntu (Debian)sudo apt install gitWindows
2021-10-25 13:52:04
120
原创 [SQLite]浅析其二——SQLite数据库的日志
文章目录SQLite数据库的日志日志的分类传统日志模式读取数据流程写入数据流程日志回滚流程WAL日志模式读取数据流程写入数据流程异常恢复流程SQLite数据库的日志SQLite数据存储是孤本数据,在写入时异常中断(断电,坏块等),会导致数据库文件结构损坏,造成数据丢失。因此日志的存在就非常必要,在官网的介绍中指出,SQLite支持通过PRAGMA journal_mode=?的形式设置日志模式,而当前支持的日志模式有如下几种:DELETETRUNCATEPERSISTMEMORYWALO
2021-09-17 13:58:03
7055
1
原创 [SQLite]浅析其一——SQLite数据库简介
SQLite数据库简述1.1. 介绍节选并翻译自官网介绍:SQLite是一个进程内的库,实现了自给自足的、无服务器的、零配置的、事务性的 SQL 数据库引擎。其代码完全开源,可供个人或商业完全免费使用。SQLite是一个嵌入式的SQL数据库引擎。与大部分SQL服务器不同,SQLite不存在单独的服务端进程,所有读写都是直接操作磁盘上的一个db文件;SQLite保存的数据库文件可跨平台使用——无论是32位/64位系统,还是大端/小端架构;SQLite并不是为了替代Oracle而生,而是为了替代fop
2021-09-17 10:38:40
1949
原创 [踩坑][Android]代码混淆引发的连环惨案
背景老规矩,先交代背景。现状是这样:wifi-ext-service.jar是我们开发的wifi的扩展接口的实现;wifi-service.jar与wifi-ext-service.jar均在编译时将代码混淆;wifi-ext-service.jar依赖wifi-service.jar;AOSP原生编译规则中,wifi-service.jar会静态依赖android.hardware.wifi-V1.0-java;一切都相安无事,直到现在有个开发需求,需要wifi-ext-service.
2021-08-20 16:03:44
742
原创 [OpenWRT]极路由B70(HC5962)刷OpenWRT笔记(二)
具体步骤下载v2ray的luci-app插件:https://github.com/kuoruan/luci-app-v2ray/releases下载v2ray-core核心组件:https://github.com/kuoruan/openwrt-v2ray/releases这里分享一个小技巧,在不知道路由器具体架构的情况下,可以通过SSH登录到路由器中,执行opkg print-architecture查看已安装的应用是面向什么架构的,从而反推出本机的CPU架构,如我本机的示例如下,由此可得
2021-08-09 14:37:35
5076
原创 [OpenWRT]极路由B70(HC5962)刷OpenWRT笔记(一)
快速导航如果是原厂镜像,请从1开始;如果已经获取SSH权限,请从2开始;如果已经备份过镜像,请从4开始;如果已经备份过镜像+MAC,请从5开始;如果已经刷过PB-Boot或者BREED,请从6开始;具体步骤如果是原厂镜像,访问此网站可帮助获取路由器SSH权限:http://www.hiwifi.wtf/获取后SSH登陆路由器,执行:cat /proc/mtd 查看分区情况: dev: size erasesize namemtd0: 00080000 0002
2021-08-07 15:38:21
7241
原创 [Android]Android P(9) WIFI学习笔记 - HAL (2)
目录前文回顾前言入口WifiNativeIWifiChipIWifiCond`IWificond.disableSupplicant()``IWificond.tearDownInterfaces()`小结下一步计划:前文回顾WIFI学习笔记 - Framework (1)WIFI学习笔记 - Framework (2)WIFI学习笔记 - HAL (1)前言基于Android P源码学习;代码片为了方便阅读段经过删、裁减,请以实际源码为准;本篇旨在补全WIFI学习笔记 - HAL
2021-07-20 14:13:12
1391
原创 [Android]Android P(9) WIFI学习笔记 - HAL (1)
目录前文回顾前言入口WifiNative初始化打开WIFIIWifiChip前文回顾WIFI学习笔记 - Framework (1)WIFI学习笔记 - Framework (2)前言基于Android P源码学习;代码片为了方便阅读段经过删、裁减,请以实际源码为准;入口根据前两篇的分析结果,调用栈都汇聚到了WifiNative:打开Wifi:mWifiNative.setupInterfaceForClientMode(false, mWifiNativeInterfaceCa
2021-07-19 11:08:53
5036
5
原创 [Android][dnsmasq]从一个bug入门dnsmasq的IP地址分配逻辑
背景今天接到做WIFI以后的第一个问题分析,现象如下:复现步骤:机器连接某个特定WIFI (办公场所提供,无法登陆后台确认设置信息)机器再打开热点(即桥接模式)手机连接热点期望结果:手机可以正常连接实际结果:手机无法连接,始终停留在“正在获取IP地址”;这个问题比较“神奇”的地方在于:只有当机器连接某个特定WIFI时出现问题;连接该特定WIFI时稳定复现;连接其他WIFI时稳定不复现;出于直觉,这个问题很大概率上是这个WIFI设置与机器出现了不兼容的情况;但是仍然
2021-07-16 17:10:38
3276
6
原创 [Android][踩坑]libwifi-hal是如何兼容平台差异的
背景事情起因是我在学习WIFI Hal部分时,发现一个比较困惑的地方:代码路径:hardware/interfaces/wifi/1.2/default/wifi_legacy_hal.cpp:wifi_error WifiLegacyHal::QcAddInterface(const std::string& iface_name, const std::string& new_ifname,
2021-07-12 18:13:56
8696
3
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人