自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(162)
  • 收藏
  • 关注

原创 代码段收藏与阅读有感

android 代码更新有感:1. Android O的Settings引入了PreferenceController这个包装类来实现对Preference的精细化控制,让代码结构更加地鲜明,很好地体现了单一职责原则。1.Android 名企面试题及涉及知识点整理 https://www.jianshu.com/p/735be5ece9e81.Java关键字final有“这是无法改...

2020-09-22 10:06:35 157

原创 Java的学习积累

看之前,先记录一下理解“WifiManager.java IWifiManager mService; //这里定义了一个成员变量mService, 它需要被赋值一个引用对象:这个引用对象是实现了IWifiManager 这个接口的类的一个实例-----这就解释了接口是不能有对象的;但是接口可以像“父类对象引用子类对象Father f = new Son();”的方式来引用实现了该接口的类...

2018-08-30 16:38:22 105

原创 Wpa_supplicant 调试故障原因分析

Wpa_supplicant 调试故障原因分析

2022-10-25 11:06:54 5411

原创 wifihal的实现原理

modified: make/target/product/base_system.mk //这次添加JNI的时候,单边模块是可以生成的jni的库的,但是,整编就是不能生成. 最后,在这个MK文件中添加JNI的模块名,结果还是生成了的.— a/make/target/product/base_system.mk+++ b/make/target/product/base_system.mk@@ -273,6 +273,7 @@ PRODUCT_PACKAGES += wificond wifi

2021-08-26 21:00:11 1371

原创 bluetooth 流程梳理-1

蓝牙服务层的使能基础是其初始化完成,也就是AdapterService通过onBind()将AdapterServiceBinder上报给bind该服务的调用者。我们现在应该都知道在安卓系统中bind该服务的为BluetoothManagerService。本篇我们就从蓝牙服务管理收到bind的回调开启蓝牙使能流程的分析。熟悉安卓系统中bind服务机制的小伙伴应该都知道,该bind调用会连同回调函数ServiceConnection一起下发给系统,这样服务bind成功后通过该回调上报到对应的调用层,在蓝

2021-08-04 17:28:29 389

原创 命令设置wifi国家码

1. wpa_cli -i wlan0 set country [country_code]2. service call wifi [setCountryCode_CODE] s16 [country_code]setCountryCode_CODE 是对应代码中IWifiManager.aidl中interface IWifiManager的setCountryCode方法对应的位置(从1计数)。3. iw reg set [country_code]在进行wifi信令测试时,常...

2021-08-04 17:23:01 4370

原创 Perl中的文件包含(do, require, use) | 如何编写Perl模块

