ReadingNote
ReadingNote copied to clipboard
Android 知识点
探索
SourceCode
通行密钥
GSM
Google Play
隐私合规检查
自动化部署
网络
MCP / A2A
WebRTC
内网通信
- 多台 Android 设备局域网下的数据备份如何实现?
- DNS-SD 内网通信
- https://github.com/NanoHttpd/nanohttpd Tiny, easily embeddable HTTP server in Java.
- https://github.com/yanzhenjie/AndServer 🍒 Web server and web framework of Android platform.
Token
Http / Https
- 深入理解 HTTP 代理:从理论到实践
- 写一篇最好懂的 HTTPS 讲解
- 在 Android 手机上对 HTTPS 请求进行抓包
- 问:谈谈 HTTPS 的 SSL 单向验证和双向验证?
- HTTPS 是怎么保证安全的?可以被中间人攻击吗?
- 为什么如此安全的 HTTPS 协议却仍然可以被抓包呢?
Retrofit 封装
- 优雅实现网络请求:协程 + Flow + Retrofit + OkHttp
- -------------------------------------------------------------
- 协程 + Retrofit ,如何封装实战?
- 协程 + Retrofit,代码还能这么写
- 扔掉 RxJava,看协程与 Retrofit 合体!
- 两种方式封装 Retrofit + 协程,实现优雅快速的网络请求
OkHttp 封装
Ktor 封装
网络框架
- Shine - 更简单的 Android 网络请求库封装!
- https://github.com/jgilfelt/chuck An in-app HTTP inspector for Android OkHttp clients
SIP
SSE (Server Send Events)
性能调优
黑科技
日志
Perfetto
崩溃处理
- Android 复杂项目崩溃率收敛至0.01%实践
- Android Native Crash 捕获
- Android 稳定性:OOM 原理解析
- Android 稳定性:可远程配置化的 Looper 兜底框架
- App 崩溃监控
Application Performance Monitor - APM
- 搭建一个 IO 泄露监测框架
- Android IO 监控 | 性能监控系列
- 找到卡顿来源,BlockCanary 源码精简分析
- 自己写了个 Android 性能监测工具,支持 FPS / 流量 / 内存 / 启动...
- https://github.com/markzhai/AndroidPerformanceMonitor A transparent ui-block detection library for Android. (known as BlockCanary)
性能优化
- Android 性能优化总结
- Bitmap 的像素内存存在哪?
- Systrace 实战:彻底搞懂卡顿原理
- 分享一波 Android 性能优化的总结
- 吹爆系列:大厂是如何干掉 OOM 的?
- 分享一波深入的 Android 性能优化总结!
- Android 卡顿掉帧?努比亚技术团队分享
- https://github.com/XanderWang/performance
布局优化
屏幕刷新
Handler
- Handler Native 原理分析
- 万字解析 Android Handler 实现原理
- 忙里偷闲 IdleHandler
- 扒光 Handler,赶紧来瞧一瞧
- 面试官:如何提高 Message 的优先级
- 同步屏障与异步消息,从入门到放弃
- 关于 Handler 的这20个问题,你都清楚吗?
- 万字复盘 Handler 中各式 Message 的使用和原理
ANR
- Android 稳定性优化:ANR 监控方案
- ANR 监控方案
- ANR 是如何触发的?带你大揭秘
- Android 输入系统 & ANR 机制的设计与实现
- 今日头条 ANR 优化实践系列 - 告别 SharedPreference 等待
网络优化
图片优化
- Android Bitmap 相关的一切
- 3种类型图片带你降低包体积
- Android 中图片压缩分析(上)
- Android 中图片压缩分析(下)
- 最详细的 Android 图片压缩攻略
- jpeg 格式与 libjpeg 库编译移植
- https://github.com/Curzibn/Luban Luban(鲁班)—Image compression with efficiency very close to WeChat Moments/可能是最接近微信朋友圈的图片压缩算法
电量优化
启动优化
启动框架
- Android 启动优化方案调研
- 写个 App 启动任务框架,有多难?
- https://github.com/aiceking/AppStartFaster Android 冷启动优化,有向无环图启动器。
ContentProvider
包体积优化
案例分析
Jetpack
- Jetpack PDF 库:解锁 Android 应用中的 PDF 功能
- https://github.com/DImuthuUpe/AndroidPdfViewer Android view for displaying PDFs rendered with PdfiumAndroid
Graphics Shapes
Glance
Baseline Profiles
LiveData
- 聊聊 LiveData 的陷阱与对策
- LiveData 奇思妙用的 11 个场景总结~
- 协程、ViewModel、LiveData 三剑合璧!
- 心态炸了,LiveData postValue 会“丢”数据?
- 再谈协程之 ViewModel 和 LiveData 难兄难弟
- Jetpack 这么讲就懂了,LiveData 原理、粘性事件掌握!
- LiveData 为啥连续 postValue 两次,第一次的值会丢失?
- 不做跟风党 LiveData、StateFlow、SharedFlow 的使用场景对比
ViewBinding
DataBinding
ViewModel
- SavedStateHandle 的使用
- Jetpack 面试: ViewModel 必知的几个问题
- ViewModels and LiveData - Patterns + AntiPatterns
Lifecycle
- Lifecycle 原理解析,人人都能看得懂!
- 协程 & LifecycleScope,详细解释给你听!
- @OnLifecycleEvent 被废弃,替代方案是?
- Jetpack 易错分享:还在使用 Fragment 作为 LifecycleOwner ?
DataStore
AppSearch
SplashScreen
- Android 12 SplashScreen API 快速入门
- SplashScreen 优化启动体验 | 开发者说·DTalk
- 从 SplashScreen 深度探讨 App 启动画面的前世今生
- Android 12 适配工作来了,实践 Jetpack SplashScreen API
- Jetpack 新成员 SplashScreen:为全新的应用启动效果赋能!
Flow
- 让 Flows 感知生命周期
- 从 LiveData 迁移到 Kotlin 数据流
- 官方推荐 Flow,LiveData:那我走?
- 官方推荐 Flow 取代 LiveData,有必要吗?
- 使用更为安全的方式收集 Android UI 数据流
- 【译】LiveData - Flow 在 MVVM 中的最佳实践
- Android SingleLiveEvent Redux with Kotlin Flow
DragAnd
Activity
- 探索 Activity Results API 极简方案
- startActivityForResult 被弃用后,如何优雅的启动 Activity?
- Jetpack 处理回退事件的新姿势:OnBackPressedDispatcher
- Activity Result API 详解,是时候放弃 startActivityForResult 了
Fragment
- 盘一下 Fragment 间的五种通信方式
- Fragment 和 Activity 生命周期的联动
- Fragment 这些 API 已废弃,你还在使用吗?
- androidX 来袭,Fragment 如何更简单的实现懒加载?
- 你真的懂 Fragment 吗?Fragment 的过去、现在和未来~
CameraX
MotionLayout
Material You
Kotlin Android Extensions
Framework
系统启动
SystemServer - SS
ActivityManagerService - AMS
- Android 启动这些事儿
- 手把手带你搞懂 AMS 启动原理
- Activity 启动再分析(基于 Android 13)
- Android 手机从开机到 APP 启动经过的流程
- Activity 的启动过程详解(基于 Android 10.0)
PackageManagerService - PMS
Window / WindowManager
- Android Window 机制
- Android 视图架构详解
- Android 视图体系结构的秘密
- Android 三维视图层级的秘密
- Window / WindowManager 的详细介绍
- 冷知识系列:WindowInspector,速度了解一下!
- Android进阶基础系列:Window 和 WindowManager,全面理解!
View 刷新
- 从 XML 到 View 显示在屏幕上,都发生了什么?
- 子线程更新 UI 全解
- Android UI 绘制流程分析
- 全面剖析 View 的生命周期,基于 Android 11
- Android View 绘制流程之 DecorView 与 ViewRootImpl
- Android 那两个你碰不到但是很重要的类之 ViewRootImpl
- Android 渲染系列之如何渲染UI
InputManagerService - IMS
Binder
AIDL
事件分发
运行时权限
进程间通信
绘制体系
架构
基础架构
设计模式
模块化
- Android 模块化开发实践
- 用模块化来管理你的 Android 项目
- 微信 Android 模块化架构重构实践
- Android 大型工程 App Bundle 模块化实践
- 迈向 Android 架构师:模块化设计原则
组件化
- 组件化问题详解
- 组件化场景下 module 依赖实践方案
- Android 组件化架构设计从原理到实战
- https://github.com/mqzhangw/JIMU 一种简单有效的android组件化方案,支持组件的代码资源隔离、单独调试、集成调试、组件交互、UI跳转、生命周期等完整功能。
- https://github.com/yangchong211/YCAppTool 组件化综合案例,组件分层为:基础公共组件,功能组件,业务组件,主工程。每一层组件的建设,很详细的工程案例,很全面的一个组件化实践案例。一个超级综合案例!
MVVM
MVI
- MVI 架构快来了解一下
- MVI 和 MVVM 有什么区别?
- MVI 架构:单一 State 的弊端与对策
- 一文了解 Google MVI 架构,扶我起来学
- 一文了解在 Android 中如何使用 MVI 架构
- MVVM 成为历史,Google 全面倒向 MVI
- 字节团队:用 Kotlin Flow 解决开发中的痛点
- https://github.com/airbnb/epoxy Epoxy is an Android library for building complex screens in a RecyclerView.
路由
Mavericks
- Mavericks 使用
- 可能是最好用的 MVI 框架 — Mavericks
- https://github.com/airbnb/mavericks Mavericks: Android on Autopilot.
View
优化 UI 更新
Navigation Bar
View
- Android | 扩大 View 点击区域的几种方式
- Android 自定义 View 开发的那些事儿
- 遇到个难题,怎么修改子 View 绘制顺序?
- Android clipToPadding 原理你了解过吗?
- 再学一遍 android:fitsSystemWindows 属性
- 读源码长知识 | 原来可以这样扩大 View 点击区域
TextView
Html 标签
- ImageGetter 和 TagHandler 的作用与区别
- Android 自定义 html css标签解析器
- https://github.com/easyandroidgroup/EasyAndroid/blob/master/docs/EasyImageGetter.md
- https://github.com/SufficientlySecure/html-textview TextView to display simple HTML
ImageView
RecyclerView
- 掌握 RecyclerView 中的“黑科技”预加载
- RecyclerView 还能这样滚动对齐?
- 实现 RecyclerView 列表阻尼滑动效果
- Android RecyclerView 宫格拖拽效果实现
- -------------------------------------------------------------
- Recyclerview 竟能如此丝滑,这14个优化策略不容错过...
- RecyclerView DiffUtil 踩坑记录
- DiffUtil 高效处理 Android 列表数据变化
- 新技术系列:RecyclerView 的新伙伴 ConcatAdapter
- RecyclerView 中秘密探索 | notifyDataSetChanged() 有多昂贵?
- RecyclerView 滑动删除实现思路
- RecyclerView 中的秘密探索 | 滚动
- 关于 RecyclerView 的事件拦截机制
- RecyclerView 滚动到指定位置
- RecyclerView 快速精准锚定的解决方案
- -------------------------------------------------------------
- RecyclerView 的特效,仿探探效果
- RecyclerView 打造抖音二级评论效果
- 来来来,看看手机上如何丝滑般地展示 JSON 数据~
- RecyclerView 高级进阶之优雅地解决瀑布流的两个神坑
- Android 弹幕的两种实现及性能对比 | 自定义 LayoutManager
WebView
- WebView 经历的各种干货方案分享
- 如何实现 JsBridge?怎么实现回调?
- WebView 如何加载 PDF?
- WebView 实现嵌套滑动
- WebView 的白屏检测与处理
- WebView 优化干货,让你的 H5 实现秒开
ScrollView
ViewPager
SurfaceView
ViewStub
Toast
App Widget
自定义 View
- Android 实现微信读书划线的效果
- Android Tab 吸顶 嵌套滚动通用实现方案
- Android 3D 球面运动
- Android 裸眼 3D 效果
- Android View 3D 翻转效果
- Android 字体渐变效果实战
- Android 自定义控件之弹幕的实现
- Android 视觉均衡器的自定义实现
- https://github.com/FreddyChen/Silhouette 封装的Android常用控件,比如:SleTextButton、SleImageButton、SleConstraintLayout、SleFrameLayout、SleLinearLayout、SleRelativeLayout等。使控件具备Shape、Selector等功能,省去编写shape或selector文件的繁琐步骤。另外支持N种颜色渐变,弥补原生shape文件只支持三种颜色(startColor/centerColor/endColor)的不足等。
自定义 ViewGroup
- Android 自定义 ViewGroup 的那些事儿
- https://github.com/DylanCaiCoding/LoadingStateView 缺省页面的封装
Drawable
- 更方便的 Shape/Selector 实现方案
- Android 13种 Drawable,全面掌握!
- 一个减少冗余 Drawable 资源的解决方案
- 【涨姿势】你没用过的 BadgeDrawable
- 自定义 Drawable 实现灵动的红鲤鱼动画(上篇)
- 自定义 Drawable 实现灵动的红鲤鱼动画(下篇)
- https://github.com/JavaNoober/BackgroundLibrary A framework for directly generating shape through Tags, no need to write shape.xml again(通过标签直接生成shape,无需再写shape.xml)
Material Design
案例分析
Android 版本更新
版本之路
Android 14
- Android 14 适配的那些事情
- Andorid 14 做了那些改进?
- Android 14 又来了?别扶!抬起我来吧!
- Android 14 正式发布,快来看看有什么吧
- Android 14 适配之——现有 App 安装到 Android 14 手机上需要注意些什么?
Android 13
Android 12
- Android 12 适配简介!
- Android 12 快速适配要点
- Android 12 隐私安全更新一览
- Android 12 适配你准备好了吗?
- Android 12 中使用 WorkManager
- 分享一下适配 Android 12 遇到的坑
- Android 12 来了,这些适配工作不能少
- Android 12 正式发布 | 开发者们的全新舞台
- Android 12 自动适配 exported 深入解析避坑
- Android 12 上全新的应用启动 API,适配一下?
- Android 12 新版本泄露,隐私安全可媲美 iOS 系统?
- Google I/O 2021 来了,Android 12 重磅登场!重点新功能一览~
Android 11
Android 10
Android 9
Android 虚拟机
逆向 / 反编译
AOP
ASM
- ASM 案例使用
- 一文学会字节码替换
- AOP 利器 ASM 基础入门
- 玩转 Android AOP ,这3个案例你需要掌握!
- 看完这一篇,你也可以自如地掌握字节码插桩
- Android 字节码插桩库 - Trace
Hook
Hook Jni
Hook 私有 API
- Lancet Hook 框架使用
- 检查私有 API 调用方案
- 用这个工具来对任意方法进行 Hook
- 利用 Hook 解决控件多次连续点击问题
- https://github.com/niuxiaowei/ReplaceMethod Android App中对方法进行替换工具
Xposed
混淆
AAB
保活
热更新
动态资源加载
- 货拉拉 Android H5 离线包原理与实践
- 货拉拉 Android 动态资源管理系统原理与实践(上)
- https://github.com/HuolalaTech/HLLOfflineWebView-android Android offline package solution for H5
APK 签名
- APK重新签名或者更换 APK 签名版本
- 一文看懂 Android 签名 v1、v2、v3、v4,竟然都 v4了?
- https://github.com/skylot/jadx Dex to Java decompiler(反编译Dex文件)
反射
Android Studio 插件
Library Publish
开源库
GreenDao
LeakCanary
Glide
KOOM
OKHttp
EventBus
jacoco
Shadow
Robust
知识点
特效
动画
硬件标识符
Insets
PIP Picture in Picture
TTS
软键盘
Camera
- Android 录制视频,仿微信老版录制页面
- Android 还可以外接摄像头 Android UvcCamera
- Android 录制视频,三种 Camera API 的使用与预览
- https://github.com/saki4510t/UVCCamera library and sample to access to UVC web camera on non-rooted Android device.
Camera2
录制
Transition
- Android 转场动画实现的蜕变之路~
- https://github.com/RuffianZhong/RWidgetHelper Android UI快速开发,专治原生控件各种不服
Behavior
FileProvider
文件系统
存储
- Android 作用域存储
- 看了这篇文章,终于搞懂了 Android 存储!
- 从零开始实现一个兼容 Android 4 ~ 13 版本的 Android 文件选择器
- https://gitee.com/newki123456/ChooseFile
MediaStore
手势滑动
蓝牙 SPP
蓝牙 BLE
- https://github.com/aicareles/Android-BLE Android-BLE蓝牙框架,提供了扫描、连接、使能/除能通知、发送/读取数据、接收数据,读取rssi,设置mtu等蓝牙相关的所有操作接口,内部优化了连接队列,以及快速写入队列, 并支持多服务通讯,可扩展配置蓝牙相关操作。
- https://github.com/Jasonchenlijian/FastBle Android Bluetooth Low Energy (BLE) Fast Development Framework.
- https://github.com/diaoerlangdang/HJBleDemo 宏佳电子模块示例代码。
- https://github.com/haodynasty/AndroidBleManager android BLE device scan and connect manager.
iBeacon
- How to Build an Android iBeacon [Updated] [1/3]
- How to Build an Android Beacon (iBeacon) Detector [2/3]
- How to Build an Android Beacon (iBeacon) Emitter [3/3]
- Android 实现 iBeacon
- Android BLE 开发小总结
- Android BLE 扫描 BL E设备 BluetoothLeScanner
- Android BLE Peripheral 手机模拟设备发出 BLE 广播 BluetoothLeAdvertiser
- https://github.com/a1anwang/okble An easy-to-use BLE library for android. 简单易用的android BLE library.
- https://github.com/AltBeacon/android-beacon-library Allows Android apps to interact with BLE beacons.
外接设备
Usb - Accessory
- Android USB通讯
- Android 开放配件协议 1.0
- Android 开放配件协议 2.0
- Android Open Accessory 协议分析与开发
- Android 到 Android 的 USB AOA 协议通讯的实现
- https://github.com/mik3y/usb-serial-for-android Android USB host serial driver library for CDC, FTDI, Arduino and other devices.
串口通讯
Accessibility 无障碍功能
- Android 外挂开发探索
- 玩转 Android 自动化,应用布局节点速查器
- 玩转 Android 自动化,自动跳过 APP 启动页广告
- 如何在 Android 开发中实现跳过开屏广告功能
- 抢红包软件背后的 Accessibility 服务及启动原理
- Android 无障碍功能优化实践,一篇有温度的文章
- 无障碍功能框架:如何让残疾/老龄群体更好使用微信?
- https://github.com/lygttpod/AndroidAuto
Notification
Backup 备份
生物识别 Biometric
清除数据
碰撞检测
轮子
截图
投屏
应用重启
- https://github.com/JakeWharton/ProcessPhoenix Process Phoenix facilitates restarting your application process.
序列化
- https://github.com/square/moshi A modern JSON library for Kotlin and Java.
- https://github.com/Kotlin/kotlinx.serialization Kotlin multiplatform / multi-format serialization.
Scanner
- Google ML Kit
- ML Kit Source Code
- ML Kit 二维码扫描
- Android 终于要推出 Google 官方的二维码扫描库了?
- Android 利用 ZXing 绘制渐变色二维码
华为扫码
Database
壁纸
换肤
- Android 应用换肤方案总结
- 开启 B 站少女心,探究 APP 换肤
- Android 官方深色模式在项目中应用
- DataBinding + LiveData 轻松实现无重启换肤
- App 黑白化实现探索,有一行代码实现的方案吗?
- App 黑白化实现探索2, 发现了一种更方便的方案,我被锤了!
- https://github.com/ximsfei/Android-skin-support Android-skin-support is an easy dynamic skin framework to use for Android, Only one line of code to integrate it. Android 换肤框架, 极低的学习成本, 极好的用户体验. "一行"代码就可以实现换肤, 你值得拥有!!!
硬件加速
渲染原理
更新 App 图标
App 跳转 - DeepLink
微信
IM
- Android IM 开发之旅
- https://github.com/Terry-Mao/goim
- https://github.com/OpenIMSDK/Open-IM-Server OpenIM: Instant messaging open source project based on go built by IM technology experts. Backend in Go.(由IM技术专家打造的基于 Go 实现的即时通讯(IM)项目,从服务端到客户端SDK开源即时通讯(IM)整体解决方案,可以轻松替代第三方IM云服务,打造具备聊天、社交功能的app。)