ʚ兔子的先森ɞ
码龄5年
关注
提问 私信
  • 博客:522,456
    社区:75
    问答:558
    动态:119
    523,208
    总访问量
  • 126
    原创
  • 54,271
    排名
  • 6,247
    粉丝
  • 78
    铁粉

个人简介:一只立志于养老婆的程序猿。

IP属地以运营商信息为准,境内显示到省(区、市),境外显示到国家(地区)
IP 属地:江苏省
  • 目前就职: 小米汽车科技有限公司
  • 加入CSDN时间: 2019-06-17
博客简介:

一只立志于养老婆的程序猿

查看详细资料
  • 原力等级
    领奖
    当前等级
    7
    当前总分
    3,020
    当月
    7
个人成就
  • 移动开发领域优质创作者
  • 获得473次点赞
  • 内容获得113次评论
  • 获得1,559次收藏
  • 代码片获得3,588次分享
创作历程
  • 7篇
    2024年
  • 12篇
    2023年
  • 36篇
    2022年
  • 71篇
    2021年
成就勋章
TA的专栏
  • Android
    55篇
  • Android network
    19篇
  • Android wifi&bt
    7篇
  • Android system
    13篇
  • Android Input
    1篇
  • Android启动流程
    7篇
  • Linux
    10篇
  • Linux network
    1篇
  • linux开发环境搭建
    1篇
  • 浅析嵌入式系统
    17篇
  • amlogic工作笔记
    9篇
  • git 之路
    10篇
  • 一步一脚印
    1篇
  • 开发工具
    5篇
兴趣领域 设置
  • 移动开发
    android
  • 网络与通信
    网络协议tcp/ip
  • 操作系统
    linux
创作活动更多

如何做好一份技术文档?

无论你是技术大神还是初涉此领域的新手,都欢迎分享你的宝贵经验、独到见解与创新方法,为技术传播之路点亮明灯!

352人参与 去创作
  • 最近
  • 文章
  • 代码仓
  • 资源
  • 问答
  • 帖子
  • 视频
  • 课程
  • 关注/订阅/互动
  • 收藏
搜TA的内容
搜索 取消

Android network - NUD检测机制(Android 14)

在Android系统中,NUD(Neighbor Unreachable Detection)指的是网络中的邻居不可达检测机制,它用于检测设备是否能够到达特定的IP地址。当Android设备尝试与另一个设备通信时,如果发现对方不可达,它会触发NUD过程。NUD 的底层实现还是依赖kernel,Android层有服务建立通信,当kernel检测到当前网络与周边的neighbor不可达时,就会发送消息通知上层,上层处理msg。
原创
发布博客 2024.07.05 ·
1468 阅读 ·
31 点赞 ·
0 评论 ·
14 收藏

Android network — 进程指定网络发包

在android 中,一个app使用网络,需要在manifest 申请一下这种方式将使用default网络,比如WIFI 和 数据网络,android 同一个时间点,只能有一个default网络,default网络由Android 网络评分机制选择。那有没有一种方式可以不使用默认网络呢,比如某一个App只想使用WiFi或者别的某一个网络,而不受默认网络变化的影响,答案是有的。
原创
发布博客 2024.05.22 ·
2099 阅读 ·
26 点赞 ·
6 评论 ·
13 收藏

Android system — 链接器命名空间共享库配置方法(Android 11后)

native进程的so库是直接通过dlopen打开的,而其对应的命名空间也是直接通过linker进行判断的,并没有调用到libnativeloader.so,因此native进程的配置方式也与应用进程不同。中,我们提到了“目录-区段”映射属性dir.name,指向 [name] 区段所应用到的目录的路径,其实就是baseconfig.cc中定义的dirToSection。通过上面的代码跟踪我们会发现,其实在Android 11后,应用进程共享库的配置位置都在。中我们可以看到调用了。
原创
发布博客 2024.04.29 ·
2232 阅读 ·
32 点赞 ·
3 评论 ·
11 收藏

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 ·
1605 阅读 ·
25 点赞 ·
0 评论 ·
28 收藏

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 ·
1609 阅读 ·
21 点赞 ·
4 评论 ·
18 收藏

