- 博客(208)
- 资源 (4)
- 收藏
- 关注
原创 预装系统应用
本文介绍了在Android系统中集成第三方应用MySystemApp.apk的系统级实现步骤:1)准备APK文件并创建对应目录结构;2)编写Android.mk构建脚本,配置模块属性、签名方式及SO库处理;3)修改系统编译配置文件(如build/make/target/product/相关文件)添加新模块。重点说明了如何通过LOCAL_CERTIFICATE指定签名方式,以及处理多架构SO库的方法,最终通过重新编译系统并启动模拟器验证集成效果。该方案适用于将普通应用升级为系统应用场景。
2025-11-07 22:53:43
131
原创 OpenGL 绘制速度仪表盘
本文详细解析了基于OpenGL ES 2.0的Android汽车仪表盘渲染实现技术,重点介绍了图形渲染优化方案。系统采用双缓冲机制和预计算矩阵优化渲染性能,通过顶点着色器完成坐标变换,片段着色器处理颜色插值。关键技术包括:1)动态生成圆形顶点数据并复用缓冲区;2)矩阵栈管理实现高效变换;3)线性插值算法确保速度指针动画平滑过渡。实践表明,通过批量绘制、顶点缓存复用等优化手段,渲染效率可提升30%。该方案为车载HMI开发提供了可靠的图形渲染实现参考。
2025-10-31 09:24:14
255
转载 自己动手嵌入 Dart VM
本文探讨了将DartVM虚拟机从Flutter框架中独立出来,嵌入到原生项目中的技术方案。文章首先分析了DartVM的三种主要工作模式(JIT/AOT执行、预热快照等)及其特性差异,特别对比了在桌面端和移动端的不同运行机制。然后详细介绍了如何为iOS平台编译DartVM静态库,包括构建配置调整和依赖处理。最后通过一个HelloWorld示例演示了具体集成过程,包括获取和加载.dill格式的KernelBinary文件,以及处理版本兼容性问题。文章认为,虽然目前DartVM的集成存在文档不足等问题,但将其从F
2025-10-29 22:31:45
32
原创 FBO 滤镜叠加
FBO(帧缓冲对象)是OpenGL/WebGL中实现离屏渲染的核心组件,通过关联纹理或渲染缓冲对象替代默认帧缓冲。其核心功能包括多目标渲染(MRT)和动态资源管理,支持颜色、深度、模板缓冲区的灵活配置。使用流程包括:1)创建绑定FBO;2)配置颜色/深度附件;3)验证完整性;4)渲染到FBO;5)使用结果进行后处理。在Android相机滤镜应用中,FBO用于中间渲染,先将相机预览渲染到FBO纹理,再应用灰白滤镜处理,最后输出到屏幕。关键点包括:尺寸匹配、资源管理和多级渲染管线控制。
2025-10-25 10:30:22
785
转载 VBO 和 EBO VAO
OpenGL ES 3.0中的VBO和VAO优化技术 摘要:VBO(顶点缓冲区对象)和VAO(顶点数组对象)是OpenGL ES 3.0中用于优化渲染性能的关键技术。VBO通过在显存中缓存顶点数据,避免每次绘制时的CPU-GPU内存拷贝;EBO(元素缓冲区对象)则专门缓存图元索引数据。VAO则进一步简化了顶点属性配置过程,通过封装VBO/EBO的状态管理,减少重复的glBindBuffer等调用。文中详细介绍了这些对象的创建、绑定和使用方法,展示了如何通过它们提高渲染效率,降低内存带宽和功耗。
2025-10-24 15:37:20
23
原创 Google Now in Android(NIA)
Google Now in Android(NIA)项目展示了现代化Android开发的三大核心:模块化架构、响应式编程和声明式UI。其采用数据/领域/UI三层设计,通过Kotlin Flow实现单向数据流,结合Jetpack组件(Compose、Room、WorkManager)优化性能。关键实践包括离线优先策略、用例封装业务逻辑、动态主题适配,以及gradle模块化管理和性能测试方案。尽管NIA的纵向分层设计清晰,但实际商业项目可能还需强化横向业务模块拆分。该项目为复杂应用开发提供了可复用的架构范本。
2025-10-23 09:47:21
846
转载 ASM字节码插桩之Transform的替代方案
最近在学习asm字节码插桩相关的知识,发现在高版本的gradle上以前的Transform已经废弃,于是研究了一下新版本字节码插桩的实现,本文将简单地介绍下新版本gradle上字节码插桩的实现。GitHub - SmilingTeresa/AsmDemo: ASM插桩Demo。
2025-10-20 18:33:49
21
转载 AndroidStudio、AGP、Gradle、JDK 版本对应关系
由于 Android 应用的项目涉及到 AGP、Android Studio、Gradle、Java、Kotlin,再加上项目本身使用的 SDK 基本都会使用到 AndroidX 组件,而随着 AndroidX 组件迁移到 Kotlin 重写,其内的 SDK 又对 Kotlin 的版本有一定的要求,这就导致项目的整体 AGP 升级和 SDK 的升级面临重重困难,这需要我们对着以上所涉及内容的版本兼容性说明小心翼翼的修改。
2025-10-20 18:06:14
72
原创 Dagger2
Module@Provides@Singleton.build()Dagger2通过编译时生成代码实现高效依赖注入,适用于中大型Android项目。其核心优势在于:解耦:模块间依赖清晰,便于维护。可测试性:依赖可替换,提升单元测试效率。性能:无反射开销,生成代码接近手写效率。参考【Android】Dagger2 框架设计理念和使用方式详解_android dagger2-优快云博客。
2025-10-19 16:50:33
854
原创 android中 c++类对象存储和虚拟机关系
存储位置:C++ 类对象存储在操作系统的本地堆中,与 ART 的 Java 堆隔离。生命周期:由开发者手动管理,需严格遵循“谁分配谁释放”原则。风险:内存泄漏、野指针、线程安全问题需重点防范。优化建议:使用智能指针(如)自动管理内存。在 JNI 层缓存对象时,优先使用全局引用()减少频繁分配。
2025-10-19 16:15:58
661
原创 Java 字节码修改
Java 字节码修改的核心在于 理解 JVM 指令执行模型 和 内存结构变更机制。通过工具(如 ASM、Javassist)操作 Code 属性,结合类加载机制实现动态增强。开发者需深入掌握 JVM 内存布局和指令集,才能安全高效地完成字节码修改。
2025-10-19 10:56:05
680
原创 Room 概要
Kotlin Room 是 ,是对 SQLite 的封装与增强,旨在简化数据库操作、提升开发效率,并完美契合 Jetpack 组件生态。以下是从到。
2025-10-18 14:17:38
1073
原创 Flow 内部机制 二
Kotlin Flow的冷流特性深度依赖协程机制,通过"惰性发射+独立订阅+上下文隔离"实现。核心机制包括:1) flow构建器封装待执行的发射逻辑;2) collect触发时创建独立协程作用域启动发射;3) 每个订阅者独立消费全量数据;4) 生命周期与订阅者绑定,取消时自动终止;5) flowOn操作符实现上下文分离。相比热流,冷流具有按需生产、独立消费、生命周期安全等优势,通过协程挂起实现轻量级背压,是Kotlin异步数据流的高效解决方案。
2025-10-18 12:09:59
717
原创 结构化并发(Structured Concurrency)
结构化并发 是一种并发编程范式,通过显式的任务生命周期管理和层次化结构,确保并发任务的执行边界清晰、资源安全释放,并简化错误处理
2025-10-18 09:51:33
841
原创 Kotlin 与 Java 互操作中常用注解
:将 Kotlin 属性直接暴露为 Java 公共字段,跳过 getter/setter。:声明 Kotlin 方法可能抛出的异常,强制 Java 调用者处理。:为带默认参数的 Kotlin 函数生成 Java 兼容的重载方法。:修改 Kotlin 元素(函数、类、属性)在 Java 中的名称。:需从 Java 以静态方式调用 Kotlin 伴生对象方法。:需从 Java 调用 Kotlin 默认参数方法时。:修改 Kotlin 文件编译生成的 Java 类名。
2025-10-18 09:36:27
529
原创 ARouter 的跳转原理
ARouter 通过 编译期注解处理 生成路由表,结合 运行时动态加载 和 拦截器链,实现了高效、灵活的组件间跳转。其核心优势在于:解耦:模块间无需直接依赖。安全:编译期校验路径和参数类型。扩展性:支持自定义拦截器、降级策略和服务发现。理解其原理有助于优化路由配置,解决组件化开发中的复杂跳转需求。
2025-10-17 22:32:19
769
原创 ActivityThread的attach()方法
attach()方法通过初始化主线程、绑定系统服务、创建Application对象三大核心操作,为应用进程的运行奠定基础。其本质是建立应用与系统间的通信桥梁,并启动消息循环机制,使Android应用能够响应系统事件并管理组件生命周期。
2025-10-17 12:15:00
230
原创 android ViewPager2
本文介绍了Android ViewPager2的使用指南:1) 基础用法包括添加依赖、布局配置;2) 两种适配器实现方式(FragmentStateAdapter和RecyclerView.Adapter);3) 高级功能如页面间距设置、TabLayout集成、动态增删页面;4) 常见问题解决方案;5) 完整示例代码展示ViewPager2与Fragment、TabLayout的结合使用。ViewPager2基于RecyclerView实现,具有更好的兼容性和灵活性,支持水平/垂直滑动,能自动管理Fragm
2025-10-16 22:31:44
325
原创 Flow 内部机制
以下结合 Kotlin Flow 源码(基于1.7.3)详细解析其实现机制,重点分析核心接口、操作符组合原理、冷流特性及背压处理。
2025-10-16 16:21:04
899
原创 StateFlow 和 SharedFlow
:替代 LiveData,提供更灵活的协程支持,确保所有订阅者获取最新状态。:确保 UI 始终显示最新状态,避免因配置变更导致的数据丢失。:处理一次性事件(如通知、用户操作),支持灵活的缓冲策略。:额外缓冲容量,用于处理生产者和消费者速度差异。:状态管理工具,用于持久化并同步最新状态值。:通用事件总线,支持广播事件与历史数据回放。:新订阅者回放的历史数据数量(默认 0)。✅ 需要持久化最新状态(如 UI 状态)。新订阅者立即收到当前值(粘性)。(默认):挂起生产者直到有空间。
2025-10-16 09:02:21
602
原创 LiveData 粘性事件原理
屏幕旋转后,恢复 ViewModel 中保存的 LiveData 状态。:即使观察者在数据发送完成后才订阅,仍能接收到最后一次发送的数据。跨组件通信时,确保新订阅者接收历史事件(需谨慎使用)。:LiveData 内部维护的版本号,初始值为。:自定义 LiveData 子类,覆盖。:旧数据持续触发回调,导致资源浪费。:数据仅在观察者处于活跃状态(如。:新页面意外接收旧页面的数据。:通过标记位控制数据消费次数。:包装观察者的核心类,实现。:如用户行为日志被多次记录。:当组件进入活跃状态时,
2025-10-15 19:06:54
278
原创 Kotlin协程异常传播机制
Kotlin协程的异常传播机制通过结构化并发和责任隔离实现高效错误管理。最佳实践包括:作用域规范化:使用。分层处理:UI层捕获展示,数据层处理原始异常。隔离策略隔离独立任务。防御性编程try-catch包裹,避免静默失败。通过合理设计异常边界和恢复策略,可显著提升应用稳定性和可维护性。
2025-10-15 16:46:05
677
转载 kotlin协程原理疑问解惑
Kotlin协程的调度器通过并发执行I/O任务、优化管理线程池、协程挂起与恢复以及线程安全性和并发控制等机制,提供了高效且稳定的I/O操作执行环境。这使得开发者能够轻松地编写并发处理I/O任务的代码,提高应用程序的性能和响应性。
2025-10-15 16:33:41
13
原创 Kotlin 协程 与 CPS
Kotlin 协程通过 CPS 实现了 同步代码风格异步执行 的核心目标:CPS 转换:将挂起函数编译为状态机,通过管理执行流程。结构化并发:结合协程作用域,确保资源安全和生命周期管理。性能优化:状态机复用、减少对象分配,提升执行效率。理解 CPS 是掌握 Kotlin 协程底层原理的关键,它不仅是语法糖,更是通过编译器与运行时协作实现的精巧设计。
2025-10-14 18:34:20
558
原创 mediapipe流水线分析 三
张量的形状可以是任意维度的,例如一维、二维、三维等等。与 TensorFlow 的协议缓冲区模型格式相比,这种格式具有多种优势,例如可缩减大小(代码占用的空间较小)以及提高推断速度(可直接访问数据,无需执行额外的解析/解压缩步骤),这样一来,TensorFlow Lite 即可在计算和内存资源有限的设备上高效地运行。TfLiteTensor是TensorFlow Lite中特有的数据结构,它是对Tensor的封装,具有一些额外的属性和方法,用于支持TensorFlow Lite特定的功能和操作。
2025-07-03 00:36:55
1067
原创 TensorFlow 中定义模型和层
大多数模型都由层组成。层是具有已知数学结构的函数,可以重复使用并具有可训练的变量。在 TensorFlow 中,层和模型的大多数高级实现(例如 Keras 或Sonnettf.Module。下面是一个在标量张量上运行的非常简单的tf.Module示例:继承 tf.Mode模块和引申而来的层是“对象”的深度学习术语:它们具有内部状态以及使用该状态的方法。__call__并无特殊之处,只是其行为与Python 可调用对象类似;您可以使用任何函数来调用模型。
2025-07-03 00:15:02
1095
原创 cmake find_package
问:find_package 使用 module模式依赖关系是不是无法透传AI 答:在 CMake 中使用的 (即通过脚本查找库)时,默认情况下确实无法直接实现依赖的透传。其根本原因在于 Module 模式的设计机制与依赖传递的实现方式差异。
2025-07-03 00:09:30
388
转载 RK3568上使用4G及以上内存时报错RGA_MMU unsupported memory larger than 4G
所以可以推断,从3840MB到4096MB的这256M,是rk3568用于MMIO的地址空间,不能用作访问内存的地址空间。为了能访问到4G末尾的[3840MB,4096MB]这一段内存,只能通过从4G以上的内存区间来映射,rk3568用的是前面第三个地址区间,也就是[7936MB,8192MB]来实现。机制进行访问访问受限制的内存(原理上相当于通过CPU将高位内存拷贝至符合硬件要求的低位内存中,再交由硬件进行处理,处理完毕后再通过CPU将低位内存搬运回目标的高位内存上。
2025-07-03 00:03:09
237
原创 Pytorch Transformer
Transformer 模型是一种基于自注意力机制(Self-Attention)的深度学习架构,彻底革新了自然语言处理(NLP)、计算机视觉(CV)等序列数据处理领域。其核心设计摒弃了传统循环神经网络(RNN)的顺序依赖性,实现了高效并行计算与长距离依赖捕捉能力。
2025-06-30 01:01:53
1096
原创 Pytorch torch.nn
PyTorch的torch.nn模块是构建神经网络的核心工具,提供神经网络层、损失函数等组件。主要包含:1) nn.Module基类用于自定义模型;2) 预定义层如卷积、全连接层;3) 容器类Sequential/ModuleList组织网络结构;4) 常用损失函数;5) nn.functional函数式接口;6) 权重初始化方法。该模块支持动态计算图和GPU加速,包含丰富的层类型(卷积、循环、归一化等)和激活函数,可通过简单的类继承和组合快速构建复杂网络。
2025-06-30 00:48:32
692
转载 c语言function/bind/lambda及c回调效率对比
c函数回调效率最高,如果非常频繁且需要考虑效率的地方,建议尽量采用c函数回调,而在对效率要求不高的场景可以使用function。function类型,lambda方式耗时:5.5毫秒。function类型,bind方式耗时:9.9毫秒。在初始化时候也有多种类型。下面通过代码演示一下。function类型,c函数方式耗时:8毫秒。使用c函数初始化c回调方式耗时:2.8毫秒。2.模板function回调;function型的初始化方式。for(1000000次){使用c函数初始化c回调。3.C函数初始化方式。
2025-06-25 20:00:00
59
转载 Yolov10
关联问题换一批在过去几年中,YOLO系列模型已成为实时目标检测领域的主导范式,这得益于它们在计算成本和检测性能之间的有效平衡。研究行人探索了YOLOs的架构设计、优化目标、数据增强策略等,取得了显著的进展。然而,对非最大值抑制(NMS)的后处理依赖阻碍了YOLOs的端到端部署,并不利影响推理延迟。此外,YOLOs中各种组件的设计缺乏全面彻底的检查,导致明显的计算冗余并限制了模型的能力。这导致了次优的效率,同时存在相当大的性能提升潜力。
2025-06-24 22:59:26
57
原创 coco128 训练
YOLOv10训练与评估摘要 本文详细介绍了YOLOv10模型的训练流程及评估方法。主要内容包括: 环境配置:基于Python 3.12、PyTorch 2.7.1和CUDA 12.8,使用NVIDIA RTX 5060 GPU进行训练。 数据集准备:配置COCO128数据集,解析其标注格式(YOLO TXT),统计类别分布(32/80类,前5类占比44%)。 训练参数:调整超参数(学习率0.005、热身周期5、混合增强0.1),启用数据增强(色相调整、马赛克增强等),训练100轮次,批量大小32。 评估指
2025-06-24 22:57:29
1225
翻译 译文 Neon
Neon是Arm高级SIMD架构的实现。32个128位向量寄存器:每个寄存器可容纳多个数据通道(Lane)SIMD指令:支持对多个数据通道同时执行并行操作多媒体与信号处理3D图形渲染语音与图像处理其他对定点和浮点性能要求严苛的领域。
2025-03-14 15:27:08
147
原创 Android Composable 与 View 的联系和区别
优先选择 Compose:新项目、动态 UI(如动画、主题切换)或需快速迭代的场景沿用传统 View:维护旧项目或依赖原生控件(如 WebView、地图 SDK)的场景。
2025-03-14 15:04:24
766
webrtc相关资料.rar
2019-12-20
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