- 博客(145)
- 资源 (5)
- 收藏
- 关注
原创 Android网络层架构:统一错误处理的问题分析到解决方案与设计实现
本文介绍了Android项目中4406状态码统一处理的完整解决方案。采用OkHttp拦截器方案,统一配置RealNameAuthInterceptor统一处理。并整理核心技术细节:循环依赖问题通过回调接口模式解决;ResponseBody流管理通过重新构建ResponseBody解决;重复Toast问题通过修改响应体内容解决。深入分析了OkHttp拦截器的责任链模式设计,并对架构设计原则和基建规范进行思考和总结。
2025-07-09 21:34:27
1413
原创 开源一个 Jetpack Compose 学习仓库
开源一个 Jetpack Compose 学习仓库,包括:可编译运行的 Android 工程;脱离 IDE 可读的课节资料库;学习辅导技能。
2026-07-28 11:05:49
231
原创 不用 Android Studio,如何用 Android CLI 在命令行运行任意 Android 项目
本文分享一种轻量的 Android 开发工作流:借助 Google 新推出的 Android CLI,在终端完成构建、部署和启动,适用于 XML View、Jetpack Compose 等任意 Gradle 结构的 Android 项目。
2026-07-24 17:33:03
270
原创 Google Android CLI 完全指南:Windows 下安装 Android CLI 与 Skills,让 Cursor Agent 开发效率提升 3 倍
Google推出全新Android CLI工具链与Android Skills系统,旨在提升AI代理开发Android应用的效率。Android CLI提供标准化命令集,涵盖SDK管理、项目创建、设备调试等全流程,并与Android Studio深度集成。Android Skills则是面向AI优化的指令包,能根据开发场景自动注入领域知识。该方案解决了传统开发中SDK安装混乱、文档过时、IDE与终端割裂等问题,官方称可提升3倍开发效率。
2026-06-29 15:30:37
545
原创 Cursor Hook 本质与常见场景
摘要: Hooks 是智能体循环中的硬性拦截层,可在 AI 执行关键操作(如运行命令、读写文件)前后进行观察、拦截、改写或自动化。与 Rules/Skills 的软引导不同,Hooks 提供直接控制,支持阻止命令、修改参数或触发后续动作。其核心能力包括观察、门禁、改写和延续,适用于代码格式化、安全审计、自动化流程等场景。配置分为项目级和用户级,支持命令脚本或 Prompt 实现,通过 JSON 通信。
2026-06-24 16:51:16
422
原创 我搭了个 skills 小仓库,顺便记一笔
本文介绍了新建的skills仓库,用于集中管理AI工具(Cursor、Claude Code等)的可复用流程。每个Skill以独立目录存储,包含核心说明文件SKILL.md及可选辅助文件。这种结构化存储解决了话术分散、不便修改复用的问题,支持全局更新和多设备同步。仓库采用开放标准格式,目前已包含文档规范等实用Skill。使用方式包括路径配置和会话调用,支持模糊匹配和精准点名。
2026-03-27 21:14:28
486
原创 Android视图回调机制:从post到ViewTreeObserver,从源码分析到最佳实践
在Android开发中,我们经常需要在视图绘制完成后执行一些操作,比如动态调整控件尺寸、获取视图的实际宽高等。传统的做法是使用`post()`方法,但这种方式存在一些局限性。本文将介绍几种更优的解决方案,结合源码解读对比,并通过实际案例进行对比分析。post、OnPreDrawListener、OnGlobalLayoutListener、OnLayoutChangeListener
2025-08-10 17:35:06
896
原创 升级目标API级别到35(三) —— kotlin-android-extensions从入门到废弃
Kotlin Android Extensions 是 Kotlin 官方提供的 Android 插件(已废弃),它通过自动生成 View 绑定代码,允许开发者直接使用 XML 布局中定义的 View 而无需 findViewById。工作原理是编译时扫描布局文件并生成 synthetic 导入代码。集成需在模块级 build.gradle 中应用插件,但注意该功能自 Kotlin 1.4.20-M2 起已被废弃,官方推荐使用 View Binding 作为替代方案……
2025-07-25 23:46:28
1583
原创 升级目标API级别到35,以Android15为目标平台(二 先行篇)
⚠️ 从 Kotlin 1.4.20-M2 版本开始,kotlin-android-extensions 插件已被官方废弃。接下来,会在适配过程中,逐步记录适配过程中的相关内容,并将文章汇总到这里,方便后续查阅。执行命令: ./gradlew --version。简单梳理需要处理的相对比较耗时的适配内容。
2025-07-22 19:14:54
1062
原创 Android设备标识符详解:IMEI、ANDROID_ID与OAID
本文对比分析了Android设备标识符IMEI、ANDROID_ID和OAID的特性与适用场景。IMEI是硬件级唯一标识,但权限和版本限制严格;ANDROID_ID是应用级标识,隐私友好但存在应用差异;OAID是国内替代方案,设备级唯一但依赖厂商支持。文章详细介绍了各标识符的获取方式、失败原因及业务场景选择建议,为开发者选择合适标识符提供了参考依据。
2025-07-17 14:42:30
5335
原创 Kotlin JVM 注解详解
Kotlin 作为一门现代 JVM 语言,提供了出色的 Java 互操作性。为了更好地支持与 Java 代码的交互,Kotlin 提供了一系列 JVM 相关注解。这些注解不仅能帮助我们控制 Kotlin 代码编译成 Java 字节码的行为,还能让我们的 Kotlin 代码更好地被 Java 代码调用。虽然在日常开发中我们最常用的是 `@JvmOverloads、@JvmStatic、@JvmName 和 @JvmField `这几个注解,但 Kotlin 其实还提供了更多强大的 JVM 注解。
2025-05-30 11:01:37
1444
1
原创 从解决一个分享图片生成的历史bug出发,详解LayoutInflater和View.post的工作原理
使用 LayoutInflater.inflate() 动态生成分享图片时,发现自定义 AvatarView 的头像加载代码未执行。原因是创建的 shareView 未被添加到视图层次结构中,导致 View.post() 失效。解决方案是检查 isAttachedToWindow 状态,确保 View 已完成布局后再执行相关操作。当 View 未附加时,可采用预设默认值作为备选方案。该问题揭示了 View 生命周期的重要性,特别是 attachToWindow 状态对异步操作的影响。
2025-05-28 17:55:17
1206
原创 Google Play上架审核问题解决指南:权限与功能声明篇
本文总结了Android应用上架Google Play时常见的审核被拒问题及解决方案。重点分析了几关键问题,针对每个问题,文章提供了具体的技术方案、代码示例和实战经验。建议开发者在提交前仔细检查这些关键点,确保符合Google Play政策要求。
2025-05-27 17:17:20
2762
原创 Google Play Android应用打包指南
本文介绍如何将Android应用打包并发布到Google Play商店,包括AAB和APK格式的区别、签名配置、打包流程、上架步骤以及多渠道发布策略等内容。
2025-05-12 11:06:22
2154
原创 Android应用隐私合规:解决极光推送SDK提前收集WiFi信息问题
应用在送审时因极光推送SDK未经用户同意读取WiFi的SSID、BSSID和MAC地址等敏感信息,触发了ACCESS_FINE_LOCATION权限,导致审核不通过。这些信息涉及用户位置隐私,属于应用商店严格审核的部分。问题根源在于极光推送SDK在应用启动时自动初始化并收集设备信息,即使未主动调用相关方法。解决方案包括在Application的onCreate方法中立即调用JCollectionAuth.setAuth(context, false)禁止极光推送隐私权限,待用户同意隐私政策后再设置为true
2025-05-09 19:02:48
1375
原创 Flutter TabBar 右侧渐变遮罩实现中的事件处理问题
分享一个我在开发中遇到的小问题。在做 Flutter 项目时,我给 TabBar 加了个右侧渐变遮罩效果,想提示用户"往右还有更多标签可以滑动查看"。danshi 加了遮罩后,点击遮罩区域不响应了,滑动手势也被拦截了!折腾了一番,终于找到了完美解决方案,记录一下。
2025-03-27 18:14:32
848
原创 鸿蒙:解决Marquee组件只能横向滚动问题,自定义实现纵向自动轮播
鸿蒙只有提供Marquee组件只支持横向自动轮播,那么想要实现纵向自动轮播只能自定义实现了。具体怎么实现呢?请细看!
2024-12-14 11:38:25
604
原创 源码解读笔记:协程的 ViewModel.viewModelScope和LifecycleOwner.lifecycleScope
整理Android中异步协程常见的两个扩展属性的解读笔记
2024-11-26 20:25:52
1410
原创 代码分享:实现自动滚动和无限滚动以及一些细致的交互
简介:本想找个轮子,轮子没找到,只能自己造了。话不多说,直接上代码干货,可给有需要的xdm直接拿去用。整体实现不算复杂,费点时间。
2024-09-29 21:07:11
950
原创 window 搭建 Flutter for Android的环境(二)
最近又重置了笔记本系统,因此又得重新部署Flutter环境,所以就再重新整理了一下
2024-02-03 20:44:57
902
原创 分享一个实现侧滑菜单的Flutter页面所遇到的问题与解决思路
最近做了一个需要实现侧滑菜单相关的Flutter新页面,页面布局结构稍微比较复杂。因此,做完之后就对研发的过程做出一些整理。以下主要整理跟侧滑菜单相关的内容。直奔主题,首先,要实现侧滑菜单,有以下几个方案。而本次选取的方案,是使用Scaffold 的 endDrawer的方式。在使用这个方案的同时,也是遇到了一些问题……
2024-01-10 19:45:00
1902
原创 Rxjava2的CompositeDisposable
只有了解清楚rxjava的CompositeDisposable,才能完美的解决一个元老级bug。
2023-12-08 14:36:53
435
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