
Android开发
文章平均质量分 88
介绍 安卓开发中一些知识点
清霜辰
安卓架构师,精通安卓应用和Framework开发、音视频编码、性能优化。提供技术支持,项目合作。
展开
专栏收录文章
- 默认排序
- 最新发布
- 最早发布
- 最多阅读
- 最少阅读
-
Android Studio(2025.1.2)Gemini Agent - 告别问答模式
本文介绍了Android Studio 2025.1.2版本中Gemini Agent AI编程助手的功能及使用方法。Gemini Agent通过Gemini模型提供智能代码补全、依赖更新、代码生成与优化等核心功能,可显著提升开发效率。文章详细说明了如何获取API Key并配置使用,演示了自动更新依赖版本的典型应用场景,包括自动接受建议和自定义项目规则等功能。Gemini Agent的深度AI集成将帮助开发者从重复性工作中解放,专注于创新开发。原创 2025-08-07 11:27:52 · 532 阅读 · 0 评论 -
Android 区块链 + CleanArchitecture + MVI 架构实践
本文介绍了基于Android平台构建的去中心化电商平台实践,采用Solana Mobile SDK集成区块链技术,结合Clean Architecture和MVI架构模式实现现代化应用开发。严格遵循三层架构设计:表现层使用MVI模式管理UI状态,领域层封装业务逻辑,数据层实现多种数据源访问。原创 2025-08-04 10:47:04 · 945 阅读 · 0 评论 -
Android性能优化--16K对齐深入解析及适配指南
安卓16将全面转向16K页面对齐,这一底层变革将显著提升性能表现。相比传统的4KB页面,16K对齐可使应用启动速度提升3%-30%,系统启动加快8%,并降低约4.5%的功耗。开发者需在2025年11月前完成适配,重点检查原生.so库的对齐情况,使用最新构建工具并添加特定链接参数。用户将获得更流畅的体验和更长的续航。这一优化是安卓生态向高效内存管理的重要演进。原创 2025-08-02 10:33:27 · 869 阅读 · 0 评论 -
Android 相机应用开发中 CameraX 的使用介绍
摘要: CameraX是Android Jetpack中的相机开发库,基于Camera2 API封装,简化开发流程并提供跨设备一致性。其核心优势包括易用性、生命周期管理、丰富功能和扩展性,支持预览、拍照、图像分析和视频录制等用例。开发步骤包括添加依赖、请求权限、配置预览视图,并使用ProcessCameraProvider绑定用例到生命周期。CameraX通过抽象底层细节,显著降低开发复杂度,适合快速构建稳定高效的相机应用。原创 2025-07-29 09:34:05 · 996 阅读 · 0 评论 -
安卓基于 FirebaseAuth 实现 google 登录
本文介绍了在Android应用中基于Firebase Authentication实现Google登录的完整流程。主要内容包括:1)前期准备工作,如创建Firebase项目、配置Android应用并获取SHA-1密钥;2)添加必要的Firebase SDK依赖项;3)在Firebase控制台启用Google登录服务;4)在Android应用中初始化GoogleSignInClient;5)启动Google登录流程并处理登录结果,将获取的ID令牌传递给Firebase进行验证。文中详细说明了配置细节和注意事项原创 2025-07-14 11:40:20 · 704 阅读 · 0 评论 -
安卓动画技术全攻略:6大主流方案深度对比与最佳实践
序列帧动画:通过图片序列实现,文件体积大但实现简单,适合简单动画GIF:广泛兼容但色彩有限,适合Web兼容性要求高的场景Lottie:基于JSON的矢量动画,文件极小且可动态控制,适合复杂UI动画WebP:比GIF更高效的现代格式,适合需要高压缩率的场景SVGA:专为移动端优化的矢量格式,适合直播礼物特效等AVIF:最新图像格式,压缩率最高,适合高质量动画需求原创 2025-06-24 21:41:33 · 874 阅读 · 0 评论 -
安卓AOP变天了?AspectJ的黄昏与KSP的崛起
本文探讨了AOP技术在Android开发中的演变,重点分析了AspectJ在Android生态中逐渐衰落的原因。随着Android开发生态的发展,AspectJ正面临编译性能问题、配置复杂性、调试困难、高学习成本和维护成本等挑战。现代替代方案如Kotlin符号处理器(KSP)因其卓越的编译性能、简洁API设计和原生Kotlin支持而受到推荐。KSP相比传统方法在编译时间、内存占用和增量编译支持方面表现更优,成为当前Android实现AOP的更优选择。原创 2025-06-19 07:00:00 · 766 阅读 · 0 评论 -
安卓Compose实现鱼骨加载中效果
kotlin compose 鱼骨加载中效果原创 2025-06-03 09:10:27 · 809 阅读 · 0 评论 -
安卓开发用到的设计模式(3)行为型模式
1. 命令模式(Command Pattern)2. 策略模式(Strategy Pattern)3. 观察者模式(Observer Pattern)4. 模板方法模式(Template Method Pattern)5. 责任链模式(Chain of Responsibility Pattern)6. 状态模式(State Pattern)7. 访问者模式(Visitor Pattern)8. 中介者模式(Mediator Pattern)9. 迭代器模式(Iterator Pattern原创 2025-05-27 22:57:22 · 1103 阅读 · 0 评论 -
安卓开发用到的设计模式(2)结构型模式
本文介绍了安卓开发中常用的五种结构型设计模式:适配器模式(用于RecyclerView和网络请求适配)、装饰器模式(扩展Context功能与View装饰)、代理模式(管理图片加载和权限检查)、桥接模式(实现主题切换和数据存储分离)以及组合模式(构建View树结构和菜单层级)。这些模式通过解耦接口与实现、复用对象结构等方式,有效提升了代码的可维护性和扩展性,是安卓开发中的核心架构思想。原创 2025-05-24 22:01:12 · 981 阅读 · 0 评论 -
安卓开发用到的设计模式(1)创建型模式
本文介绍了在Android开发中常用的创建型设计模式及其应用场景。单例模式用于确保类只有一个实例,如系统服务和数据管理器;工厂模式通过隐藏创建逻辑来简化对象创建,如Fragment和IntentService的实例化;抽象工厂模式用于创建一系列相关对象,如主题系统和数据访问层;建造者模式通过分离构建过程与表示来创建复杂对象,如Dialog和Retrofit的配置;原型模式通过复制原型实例来创建新对象,如Intent的克隆和配置对象的复制。原创 2025-05-21 22:12:52 · 1192 阅读 · 0 评论 -
Android Compose 中 Side Effects 和 State 相关的 API 使用
理解 Side Effects 和 State 是构建复杂且响应迅速的 Android Compose 应用的关键。允许你在 Composable 的生命周期内安全地执行 Composable 范围之外的操作,并提供了各种 API 来处理不同类型的副作用,例如一次性操作 ()、生命周期绑定的协程 ()、引用最新状态 ()、资源清理 () 和异步状态生产 ().State是驱动 UI 更新的数据,Compose 提供了多种 API 来管理不同生命周期和复杂度的状态,包括简单的内部状态 (remember和。原创 2025-05-03 11:37:55 · 963 阅读 · 0 评论 -
安卓 Compose 相对传统 View 的优势
Jetpack Compose凭借声明式编程、Kotlin语法、智能重组、高效状态管理等核心优势,在开发效率、性能表现、可维护性、可测试性等方面全面超越传统View系统。尽管对于习惯传统开发模式的开发者而言,Compose存在一定学习曲线,但随着移动应用开发需求的不断升级,Compose所带来的长期价值和显著优势使其成为安卓UI开发的必然趋势,将引领安卓应用开发迈向新的高度。原创 2025-04-25 10:59:41 · 876 阅读 · 0 评论 -
音乐播放对接状态栏MediaSession控制
本文介绍了在 Android 应用中对接音视频播放与系统状态栏 MediaSession 控制的两种主要方式:使用和使用ExoPlayer。虽然可以实现基本的音频播放,但要对接系统通知栏和状态栏的播放控制,需要开发者手动创建和管理以及自定义通知栏,处理各种播放控制事件,实现较为复杂。ExoPlayer是 Google 官方推荐的更强大、更灵活的媒体播放库,并且与库中的和集成得更好。使用ExoPlayer和可以更简洁地实现状态栏和通知栏的播放控制,ExoPlayer会自动处理大部分与系统媒体控制的交互。原创 2025-04-18 11:03:49 · 1048 阅读 · 0 评论 -
System 应用访问 Vendor 库的详细方案
SELinux 是 Android 的强制访问控制 (MAC) 系统,它通过安全策略规则来限制进程对系统资源的访问。每个进程和文件都有一个安全上下文(Security Context),SELinux 策略定义了不同安全上下文之间的交互规则。默认情况下,system应用的上下文和vendor库的上下文可能不允许直接访问。通过自定义 SELinux 策略,可以显式地允许特定的system应用访问特定的vendor库。详细配置方法:使用查找你的system应用进程的 SELinux 上下文。原创 2025-04-12 17:41:44 · 948 阅读 · 0 评论 -
详解 kotlin 相对 Java 特有的关键字及使用
Kotlin 在兼容Java的基础上,引入了许多特有的关键字,这些关键字为Kotlin带来了简洁、高效的编程体验。这些Kotlin特有的关键字为开发者提供了更丰富、灵活的编程方式,使得代码更加简洁、易读和高效。原创 2025-04-10 09:52:34 · 806 阅读 · 0 评论 -
2025年如何实现安卓、iOS、鸿蒙跨平台开发
优先 ArkUI-X:若项目需深度集成鸿蒙特性(如多设备协同),且希望长期投入鸿蒙生态。选 Flutter/React Native:若团队已有经验,且需快速覆盖主流平台。混合开发:核心功能用原生(如鸿蒙分布式模块),其他部分用跨平台框架,平衡效率与体验。更多技术细节可参考华为开发者文档、Flutter 鸿蒙社区适配指南。原创 2025-02-28 12:45:44 · 3644 阅读 · 0 评论 -
Android 中音频焦点的使用场景及示例
通过以上示例,我们可以看到音频焦点在 Android 应用中的重要性及其实现方式。合理使用音频焦点可以让应用提供更好的用户体验,与其他应用和谐共存。在实际开发中,建议根据具体场景选择合适的实现方式,并注意版本兼容性处理。原创 2024-09-18 22:47:35 · 1412 阅读 · 0 评论 -
Kotlin 的优势:现代编程语言的卓越选择
简洁与优雅的语法空安全特性函数式编程,支持高阶函数、lambdaKotlin 内联函数与 Java 的互操作性强大的类型推断协程支持`lazy` 委托object 单例模式区间表达式现代的开发工具支持原创 2024-07-29 22:22:01 · 614 阅读 · 0 评论 -
安卓14中Zygote初始化流程及源码分析
日志抓取结合日志与源码分析systemServer zygote创建时序图一般应用 zygote 创建时序图向 zygote socket 发送数据时序图原创 2024-07-12 23:17:16 · 1185 阅读 · 1 评论 -
安卓Framework开发快速分析日志及定位源码
如何区分源码中 main system events 日志查看 Activity 生命周期日志分析 events 日志在源码中位置应用进程ID助分析具体应用ProtoLog 动态开关日志如何快速定位相关流程的代码位置原创 2024-07-01 11:59:48 · 987 阅读 · 0 评论 -
adb常用命令详解--提升开发效率利器
文件管理截屏与录屏logcat 使用dumpsys 相关ps 相关am 相关pm 相关wm 相关setprop 设置属性input 相关adb connect 远程无线调试原创 2024-06-17 14:00:18 · 1388 阅读 · 0 评论 -
Android 性能优化--APK加固(2)加密
字符串加密图片加密如何避免应用被重新签名分发APK 加壳的方案简析DEX加密原理及实现原创 2024-03-07 09:21:59 · 1784 阅读 · 0 评论 -
安卓相机慢动作的软件实现要点
慢动作英文称呼SlowMotion,也就是高帧率录像,如果以正常30帧播放,就能看到慢动作效果,可以用来拍摄快速移动物体的瞬间,比如鱼儿的游动、终点冲刺结果等。本文主要介绍慢动作在安卓相机应用中如何实现原创 2024-02-25 16:21:41 · 2072 阅读 · 0 评论 -
[译]Android性能优化-Kotlin优化isBlank
最近在优化 Jetpack Compose 运行时的部分时,偶然发现了一个看似无害的 API isBlank() 。如果调用的字符串为空或仅由空格字符组成,则此 API 将返回 true 。但它真的无害吗?让我们看一下 JVM 实现,以更好地了解它的作用翻译 2024-02-23 10:55:53 · 247 阅读 · 0 评论 -
安卓SurfaceTexture中updateTexImage使用及源码分析
在Android系统中,SurfaceTexture 是一个特殊的类,它将来自硬件纹理缓冲区(如相机预览流或视频解码输出)的图像数据转换为 OpenGL ES 可以直接使用的纹理。updateTexImage() 方法是 SurfaceTexture 类的核心方法之一,此方法的主要作用是从 SurfaceTexture 内部持有的图像缓冲区中取出最新一帧,并将其内容复制到与 SurfaceTexture 关联的 OpenGL 纹理上。这对于实时图形渲染、视频播放以及从相机捕获并实时处理图像等场景至关重要。原创 2024-02-02 22:49:08 · 2300 阅读 · 2 评论 -
安卓MediaRecorder(4)视频采集编码写入详细源码分析
通过 文2 我们知道了 MediaRecorder 各个接口 Framework 中的实现。通过 文3 我们 知道了 MediaRecorder 底层音频的采集、编码、写入文件等详细流程。本文主要介绍 MediaRecorder 视频的采集、编码等相关流程。原创 2024-01-24 22:07:39 · 1701 阅读 · 0 评论 -
安卓MediaRecorder(3)音频采集编码写入详细源码分析
前言音频采集音频初始化AudioRecord 分析AudioSource 采集到音频音频编码音频编码后数据处理MPEG4Writer写入音频编码后数据到文件MPEG4Writer::Track 取编码后的音频编数据结语原创 2024-01-13 11:19:43 · 1816 阅读 · 1 评论 -
Intellij建议用String替换StringBuilder
本文探讨了在Java开发中字符串拼接的性能问题,特别是String与StringBuilder的使用场景。通过性能测试和字节码分析,文章指出在简单拼接场景下,String的+操作符由于JDK的底层优化,性能与StringBuilder相当,且代码更简洁。然而,在循环累加等复杂场景中,StringBuilder仍具有明显性能优势。文章建议根据具体场景选择合适的方式:简单拼接使用String,循环拼接使用StringBuilder,并提供了最佳实践建议。原创 2024-01-01 13:24:40 · 745 阅读 · 1 评论 -
安卓MediaRecorder(2)录制源码分析
JAVA new MediaRecorder() 源码分析android_media_MediaRecorder.cpp native_init()MediaRecorder.java postEventFromNativeandroid_media_MediaRecorder.cpp native_setup()MediaRecorder 参数设置MediaRecorder.prepare 分析MediaRecorder.start 分析MediaRecorder.stop 分析原创 2023-12-09 16:29:42 · 1827 阅读 · 2 评论 -
Android Bitmap 使用Vukan、RenderEffect、GLSL实现模糊
使用 Vukan 模糊使用 RenderEffect 模糊使用 GLSL 模糊RS、Vukan、RenderEffect、GLSL 效率对比原创 2023-11-27 22:43:03 · 3138 阅读 · 0 评论 -
安卓使用MediaRecorder(1)录制音频的详细使用
引言使用 MediaRecorder 的步骤常见问题及解决思路无法访问存储卡目录录制的音频文件没有声音录制过程中出现异常MediaRecorder无法正常启动录制的音质或者画质很差录制的文件无法播放结语原创 2023-11-26 19:11:39 · 4895 阅读 · 0 评论 -
Android性能优化--Perfetto用SQL性能分析
Perfetto SQL 基础Perfetto SQL 性能分析原创 2023-11-04 21:02:39 · 2762 阅读 · 1 评论 -
Android 性能优化–Gradle 编译速度优化
编译速度优化1. 保持工具最新2. 使用 KSP 代替 kapt3. 避免编译不必要的资源4. 优化 repositories maven 排序5. 在调试构建中使用静态构建配置值6. 使用静态依赖版本7. 创建库模块8. 为自定义构建逻辑创建任务9. 将图像转换为 WebP10. 禁用 PNG 处理11. 挑选 JVM 垃圾收集器12. 增加 JVM 堆大小13. 使用非传递 R 类14. 使用非常量 R 类15. 禁用 Jetifier 标志16. 使用配置缓存原创 2023-08-16 07:00:00 · 1786 阅读 · 0 评论 -
Android 11 获取启动其他应用
如果应用以 Android 11(API 级别 30)或更高版本为目标平台,并查询与设备上已安装的其他应用相关的信息,则系统在默认情况下会过滤此信息。此过滤行为意味着您的应用无法检测设备上安装的所有应用,这有助于最大限度地减少您的应用可以访问但在执行其用例时不需要的潜在敏感信息。比如 queryIntentActivities()、getPackageInfo() 和 getInstalledApplications() 将无法获取到返回结果.NameNotFoundException原创 2023-08-08 21:50:40 · 693 阅读 · 0 评论 -
Android Compose Button defaultButtonColors
编译会出现异常 Unresolved reference: defaultButtonColors 新版本已经没有 ButtonConstants.defaultButtonColors 和 backgroundColor 可以使用 ButtonDefaults.buttonColors 替换原创 2023-07-01 16:09:46 · 718 阅读 · 0 评论 -
Android Studio Bot 下载使用
下载 Android Studio Hedgehog 找到Studio Bot: View->Tool Windows->Studio Bot 登录 Google 账号原创 2023-07-01 15:56:53 · 1136 阅读 · 3 评论 -
Android性能优化--Perfetto抓取trace
开启Android的trace跟踪服务;使用 adb 抓取;通过 perfetto 网页抓取;直接在手机上抓取;使用 record_android_trace 抓取;熟悉 perfetto 快捷键,会有事半功倍效果;原创 2023-04-17 13:00:15 · 3616 阅读 · 1 评论 -
安卓Camera2用ImageReader获取NV21源码分析
以前如何得到Camera预览流回调如何使用Camera2得到预览流的回调是否可以通过ImageReader直接得到NV21回调呢ImageReader数据流回调的流程源码分析原创 2023-02-12 16:22:57 · 2413 阅读 · 0 评论 -
Android性能优化--Perfetto分析native内存泄露
本文示例是windows,这里使用了python工具,在Linux和mac同样适用。这里只能抓到一次内存的快照,如果想连续记录多次内存的数据需要能Root手机。抓取一次某个应用的内存命令如下,注意提前关闭其它adb程序,如AS。可以看到第一个大块有内存一直上升,结合其中的栈堆,分析并解决即可。是解决问题后,抓取的tarce,可以看到问题已解决。这里我上传了一份自己抓的数据,下载地址。通过点击 方块,对比不用时刻的内存。下载 perfetto ,地址在。每执行一次,上一步会记录一次。连续抓取多次内存快照。原创 2022-12-21 20:38:16 · 5320 阅读 · 2 评论