Perl中的文件包含,有3中方法:do, require, 以及use1. do:1)形式:do 'filename';说明:这里filename需要添加单引号,否则会出错;filename可以为任何后缀的,甚至没有后缀,不要求是pl或者pm等。2)关于do的理解:do 'filename'首先需要读入filename的文件(如果读入失败,返回undef而且会设置$!变量);如果读入成功,然后对filename读入的语句进行编译(如果无法编译或者编译错误,会返回undef而且设置错误信息...

2021-06-25 15:08:02 444

原创 跟我一起写 Makefile(四)

书写规则————规则包含两个部分,一个是依赖关系,一个是生成目标的方法。在Makefile中,规则的顺序是很重要的,因为,Makefile中只应该有一个最终目标,其它的目标都是被这个目标所连带出来的,所以一定要让make知道你的最终目标是什么。一般来说,定义在Makefile中的目标可能会有很多,但是第一条规则中的目标将被确立为最终的目标。如果第一条规则中的目标有很多个,那么,第一个目标会成为最终的目标。make所完成的也就是这个目标。好了,还是让我们来看一看如何书写规则。一、规则举例

2021-06-17 17:54:41 66

原创 跟我一起写 Makefile(三)

Makefile 总述———————一、Makefile里有什么?Makefile里主要包含了五个东西:显式规则、隐晦规则、变量定义、文件指示和注释。1、显式规则。显式规则说明了,如何生成一个或多的的目标文件。这是由Makefile的书写者明显指出,要生成的文件,文件的依赖文件,生成的命令。2、隐晦规则。由于我们的make有自动推导的功能,所以隐晦的规则可以让我们比较粗糙地简略地书写Makefile,这是由make所支持的。3、变量的定义。在Makefile中我们要定义一系列的变量,变

2021-06-17 16:26:53 58

原创 跟我一起写 Makefile(二)

三、make是如何工作的在默认的方式下,也就是我们只输入make命令。那么,1、make会在当前目录下找名字叫“Makefile”或“makefile”的文件。2、如果找到,它会找文件中的第一个目标文件(target),在上面的例子中,他会找到“edit”这个文件,并把这个文件作为最终的目标文件。3、如果edit文件不存在,或是edit所依赖的后面的 .o 文件的文件修改时间要比edit这个文件新,那么,他就会执行后面所定义的命令来生成edit这个文件。4、如果...

2021-06-17 15:56:07 75

原创 跟我一起写 Makefile 一

概述——什么是makefile?或许很多Winodws的程序员都不知道这个东西,因为那些Windows的IDE都为你做了这个工作,但我觉得要作一个好的和professional的程序员,makefile还是要懂。这就好像现在有这么多的HTML的编辑器,但如果你想成为一个专业人士,你还是要了解HTML的标识的含义。特别在Unix下的软件编译,你就不能不自己写makefile了,会不会写makefile,从一个侧面说明了一个人是否具备完成大型工程的能力。因为,makefile关系到了整个工程的编译规则

2021-06-17 14:46:05 83

原创 cc ,gcc 命令解释

1. 语法cc [-c|-S|-E] [-std=standard][-g] [-pg] [-Olevel][-Wwarn...] [-Wpedantic][-Idir...] [-Ldir...][-Dmacro[=defn]...] [-Umacro][-foption...] [-mmachine-option...][-o outfile]...

2021-06-17 14:34:13 372

原创 Manifest和Repo使用详解

Android使用repo来管理多个Git项目。它需要一个manifestXML文件来指示这些git项目的属性。Manifestrepo manifestXML可以包含下面的元素。以如下,manifest片段为例:https://github.com/CyanogenMod/android <?xml version="1.0" encoding="UTF-8"?> <manifest> <remote name="githu...

2021-05-14 17:57:19 3390

原创 Repo 详解

1 repo介绍Android使用Git作为代码管理工具,开发了Gerrit进行代码审核以便更好的对代码进行集中式管理,还开发了Repo命令行工具,对Git部分命令封装,将百多个Git库有效的进行组织。1.1清单库文件介绍一个清单库可以包含多个清单文件和多个分支,每个清单文件和分支都有对应的版本。清单文件以xml格式组织的。举个例子:Øremote元素,定义了名为korg的远程版本库,其库的基址为git://172.16.1.31/Ø...

2021-05-14 13:49:54 3044

原创 Android 打印java堆栈的几种方法

在Android调试过程中经常会出现程序出现的结果不是我们预期的结果,那就需要加Log打印调试,看调用过程是否正确,此时就需要打印程序的调用栈,特别是Android代码相当庞大,打印堆栈更有利于我们分析问题,下面就记录下平时用到不退出程序打印堆栈的方法。验证的方法相关简单,在Activity的类中创建一个方法ThrowException,在onCreate中调用此方法,看打印出什么? 1 2 3 4 5 6 7 8 9.

2021-05-05 14:18:35 462

原创 Android蓝牙开发(一)蓝牙模块及核心API

蓝牙模块从蓝牙4.0开始包含两个蓝牙芯片模块:传统/经典蓝牙模块(Classic Bluetooth,简称BT)和低功耗蓝牙(Bluetooth Low Energy,简称BLE)。经典蓝牙是在之前的蓝牙1.0,1.2,2.0+EDR,2.1+EDR,3.0+EDR等基础上发展和完善起来的, 而低功耗蓝牙是Nokia的Wibree标准上发展起来的,是完全不同两个标准。1. 经典蓝牙模块(BT)泛指蓝牙4.0以下的模块,一般用于数据量比较大的传输,如:语音、音乐、较高数据量传输等。经典

2021-04-22 11:26:12 886

原创 蓝牙Profile

蓝牙ProfileBluetooth的一个很重要特性,就是所有的Bluetooth产品都无须实现全部 的Bluetooth规范。为了更容易的保持Bluetooth设备之间的兼容,Bluetooth规范中定义了Profile。Profile定义了设备如何实现一种连接或者应用,你可以把Profile理解为连接层或者应用层协。在所有的Profile中,有四种是基本的Profile,这些Profile会被其它的Profile使用,它们包括GAP/SDAP/SPP/GOEP Profile。1.1 GAP

2021-04-20 14:35:39 230

原创 MDM9607平台 Secure Boot调试记录

MDM9607平台 Secure Boot调试记录目录一 概述... 4二 原理及流程... 42.1 安全启动原理... 42.2 安全启动结构图:... 52.3 安全启动流程图... 5三 证书简介... 6四 签名镜像格式... 7五 熔丝熔断... 75.1 熔断使能... 75.2 熔断过程... 85.2.1. 85.2.2. 85.2.3. 85.2.4. 85.2.5. 85.2.5. 95.2.6. 9..

2021-04-14 17:30:32 436

原创 java 四种内部类和内部接口

/** * 常规内部类:常规内部类没有用static修饰且定义在在外部类类体中。 * 1.常规内部类中的方法可以直接使用外部类的实例变量和实例方法。 * 2.在常规内部类中可以直接用内部类创建对象 */ publicclassMyOuter { privateintx =100; classMyInner{ privateString y="Hello!"; ...

2021-04-12 16:37:29 97

原创 Android P WiFi自动连接评分机制

1、WifiConnectivityManager的初始化frameworks/opt/net/wifi/service/java/com/android/server/wifi/WifiStateMachine.javaprivate void setupClientMode() { Log.d(TAG, "setupClientMode() ifacename = " + mInterfaceName); mWifiStateTracker.updateState(WifiSt

2021-04-01 14:44:46 895

原创 Android.bp 语法浅析

随着 android 工程越来越大,包含的 module 越来越多,以 makefile 组织的项目编译花费的时间越来越多。Google 在 7.0 引入了 ninja 是 Google 的一名程序员推出的注重速度的构建工具,一般在 Unix/Linux 上的程序通过 make/makefile 来构建编译,而 Ninja 通过将编译任务并行组织,大大提高了构建速度。7.0 的时候 android 项目还是有大部分是由 makefile 来组织的,因此 Google 引入了 kati 将 makefil

2021-03-30 14:55:41 1479 1

原创 ADB命令使用大全及使用原理

此文章内容整合自网络,欢迎转载。我相信做Android开发的朋友都用过ADB命令,但是也只是限于安装应用push文件和设备重启相关,更深的就不知道了,其实我们完全可以了解多一点,有一些不常用的场景我们至少应该知道它可以做到,比如,我们知道adb install 却不知道adb shell am start。前者是用来安装软件,后者用来打开软件,后者的一个使用场景让我对他重视:公司定制Android系统,在调试屏幕的时候要看是否满屏验证驱动是否正常,比较麻烦的做法是要拿到Android开发者手里用ecli

2021-02-25 10:51:06 3962

原创 HIDL_interface_hashing--hidl 中哈希的理解-zgs

概述l 每一个接口文件对应一个.hal文件l 保护接口文件不被轻易修改。如果修改,编译就会报错,同时会生成一个修改后hashing值l 确保接口变化得到充分审查布局 每一个包根目录下都有一个current.txt文件。例如android.hardware对应hardware/interfaces。这个文件包含了发布的所有接口文件即.hal文件以及对应的hashing值。Hashing产生1.手动添加hash到current.txt....

2021-02-20 11:02:58 633

原创 hostapd_cli 使用命令

hostapd_cli 软件介绍1、功能介绍hostapd_cli是一款用作无线 AP 功能的客户端程序。它需要与hostapd主程序配置使用。hostapd 的使用可以参考 《hostapd 使用手册》。注:本篇文档均是针对 SylixOS 下的 hostapd_cli 的使用说明。2、工具使用hostapd_cli 的编译hostapd_cli 用于设置或修改hostapd的相关服务,因此其源码就在 hostapd 工程中。在SylixOS下,如果需要编译hostapd...

2021-01-27 11:51:31 6975

原创 wpa_supplicant 是一款用于连接 AP 热点的应用工程

wpa_supplicant 使用手册本编用于介绍 SylixOS 下的 wpa_supplicant 使用方法。概述wpa_supplicant 是一款用于连接 AP 热点的应用工程,借助这个程序,可以使 SylixOS 下的无线网卡作为一个 STA 设备去连接想要连接的热点。使用方法本篇以连接一个 AP 热点为例,说明如何使用 wpa_supplicant。这个热点的信息如下:编译部署首先从 git 仓库中下载好对应的源码工程,然后导入 IDE 进行编译。编译完成后,直接 upl

2021-01-27 11:35:41 372

原创 configure.ac(configure.in)内容详解

配置configure.ac用自动生成Makefile的工具来生成Makefile的过程中,需要用autoscan命令来生成configure.scan文件,然后将它改名字为configure.ac或者configure.in,然后就来更改其中的一些相关信息来完成下面需要完成的配置,那么这个configure.ac怎么来写?今天我们就将这个过程分开来和大家共同研究和探讨下。我们在生成的过程中会用autoconf命令来处理configure.ac/configure.in文件,生成一个configur

2021-01-26 14:11:09 4085

原创 Linux 开机脚本启动顺序:

Linux 开机脚本启动顺序:第一步:启动内核第二步:执行init (配置文件/etc/inittab)第三步:启动相应的脚本,执行inittab脚本,并且执行里面的脚本/etc/init.d rc.sysinit rc.d rc.local。。。第四步:启动login登录界面 login第五步:在用户登录的时候执行sh脚本的顺序:每次登录的时候都会完全执行的 /etc/profile /etc/bashrc /root/.bashrc /root/.bash_profile init...

2021-01-26 10:10:56 618

原创 2021-01-19 inittab脚本分析以及 Linux 开机脚本启动顺序

Linux 开机脚本启动顺序:第一步:启动内核第二步:执行init (配置文件/etc/inittab)第三步:启动相应的脚本,执行inittab脚本,并且执行里面的脚本/etc/init.d rc.sysinit rc.d rc.local。。。第四步:启动login登录界面 login第五步:在用户登录的时候执行sh脚本的顺序:每次登录的时候都会完全执行的 /etc/profile /etc/bashrc /root/.bashrc /root/.bash_profile init...

2021-01-19 19:34:43 230

原创 makefile.am_make与makefile的区别_makefile编写

Makefile.am将指明工程需要哪些源文件,建造的是什么,如何安装它们。具体语法如下:option_where_PRIMARY = targets …targets是要建造的目标PRIMARY可以是下面的一个:可能值 解释where 表示目标被安装那里,可以是下面的值:可能项 解释详细的文件结构看以前的文章。[Autotools 使用一,文件结构]()在where前面还可以有一个可选项optiondist_ 分发目标(默认)。nodist_ 不分发。

2020-12-09 17:34:02 684

原创 grep文本搜索工具详解

############grep命令############这个命令属于文本处理三大命令之一,强大的文本搜索工具(贪婪模式)全面搜索正则表达式并把行打印出来)是一种强大的文本搜索工具,它能使用正则表达式搜索文本,并把匹配的行打印出来。用于过滤/搜索的特定字符。可使用正则表达式能多种命令配合使用,使用上十分灵活语法:grep [options] PATTERN [FILE...]选项:-a --text # 不要忽略二进制数据。-A <显示行数> --after-context

2020-09-22 11:03:06 231

原创 经济理解

不是存款创造贷款,而是贷款创造存款,货币啊,主要就是贷款创造的。

2020-09-22 10:10:16 76

原创 ffos:init,b2g 启动过程

try to analyze b2g ,nuwa and content process.自我疑惑问题记录与解答。。。系统物理按键按下,固件(firmware)bootloader按需加载文件到内存?(加载内核进内存),kernel run脚本?启动init进程,解析init.rc,init.b2g.rc, init进程启动b2g进程,init同时?启动一些守护进程(deamon :rild ,vold)(init启动的?),b2g?init?启动系统服务(system service)对核心服务进

2020-07-09 17:32:23 164

原创 AndroidManifest--详细理解

以6.0系统中的Settings模块源码为例讲解。<manifest/>标签层:这是整个清单文件的最上层,用来做一些最基本的声明,如(包名,权限,资源命名空间等)。老规矩,通过栗子来讲解:<manifest coreApp="true" package="com.android.settings" xmlns:android="http://schemas.android.com/apk/res/android" .

2020-06-19 15:59:58 2074

原创 Framework基础:Android系统进程android.uid.system是如何来的?

Android的系统进程是SystemServer,他是怎么来的呢?init进程###Andriod的内核是linux,手机首先启动linux内核,内核第一个进程是init进程,为1号进程。如下图Paste_Image.pngapp_process 进程###/frameworks/base/cmds/app_process/app_main.cppapp_process 是init进程后进入java世界的入口,他是init进程通过解释下面的rc文件,来启动一个bin文件产生的.

2020-06-19 15:01:42 717

原创 开启服务startservice和绑定服务biindservice

Service什么是Service在后台长期运行的没有界面的组件。其他组件可以启动Service让他在后台运行,或者绑定Service与它进行交互,甚至实现进程间通信(IPC)。例如,可以让服务在后台处理网络交互,播放音乐,文件I/O,或者与ContentProvider交互。创建一个Service新建一个类,继承Service,重写相关方法,如onBind,onUnBind,onCreate,onDestorey。在AndroidManifest.xml中配置Service和相关权限。&lt

2020-06-13 17:36:10 386

原创 Android WiFi调试常用标签文件

WifiServiceWiFi的核心服务,是启动整个WiFi服务的,它在我们的logcat关注范围内WifiScanningServiceWiFi的扫描服务,一般我点开或者进入到WiFi列表页面里,这个服务在后台帮我们刷新热点,同样在logcat关注的范围内ConnectivityService关于有线与WiFi的切换,以及系统关于网络的链接,它帮忙在管着事呢,所以也在logc...

2020-04-26 10:20:46 575

原创 Android HIDL学习(6)---Fast Message Queue

快速消息队列 (FMQ)HIDL 的远程过程调用 (RPC) 基础架构使用 Binder 机制,这意味着调用涉及开销、需要内核操作,并且可以触发调度程序操作。不过,对于必须在开销较小且无内核参与的进程之间传输数据的情况,则使用快速消息队列 (FMQ) 系统。FMQ 会创建具有所需属性的消息队列。MQDescriptorSync 或 MQDescriptorUnsync 对象可通过 HI...

2020-04-08 18:23:42 651

原创 Android HIDL学习(5) ---- 设计要素

前面我们学习了如何使用HIDL来设计或者重构之前在HAL层的代码,而且也对比了一些高性能的编程方式,这里我们在来一下Android的HIDL在设计上的一些考虑。HIDL指定了数据结构和方法的命名,这些命名类似于JAVA中的类,所以HIDL的语法对于C++和JAVA程序员来说是非常熟悉的,尽管有些关键字不怎么相同,HIDL还使用JAVA的注释方式。HIDL设计目标HIDL的设计目标是为以...

2020-04-08 18:20:36 132

原创 Android HIDL学习(4) ---- 高性能比较(HIDL, FMQ, MMAP)

写在前面公司一些方案,在Andoird P上架构必须要修改成HIDL,不然会遇到一系列的Selinux的问题,所以决定还是按照标准的Android HIDL的架构重新写了方案(因为比较机密,所以不透露具体方案代码)。但是我们的这个模块对性能的要求非常高,不然咱们的设备怎么能打败竞争对手呢,怎么屹立在世界500强呢,对吧。_因为我们做的工业设备,对实时性要求比较高,但是HIDL的设计毕竟是需要...

2020-04-08 18:18:58 544

原创 Android HIDL学习(3) --- 注册回调

Android HIDL学习[3] --- 注册回调 三、回调函数 3.1 实战演练 三、回调函数我们把HAL 独立为一个单独的进程,Client 也是一个单独的进程,那么对于一般的模块而言,都是需要从底层(HAL 及 以下)获取数据,比如sensor需要获取sensor 数据,Camera需要获取 Camera的raw/yuv 等数据流。那么对于软件设计而...

2020-04-08 18:15:50 942

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除