- 博客(28)
- 收藏
- 关注
原创 Android13 Wifi Scan流程梳理
遇到面试官让我讲讲Android的wifi框架,这一块没仔细看过,排查问题一般都是从wpa_supplicant开始,上层一个wifimanager,几个services和他们对应的几个状态机,简单看过一遍感觉没什么特别复杂的东西,这次简单梳理一下.scannerImpl.scan(settings)这里通过aidl调用c++的服务,这里的流程也不复杂,就是打包,然后通过netlink将NL80211_CMD_TRIGGER_SCAN发送到内核。通过aidl暴露给上端的api。调用对应的service。
2023-06-05 11:11:05 1807
原创 driver,bus,device
在里面首先要检查驱动所需要的supplier是否正常,例如上下电,时钟等驱动,检查之后会调用bus注册时候的probe函数,如果没有则调用驱动中的函数。如果检查失败,驱动会延后再次触发driver_probe_device。无论是device还是driver都注册到bus总线上,bus负责driver和device的匹配。从上面可以看出,platform总线是通过设备和驱动的名字来实现匹配的。从里面可以看出,还是调用的bus注册时候的match函数。下面以platform总线为例,讲解总线的注册。
2023-04-14 00:43:36 177
原创 OpenHarmony js到hal层通信机制
xxxServiceProxy继承PeerHolder 和 xxxInterface// 定义静态变量,才能通过iface_cast创建一个包含IPCObjectProxy的xxxServiceProxy对象// 定义静态变量,才能通过iface_cast创建一个包含IPCObjectProxy的xxxServiceProxy对象。
2023-03-22 01:37:53 955
原创 Linux 打开文件显示: No such file or directory
64位系统打开32位文件,显示no such file or directory
2022-08-22 14:41:13 1693
原创 vscode remote permission denied
当使用 ssh name@server_id 远程登录服务器时,出现错误提示:Permission denied (publickey). 这是因为服务器默认禁用了ssh密码登录权限。 sudo vim /etc/ssh/sshd_configPasswordAuthentication,将其后的 no 改为 yes。 sudo service ssh restart...
2022-04-28 15:39:59 5798
原创 蓝牙连接流程图
#mermaid-svg-o0FBV7ER2l5kSGUa {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-o0FBV7ER2l5kSGUa .error-icon{fill:#552222;}#mermaid-svg-o0FBV7ER2l5kSGUa .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-o0FBV7E
2022-04-24 11:02:22 1862 1
原创 蓝牙关闭流程
#mermaid-svg-SkXVuKe1qkaW9Nbz {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-SkXVuKe1qkaW9Nbz .error-icon{fill:#552222;}#mermaid-svg-SkXVuKe1qkaW9Nbz .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-SkXVuKe
2022-04-20 14:48:35 2291
原创 蓝牙打开流程
#mermaid-svg-TwTVQWqebajoz7K0 {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-TwTVQWqebajoz7K0 .error-icon{fill:#552222;}#mermaid-svg-TwTVQWqebajoz7K0 .error-text{fill:#552222;stroke:#552222;}#mermaid-svg-TwTVQWq
2022-04-20 14:04:06 2254
原创 Gerrit 安装配置
前提:网上的教程都太老了,一会mysql版本问题,一会jdk版本问题,折腾了两天没弄好,干脆全弄最新重新搞文章目录1.jdk2.安装git3.安装apache24.安装配置gerrit5.安装gitweb6.重启gerrit和apache21.jdk直接安装11的sudo apt-get updatesudo apt list | grep jdksudo apt install openjdk-11-jdk2.安装gitsudo apt install git3.安装apache2
2022-01-02 20:08:08 8700 2
原创 Activity流程:从ActivityThread开始(一)
一个activity启动是从activityThread#main开始的,这里省掉一些判断,只看我们需要重点关注的。 public static void main(String[] args) { // 创建一个消息队列 Looper.prepareMainLooper(); //创建一个ActivityThread实例 ActivityThread thread = new ActivityThread(); thread
2021-10-19 01:24:47 383
原创 AMS防止优先级反转
ActivityManagerService中有这么两个方法,resetPriorityAfterLockedSection()和boostPriorityForLockedSection()。直接搜是看不到这两个方法在哪被调用的,这个涉及到ASM插桩,详细可以见:Google教你用ASM:lockedregioncodeinjection。再此之前我们先理解一下什么叫优先级反转。我们先假设三个任务准备执行,A,B,C,它们的优先级依次是A>B>C;首先:C处于运行状态,获得CPU正在
2021-09-08 15:07:39 421
原创 Android 显示档位
/frameworks/base/packages/SettingsLib/src/com/android/settingslib/display/DisplayDensityUtils.java简化计算公式:x = (最短边px / 2)/ 默认dpi小: 默认显示默认: 默认显示大: x > 1.09较大:x > 1.18最大:x> 1.27默认dpi获取:adb shell wm densityadb shell getprop ro.sf.lcd_density
2021-09-07 00:24:25 528
原创 Android获取半透明属性
起因做8.0适配的时候,发现8.0上不能同时开启windowsIsTranslucent和固定屏幕方向,所以在BaseActivity中将设有半透明属性的Activity取消固定屏幕方向。解决方案1.加入版本判断,取消屏幕固定if (Build.VERSION.SDK_INT == Build.VERSION_CODES.O) { requestionOrientation = ActivityInfo.SCREEN_ORIENTATION_UNSPECIFIED;}2.获取半透明属性由于
2021-08-31 01:06:20 387
原创 MinGw安装配置
1.下载安装MinGw下载地址1.版本号:选最新即可2.电脑系统架构:32位 OR 64位3.操作系统接口协议:posix 协议, Win324.异常处理模型:(seh不支持32位)5.建立修订:(未知作用)2.配置环境变量安装路径一直到bin目录3.打开cmd,输入gcc -v...
2021-08-01 16:50:15 616
原创 Google教你用ASM:lockedregioncodeinjection
boost的部分直接参考AMS中优先级调整的方法就好了。重点在于这个lockedregioncodeinjection工具具体在干嘛?
2021-07-26 00:21:15 414
原创 Malformed argument has embedded quote: -Djava.endorsed.dirs=\“\”
装了findbugs之后报错:Malformed argument has embedded quote: -Djava.endorsed.dirs=\“\”打开帮助——编辑自定义VM选项,在最后一列添加下列代码-Djdk.lang.Process.allowAmbiguousCommands=true重启idea
2021-05-16 23:48:38 797
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人