Android
二十岁了还没有去过星巴克
坚持博客更新,不断学习,不断进步。
展开
-
Android11 DHCP初识
先简单说一下DHCP过程,对于代码理解会有帮助。1、客户端发起Discover,来寻找DHCP服务器2、DHCPServer给Clinet发送offer3、DHCPClient接受Offer以后发送DHCPRequest4、DHCPServer发送packet ack表示可以用此IP,结束。客户端代码主要在DhcpClient.java中。里面有一个状态机。frameworks/base/packages/NetworkStack/src/android/net/dhcp/DhcpClient.原创 2021-09-07 14:01:00 · 3401 阅读 · 0 评论 -
Android 11 WiFi扫描流程梳理
上一篇我们梳理了WiFi的开启流程,Android11 WiFi开启流程,在最后我们说到ActiveModeWarden中注册了ClientListener监听器。我们接着这个逻辑继续梳理一下打开WiFi以后的扫描流程。一、WiFi打开以后,ClientListener会监听到,这时候会更新扫描状态。frameworks/opt/net/wifi/service/java/com/android/server/wifi/ActiveModeWarden.javaprivate class Client原创 2021-07-19 11:16:35 · 4139 阅读 · 4 评论 -
Android 11 WiFi开启流程
从刚接触WiFi时跟过wifi的开启流程,当时还是android9。到了Android11代码架构有了不小的改动,在这里重新梳理一遍,便于在工作中更快速的跟踪代码。一、Settings里改动不大,还是从WifiEnabler开始,调用WiFiManager的setWifiEnabled。packages/apps/Settings/src/com/android/settings/wifi/WifiEnabler.javaif (!mWifiManager.setWifiEnabled(isCheck原创 2021-07-16 09:10:41 · 10747 阅读 · 18 评论 -
Android系统模块编译命令
9.0:编译 wpa_supplicant make wpa_supplicant /vendor/bin/hw/wpa_supplicant编译 /frameworks/opt/net/wifi/service/ make wifi-service /system/framework/wifi-service.jar编译/framrwork/ make framework11.0编译 wpa_supplicant make wpa_supplicant原创 2021-05-27 15:59:50 · 984 阅读 · 1 评论 -
error: Missing nullability on parameter `cfg_cmd` in method 报错解决
最近做从android9.0到11.0的代码移植工作,需要在WifiManager.java中添加接口,添加以后编译报错:frameworks/base/wifi/java/android/net/wifi/WifiManager.java:5703: error: Missing nullability on parameter `cmd` in method `****` [MissingNullability]frameworks/base/wifi/java/android/net/wifi/W原创 2021-02-26 15:06:27 · 4376 阅读 · 1 评论 -
adb命令判断手机是user版本还是debug版本
手机研发中看手机是user版本还是userdebug或是eng版本有时候版本号里面没有显示是user还是debug,可以通过命令看:adb shell getprop ro.build.type就可以看到对应的值了,就是当前的版本原创 2021-01-29 16:48:39 · 5506 阅读 · 0 评论 -
高通平台如何使用QPST抓DUMP
手动强制进入dump的脚本手机系统死机白屏后,使用USB线 连接手机和计算机。打开计算机设备管理器 ,当其中与手机相关的端口只有DIAG 口 项(9006端口)时,表明手机处于DUMP 模式,可以抓DUMP LOG.注意Diag口为死机端口Dol端口为下载端口二 : 抓取DUMP LOG打开 QPST Configuration 软件,该软件 会自动抓DUMP LOG. 其中 Ports 项显示手机状态是 Sahara Memory Dump 。DUMP LOG 抓完后手机会自动重启。三 提原创 2020-09-05 10:27:37 · 2219 阅读 · 0 评论 -
获取手机nfc的MW version 和 FW version 记录
/vendor/nxp/opensource/commonsys/packages/apps/Nfc/nci/jni/NativeNfcManager.cpp 中会打印NFC的版本信息。MW version static jboolean nfcManager_doInitialize(JNIEnv * e, jobject o) { initializeGlobalDebugEnabledFlag(); uint8_t switchToUiccSlot = 0;#if (NXP_E原创 2020-07-23 16:42:43 · 1559 阅读 · 1 评论 -
adb shell读取设置手机ocd值以及ocd介绍
每个ocd数据对应一个索引值。 您可以使用index获取ocd数据。 OCD指标值枚举如下所示。enum ocd_lockable_table{magic_number = 0, //ocd.index.0magic_number_factory = 1, //ocd.index.1revision = 2, //ocd.index.2 and so on...system_ocd = 3,modem = 4,gps = 5,module_sn = 6,board_sn = 8,pr原创 2020-07-17 16:13:17 · 338 阅读 · 0 评论 -
高通 wlan 调试抓取日志大全
高通 wlan 调试总结随笔1. 进入ftm模式2. 抓取wifi log2.1 抓取 Android log2.1.1 How to enable wifi verbose log?2.1.2 How to collect adb log and kernel log in one file?2.1.3 How to open wpa_supplicant debug log?2.2 抓取 Tcpdump2.3 抓取 wifi driver log & FW log - for WCN36xx转载 2020-07-16 16:57:46 · 4094 阅读 · 0 评论 -
Linux文件权限修改
chmod 命令修改文件权限u 表示该文件的拥有者,g 表示与该文件的拥有者属于同一个群体(group)者,o 表示其他以外的人,a 表示这三者皆是。+表示增加权限、- 表示取消权限、= 表示唯一设定权限。r 表示可读取,w 表示可写入,x 表示可执行,X 表示只有当该文件是个子目录或者该文件已经被设定过为可执行-R : 对目前目录下的所有文件与子目录进行相同的权限变更(即以递回的方式逐个变更)将文件 file1.txt 设为所有人皆可读取 :chmod ugo+r file1.txt将文件原创 2020-07-16 16:17:13 · 386 阅读 · 0 评论 -
通过wifi对手机进行adb连接debug调试 adb connect ip_address:5555
adb支持两种连接Android系统的方式,USB方式及网络方式。一般android手机及android平板默认会设置为USB方式(直接插数据线的方式)。USB方式很简单,这里介绍一下网络方式。1、首先保证测试机与PC端处于同一局域网2、执行 adb tcpip 5555 配置端口3、执行adb connect 192.168.103.14:5555 (192.168.103.14...原创 2020-04-12 09:51:12 · 4446 阅读 · 0 评论 -
Android开发必须知道的adb命令大全
Android adb 命令大全描述命令1、查询已连接设备/模拟器adb devices2、指定设备获取屏幕分辨率adb -s 设备号 shell wm size3、给指定设备安装应用adb -s 设备号 install test.apk4、启动 adb server 命令adb start-server5、停止 adb server 命令adb kill-server6、查看adb版本adb version7、指定 adb se原创 2020-06-30 11:09:20 · 552 阅读 · 0 评论 -
在软件测试中UT,IT,ST,UAT分别是什么意思
UT(Unit Test)即软件测试分类中的单bai元测试,它是对程序du中的最小可测单元zhi进行测试,一般理解的单元测试就是针dao对代码的测试,通常采用一些白盒测试方法来覆盖相关源代码,比如针对一个C语言中的函数、Java中的一个类,此种测试要求测试人员具备很强的编码能力,目前大多数公司采用的是开发自测;IT (System Integration Test)即软件测试分类中的集成测试,它是在单元测试的基础上,将软件的各单元(功能模块)按照概要设计说明书针对模块、子系统、系统的组装测试,以此来检验系原创 2020-06-29 18:06:39 · 7254 阅读 · 0 评论 -
WiFi Direct详解(p2p使能,扫描,连接流程)基于Android8.1.0
简介:Wi-Fi Direct技术的目的是在没有Wi-Fi AP的情况下由两个或者多个Wi-Fi设备互相之间进行高速的数据通信。通信完全基于TCP/IP 协议,因此对于开发基于Wi-Fi Direct的应用来说非常友好。Wi-Fi Direct在刚提出时叫Wi-Fi Peer-to-Peer,所以也可以称作Wi-Fi P2P。它的主要竞争对手是Blue Tooth,在目前看来Wi-Fi Dire...原创 2019-06-17 14:19:47 · 20501 阅读 · 0 评论 -
Android四大组件详解
Android四大组件详解Android四大组件分别为activity、service、content provider、broadcast receiver。新的改变1、activity(1)一个Activity通常就是一个单独的屏幕(窗口)。(2)Activity之间通过Intent进行通信。(3)android应用中每一个Activity都必须要在AndroidManifest....原创 2019-06-14 09:31:39 · 46273 阅读 · 0 评论 -
Android wifi信号强度与图标对应关系
android中wifi分为5个等级,对应的图标是0格,1格,2格,3格,4格.那么对应的信号强度是多少呢?根据wifimanager中的算法calculateSignalLevel可以算得:0 rssi<=-1001 (-100, -88]2 (-88, -77]3 (-66, -55]4 rssi>=-55下面看谷歌代码实现:/frameworks/base/packages/SystemUI/src/com/android/systemui/原创 2020-06-18 15:44:16 · 1866 阅读 · 0 评论 -
linux下杀死进程(kill)
编译代码时中途手动中断,如何再次编译就会提示已经有Sonng所以需要关闭之前的Sonng进程。ps -ef | grep Sonng28393 26081 0 15:12 pts/2 00:00:00 grep --color=auto Sonngkill -s 9 28393原创 2020-06-18 11:06:10 · 355 阅读 · 0 评论 -
GPS测试 QXDM测到的卫星的CN0与看到的CN0不一致
测试GPS功能时,发现通过QXDM工具看到的modem侧的每个卫星的CN0都比手机软件上看到的要低3-3.5db,抓取实时log发现HAL层log打印出来的CN0值就与modem侧不一致。手机软件下载高通给的解释是:This is by design, which has been introduced from the end of 2018.That is to day, the signal strength value (CNo) keeps the same the one in Ante原创 2020-06-12 11:09:55 · 4541 阅读 · 1 评论 -
电脑连接多个安卓设备时 如何对指定安卓手机 执行adb命令
在日常工作中我们常常会用一台电脑连接多个测试机去进行测试但此时会遇到一个问题,不取消连接的情况下如何对指定的设备进行adb命令呢只需要两个步骤就可以完成第一步:adb devices查找到已连接的设备id号第二步:执行 命令:adb -s 你的设备id 你要操作的命令...原创 2020-06-08 13:57:50 · 1861 阅读 · 0 评论 -
Android SELinux avc dennied权限问题解决方法
1. 概述SELinux是Google从android 5.0开始,强制引入的一套非常严格的权限管理机制,主要用于增强系统的安全性。然而,在开发中,我们经常会遇到由于SELinux造成的各种权限不足,即使拥有“万能的root权限”,也不能获取全部的权限。本文旨在结合具体案例,讲解如何根据log来快速解决90%的SELinux权限问题。2. 调试确认SELinux问题为了澄清是否因为SELinux导致的问题,可先执行:setenforce 0 (临时禁用掉SELinux)getenforce转载 2020-06-02 15:06:22 · 1474 阅读 · 0 评论 -
Android 代码中对不同国家支持的信道的设置
配置文件在: kernel/msm-4.4/net/wireless/db.txt以中国为例:country CN: DFS-FCC (2402 - 2482 @ 40), (20) (5170 - 5250 @ 80), (23), AUTO-BW (5250 - 5330 @ 80), (23), DFS, AUTO-BW (5735 - 5835 @ 80), (33) # 60 gHz band channels 2,3: 44dBm (59400 - 63720 @ 2160),原创 2020-05-28 17:29:38 · 1367 阅读 · 0 评论 -
git报错sign_and_send_pubkey: signing failed: agent refused operation
在服务器添加完公钥后报错sign_and_send_pubkey: signing failed: agent refused operation执行以下命令解决:eval "$(ssh-agent -s)"ssh-add原创 2020-05-28 17:06:17 · 389 阅读 · 0 评论 -
三分钟学会 linux 的 selinux
一、简介安全增强型 Linux(Security-Enhanced Linux)简称 SELinux,它是一个 Linux 内核模块,也是 Linux 的一个安全子系统。SELinux 主要由美国国家安全局开发。2.6 及以上版本的 Linux 内核都已经集成了 SELinux 模块。SELinux 的结构及配置非常复杂,而且有大量概念性的东西,要学精难度较大。很多 Linux 系统管理员嫌麻烦都把 SELinux 关闭了。二、SELinux 基本概念2.1 主体(Subject)可以完全等同于原创 2020-05-25 11:28:53 · 517 阅读 · 0 评论 -
Android 使用fastboot命令刷机流程
fastboot 刷机命令查看设备是否连接adb devices进入 fastboot 模式adb reboot bootloader查看是否进入 fastboot 模式fastboot devices把相应的img文件刷入手机fastboot flash system system.imgfastboot flash boot boot.imgfastboot flash radio radio.img................重启手机fastboot reboo原创 2020-05-22 15:34:50 · 1435 阅读 · 0 评论 -
Android GPS学习 (一) :GPS 启动流程
一、Settings打开GPS的方法往数据库里面写值,然后framework层读取值再做相应处理。packages/apps/Settings/src/com/android/settings/location/LocationSwitchBarController.javapublic void onSwitchChanged(Switch switchView, boolean isChecked) { mLocationEnabler.setLocationEnabled(isCheck原创 2020-05-15 17:47:44 · 2002 阅读 · 0 评论 -
高通工具QXDM、QCAT和QPST的使用
QXDM,QPST和QCAT是Qualcomm高通公司针对高通芯片的抓包分析工具。QXDM抓包分析,QPST与手机com口连接,QCAT用来分析抓包产生的isf文件(log)。 工具名称 功能 QXDM 关闭打开备份还原NV、NV修...转载 2020-05-14 15:57:26 · 19667 阅读 · 3 评论 -
Android系统APP之SettingsProvider数据库的使用介绍
最近做需求用到Settings数据库比较多,简单总结一下。1.数据分类SettingsProvider对数据进行了分类,分别是Global、System、Secure三种类型,它们的区别如下:Global:所有的偏好设置对系统的所有用户公开,第三方APP有读没有写的权限;System:包含各种各样的用户偏好系统设置;Secure:安全性的用户偏好系统设置,第三方APP有读没有写的权限。2.保存位置Settings数据库的数据保存在手机/data/system/users/0目录下,settin原创 2020-05-11 11:19:53 · 3066 阅读 · 0 评论 -
android 系统数据库Settings属性
frameworks/base/packages/SettingsProvider/res/values/defaults.xmldefaults.xml 中是一些系统默认属性,用于在系统第一次开启时加载。例如第一次开机 WiFi 就是默认关闭的。<bool name="def_wifi_on">false</bool>/frameworks/base/core/...原创 2020-04-29 11:33:50 · 1140 阅读 · 0 评论 -
Android 9.0 飞行模式下禁用NFC 功能实现以及问题解决(二)
Android 9.0 飞行模式下禁用NFC 功能实现以及问题解决按照之前的方案修改代码以后,发现会有俩个问题,之前方案可以看我上面链接。1、因为只有preference才会调用NfcAirplaneModeObserver,所以只有我们打开NFC界面时,我们的代码才会生效。也就是说,虽然我们打开飞行模式再关闭飞行模式,NFC会恢复原来状态,其实真实情况是在这个过程中NFC压根没有关闭也没有打...原创 2020-04-28 11:15:36 · 745 阅读 · 0 评论 -
移植wireless tool到Android, /bin/sh:xx(命令) not found 问题的解决方案
/system/bin/sh: iwpriv: not found 问题解决方案代码下载地址在使用iwpriv命令时,遇到了 /system/bin/sh: iwpriv: not found 报错,如何去手机/system/bin目录下查找,果然没有这个命令,像ifconfig logcat adbd这些都是有的。所以手机需要安装 wireless-tools 工具。1、首先下载代...原创 2020-04-23 10:54:47 · 1218 阅读 · 0 评论 -
Android 9.0 飞行模式下禁用NFC 功能实现以及问题解决
Android默认打开飞行模式时会关闭蓝牙和WiFi,不会关闭NFC。但是在飞行模式下还可以手动打开WiFi和蓝牙,控制这个的参数就是airplane_mode_toggleable_radios,所以我们把这个参数里的NFC去掉,那么开启飞行模式就禁用NFC了,手动也无法再次打开。/frameworks/base/packages/SettingsProvider/res/values/def...原创 2020-04-17 16:37:00 · 1245 阅读 · 0 评论 -
Android手机中热点配置文件保存路径
Android中热点配置文件在手机中保存路径:/data/misc/wifi/softap.confAndroid中VPN配置文件在手机中保存路径:/data/misc/keystore/user_0原创 2020-04-14 11:37:49 · 3068 阅读 · 0 评论 -
WiFi MAC address在手机中保存路径
手机中 WiFi MAC address 保存在以下手机路径中:sys/class/net/wlan0/addressWCNSS_qcom_cfg.ini 文件在手机路径:/vendor/etc/wifi/WCNSS_qcom_cfg.ini原创 2020-04-13 18:20:39 · 1288 阅读 · 0 评论 -
Android P WiFi自动连接评分机制
1、WifiConnectivityManager的初始化frameworks/opt/net/wifi/service/java/com/android/server/wifi/WifiStateMachine.javaprivate void setupClientMode() { Log.d(TAG, "setupClientMode() ifacename = " + mInt...原创 2020-04-13 17:37:11 · 1470 阅读 · 0 评论 -
Android编译代码时遇到:“fatal error : openssl/bio.h :No such file or folder” 解决方案
Android编译代码时遇到:“error : openssl/bio.h :No such file or folder” 错误出现这个或者fatal error: openssl/名单.h: No such file or directory。都是没有安装libssl-dev~libssl-dev包含libraries, header files and manpages,他是ope...原创 2020-04-06 16:54:21 · 451 阅读 · 0 评论 -
Android HIDL机制学习
前言:在Android O之前,HAL是一个个的.so库,通过dlopen来进行打开,库和framework位于同一个进程。如下图所示:在Android O之后,framework和hal运行于不同的进程,所有的HAL采用新的HIDL技术来完成。一、HIDL简单介绍HIDL是Android8.0新出的一个技能,以service和client的方式实现hal接口,目的是想使Android...原创 2020-01-13 20:56:52 · 1903 阅读 · 0 评论 -
Android 10.0 WiFi状态机改动
在Android 9.0中,WiFi的状态处理在WifiStateMachine中进行,到了Android Q,取消了WifiStateMachine,新增了ClientModeImpl代替 WifiStateMachine 的功能,实际内容大同小异,函数的调用与Android P相差不大。...原创 2020-01-13 17:34:57 · 3151 阅读 · 0 评论 -
Android 10.0相关权限的变更(使用WiFi Direct必须打开定位)
Android 10.0中对隐私权(权限)做了变更。这里总结一些与 WLAN 相关的。1、对直接访问已配置的 WLAN 网络实施了限制如果应用以 Android 10 或更高版本为目标平台,并且应用不是系统应用或 DPC,则下列方法不会返回有用数据:getConfiguredNetworks() 方法始终返回空列表。每个返回整数值的网络操作方法(addNetwork() 和 update...原创 2020-01-09 16:04:10 · 5005 阅读 · 0 评论 -
Android实时获取热点已连接数(谷歌现成API可用,适用于第三方APP和系统APP)
获取手机热点当前已连接数,目前网上大多数思路是通过读取/proc/net/arp文件可以得到连接当前热点的设备的IP,通过遍历来获取已连接数。但其实这种做法是有很大缺陷的,因为一旦设备断开后,该设备的IP还是存在该文件中,之后再通过这种方法获取的已连接设备数就是错误的。其实 Android 源码中是有现成的 API 来获取已连接设备数的。HotspotControllerImpl 中的 get...原创 2020-01-08 22:06:39 · 3982 阅读 · 18 评论