Android 编译错误:module xxx1 missing dependencies:xxx

比如上面编译错误,查看后发现 只有out/xxx/vendor/lib/android.hidl.base@1.0.so 而lib64下没有。根据第一步中添加依赖库查找out目录下 out/xxx/lib 已经out/xx/lib64 是否存在响应的so库。
原创
发布博客 2024.04.23 ·
1317 阅读 ·
3 点赞 ·
0 评论 ·
2 收藏

Linux network — 网络层收发包流程及 Netfilter 框架浅析

本文主要对 Linux 系统内核协议栈中网络层接收,发送以及转发数据包的流程进行简要介绍,同时对 Netfilter 数据包过滤框架的基本原理以及使用方式进行简单阐述。Linux 网络协议栈是 Linux 内核中非常重要的子系统之一,虽然上层应用的开发维护工作极少涉及修改内核网络部分的工作,但了解其设计思想,基本工作原理,也可以为我们日常工作带来比较不少的帮助,特别是涉及到前后台网络交互,服务器网络性能相关的工作时。
原创
发布博客 2024.01.02 ·
2949 阅读 ·
21 点赞 ·
0 评论 ·
28 收藏

Android wifi — WiFi空口包交互过程

本文通过抓取的WiFi空口包,简要分析下WiFi的连接过程。连接三步骤探测(Probe Request、Probe Response)认证(Authentication)关联(Association Request、Association Response)如下图可见,WiFi连接过程可大致分为 探测/扫描(Probe)-> 认证(Authentication) -> 关联(Association) -> EAPOL 四个阶段。
原创
发布博客 2023.12.25 ·
1484 阅读 ·
2 点赞 ·
1 评论 ·
10 收藏

Android wifi — connect流程

最近发现一些settings调用wifimanager连接wifi后,没有调用到wpa_supplicant的问题,借此梳理下Android wifi连接流程。注:代码基于Android R(11) qualcomm平台。
原创
发布博客 2023.12.18 ·
1398 阅读 ·
0 点赞 ·
0 评论 ·
6 收藏

Android network — iptables四表五链

我们先来看一下netfilter官网iptablesiptablesTheiptablesip6tablesip6tables也就是说iptables实际上只是位于用户空间的一个面向系统管理员的Linux防火墙的管理工具而已,而真正实现防火墙功能的是netfilter,它是Linux内核中实现包过滤的内核模块,iptables对应在内核中的模块应该是ip_tables,我们查看系统内核中ip_tables的信息的时候可以看到这个模块是在netfilter这个目录下的。实际上除了iptables。
原创
发布博客 2023.08.05 ·
1941 阅读 ·
0 点赞 ·
0 评论 ·
2 收藏

Linux内核基础 — initcall机制

init 或者 .initcalls 段的特点就是,当内核启动完毕后,这个段中的内存会被释放掉。对上层而言,linux内核提供xxx_init(init_func)宏定义接口,驱动开发者只需要将驱动程序的init_func使用来修饰,这个函数就被自动添加到了上述的段中,开发者完全不需要关心实现细节。不难想到另一种方式,就是集中提供一个地方,如果你要添加你的驱动初始化程序,你就将你的初始化函数在这个地方进行添加,在内核启动的时候统一扫描这个地方,再执行这一部分的所有被添加的驱动程序。
原创
发布博客 2023.07.24 ·
1192 阅读 ·
3 点赞 ·
0 评论 ·
15 收藏

ubuntu20.04上linux内核开发环境搭建(qemu+gdb+vscode)

hdb:创建一个hard disk。注意,字符串hdb不是/dev/hdb(这个个IDE disk),这里的hdb启动后,是/dev/sdb(scsi disk)。1)修改buildroot-2020.02.8/package目录下的package,重新编译前,需要删除output/build/目录中对应的package,否则编译出来的rootfs.f2fs不会包含改动。First sector (32-2097151, default 32): ------------回车,默认即可。
原创
发布博客 2023.07.13 ·
3180 阅读 ·
1 点赞 ·
0 评论 ·
6 收藏

Android Input — 长按分发repeat时间间隔

Android系统中长按键部分:Linux驱动只是在起初按下时上报个down事件,在抬起后再报个up事件;其中,不会在有按键上报。对长按键的处理是在Android上层的InputDispatcher中,具体实现还未研究;如下是repeat的时间间隔设定地方。有空在对具体机制做分析。
原创
发布博客 2023.05.05 ·
1158 阅读 ·
0 点赞 ·
1 评论 ·
2 收藏

Android network — ipv6邻居发现协议

邻居发现协议NDP(Neighbor Discovery Protocol)是IPv6协议体系中一个重要的基础协议。邻居发现协议替代了IPv4的ARP(Address Resolution Protocol)和ICMP路由器发现(Router Discovery),它定义了使用ICMPv6报文实现地址解析,跟踪邻居状态,重复地址检测,路由器发现以及重定向等功能。
原创
发布博客 2023.03.22 ·
1386 阅读 ·
0 点赞 ·
0 评论 ·
4 收藏

Android system实战 — Android R(11) 第三方apk权限

最近在调试时遇到了第三方apk申请运行时权限,以及signature级别 install 权限不允许赋予给第三方apk,虽然这是Android系统安全性的一种体现,但在某些情况下,确实是有需求去放开权限,使app能使用更方便,毕竟让用户允许权限在一定程度上来说并不是一件容易的事情。
原创
发布博客 2023.03.02 ·
2434 阅读 ·
0 点赞 ·
0 评论 ·
3 收藏

Android system实战 — Android R(11) 进程保活白名单

  最近在Android R上实现一些需求,进行记录一下,关于进程保活的基础知识可以参考Android system — 进程生命周期与ADJ,实际上本质上,就是在提高进程的adj等级,从而达到保活的效果,当然如果你不care原理,也可以直接看下面具体实现。  主要涉及源码路径:1.1 准备工作在源码实现之前,我们需要先准备进程白名单,并将其编译至白名单格式如下:该功能设置后,查看是否生效,可以通过查看进程的adj值来确认:例如:
原创
发布博客 2023.02.22 ·
1262 阅读 ·
0 点赞 ·
0 评论 ·
2 收藏

Android system — 进程生命周期与ADJ

必要时,系统会首先消除重要性最低的进程,然后是清除重要性稍低一级的进程,依此类推,以回收系统资源。在Android的lowmemroykiller机制中,会对于所有进程进行分类,对于每一类别的进程会有其oom_adj值的取值范围,oom_adj值越高则代表进程越不重要,在系统执行低杀操作时,会从oom_adj值越高的开始杀。本文主要介绍Android的lowmemorykiller的oom_adj的相关概念,进程的oom_adj,决定了当内存不够的时候,lmk会根据oom_adj的级别依次释放内存。
原创
发布博客 2023.02.19 ·
1503 阅读 ·
0 点赞 ·
0 评论 ·
1 收藏

Android system — settings数据库

Android系统设置数据库用于保存系统的一些默认设置值,另外在开发的时候,有时候我们一些设置属性要保存到本地,防止软件卸载后配置属性消失,也可以将这些值保存到系统数据库中。
原创
发布博客 2023.02.18 ·
3488 阅读 ·
5 点赞 ·
2 评论 ·
5 收藏

IOzone I/O测试工具使用说明

IOzone是一个开源文件系统基准工具,用来测试文件系统的读写性能,也可以进行测试磁盘读写性能。Iozone能够运行于许多平台。这份文档涵盖Iozone所执行的许多不同类型的操作和它的所有命令行参数。
原创
发布博客 2023.01.11 ·
12857 阅读 ·
14 点赞 ·
9 评论 ·
93 收藏

android9.0 系统默认时间跳变

最近修改客户问题的时候发现系统默认时间和ntp网络时间之间出现了一次时间的跳变,虽然不是什么大问题,但是可以跟进了解一下。
原创
发布博客 2022.09.22 ·
1566 阅读 ·
0 点赞 ·
0 评论 ·
0 收藏
加载更多