- 博客(495)
- 资源 (2)
- 问答 (1)
- 收藏
- 关注
原创 【Android应用开发】Android虚拟机的演进
Android虚拟机技术经历了从Dalvik到ART的革命性演进。Dalvik(2007-2014)采用基于寄存器的架构,通过JIT编译提升性能;ART(2013-2016)引入AOT预编译,优化了启动速度和内存管理;2016年起混合编译模式(JIT+AOT)结合PGO技术,在性能与资源间取得平衡。当前Android 14进一步优化了内存管理和安全机制,未来或将融合AI和云原生技术,实现智能资源分配与跨平台开发。这一技术演进史展现了移动计算生态的成熟与创新。
2025-10-23 09:15:00
991
原创 【Android FrameWork】第一天:JNI ENV介绍
JNIEnv是Java Native Interface(JNI)的核心结构体,作为Java与原生代码(C/C++)之间的交互桥梁。它提供了一系列标准化接口,使原生代码能够访问Java对象、调用Java方法,并处理数据类型转换、异常和内存管理。JNIEnv在C和C++中的语法略有不同,但功能一致。每个原生线程拥有独立的JNIEnv实例,通过它能安全地操作Java对象(如获取类信息、访问字段、调用方法)并处理字符串、数组等数据类型转换。此外,JNIEnv支持异常检查与引用管理(局部/全局引用),确保跨语言交互
2025-10-23 08:15:00
605
原创 【OPENGL ES 3.0 学习笔记】其他内容:认识OpenVG
OpenVG是Khronos Group制定的2D矢量图形渲染API标准,专注于高效渲染SVG、自定义路径等矢量图形,具有缩放不失真和低内存占用的特点。与OpenGL ES不同,OpenVG专攻矢量图形,适用于UI控件、地图矢量图层等场景。其核心组件包括路径(Path)、画笔(Paint)和渲染(Render),通过"路径+属性"描述图形,支持硬件加速和跨平台一致性。使用流程依赖EGL初始化,需创建OpenVG上下文并设置抗锯齿等属性,最后通过路径和画笔资源实现图形绘制。OpenVG特别
2025-10-22 09:00:00
544
原创 【OPENGL ES 3.0 学习笔记】第九天:缓存、顶点和顶点数组
本文介绍了OpenGL ES中顶点数据处理的三大核心组件:顶点数组(VAO)、顶点属性和缓冲区对象(VBO)。VBO用于存储顶点数据到GPU内存,减少CPU-GPU数据传输开销;顶点属性定义了顶点数据的组织方式,通过glVertexAttribPointer配置;VAO则封装了VBO和顶点属性配置状态,简化多模型渲染时的状态管理。三者协同工作:VBO存储原始数据,顶点属性描述数据格式,VAO记录配置状态,最终通过绑定VAO实现高效渲染。这种机制显著提升了图形渲染性能,是OpenGL ES渲染流程的基石。
2025-10-22 09:00:00
1092
原创 【Android应用开发】Lint 静态检查代码工具
Android Lint是Android Studio内置的静态代码分析工具,能够在不运行代码的情况下检测项目中的潜在问题。它具有五大核心功能:代码质量检测(如空指针风险、编码规范问题)、性能优化(如内存泄漏、过度绘制)、兼容性检测(API版本适配)、资源优化(未使用资源)和安全风险检测(如明文存储)。Lint通过扫描项目文件、匹配规则集并生成报告来实现检测,报告中包含问题级别、位置和解决方案。开发者可以通过实时检测、手动触发或自定义配置(如build.gradle中的lintOptions)来使用Lint
2025-10-21 09:00:00
1816
原创 【OPENGL ES 3.0 学习笔记】第八天:着色器代码解析
GLSL ES 是 OpenGL ES 的着色器语言,用于编写顶点和片段着色器。其语法基于C语言但针对GPU优化,包含版本声明、精度限定符、特殊变量类型(attribute、uniform、varying)等核心要素。通过一个彩色三角形案例,展示了从顶点数据定义、着色器编写到程序链接的完整流程,重点解析了varying变量的插值原理。文章还介绍了向量/矩阵运算等进阶语法,为移动端3D图形开发提供基础指导。
2025-10-21 08:15:00
752
原创 【Android Gradle学习笔记】第八天:NDK的使用
Android NDK开发指南:NDK与Gradle集成详解 本文介绍了Android NDK开发的核心概念与Gradle集成方法。主要内容包括: NDK基础:NDK是用于开发Android原生代码的工具集,通过Gradle和AGP实现与Java/Kotlin代码的集成。 环境配置:详细说明了NDK和CMake的安装步骤,以及支持NDK的项目创建方式。 项目结构:解析了包含原生代码的Android项目目录结构,重点说明CMakeLists.txt和build.gradle文件的作用。 Gradle配置:提供
2025-10-20 20:03:16
622
原创 【OPENGL ES 3.0 学习笔记】第七天:着色器程序从崩溃到入门
着色器程序:图形渲染的核心动力 着色器程序是运行在GPU上的专用代码,负责将3D模型数据转换为2D屏幕图像,是图形渲染管线的关键可编程阶段。它突破了传统固定渲染管线的限制,使开发者能够自定义光照、纹理和特效,同时优化性能。着色器主要分为顶点着色器(处理顶点坐标变换)和片段着色器(计算像素颜色),两者协同工作,配合可选阶段如几何着色器,实现复杂视觉效果。通过GLSL等语言编写的着色器程序,能够灵活控制从基础几何变换到高级PBR渲染的全流程,是现代图形技术的核心驱动力。
2025-10-20 09:15:00
883
原创 【Android Gradle学习笔记】第七天:测试从配置到运行
Gradle测试摘要(150字) Gradle为Android项目提供完整的测试支持体系,包含本地单元测试(JVM运行)和仪器化测试(设备运行)。测试代码按约定存放在test/和androidTest/目录,通过testImplementation/androidTestImplementation配置依赖。Gradle自动生成测试任务如testDebugUnitTest和connectedDebugAndroidTest,可通过命令行或Android Studio执行。示例演示了用JUnit测试工具类和使
2025-10-20 08:00:00
812
原创 【Android Gradle学习笔记】第六天:多渠道打包
摘要: 多渠道定制是利用同一套核心代码为不同分发渠道生成差异化安装包的技术,通过渠道标识实现精准归因、合规适配等功能。技术实现包括渠道ID注入(如Gradle原生、第三方工具)、差异化配置(SDK隔离、资源覆盖)和自动化打包流程(本地脚本或CI/CD集成)。实战中需配置渠道维度、注入标识并读取,适配案例如华为专属SDK集成。常见问题包括签名冲突、资源覆盖失效等,可通过多签名管理或工具优化解决。未来趋势包括动态化方案(插件化按需加载)和智能适配技术,以提升效率并优化包体积。(147字)
2025-10-19 09:45:00
847
原创 【OPENGL ES 3.0 学习笔记】第六天:EGL 从入门到放弃
EGL(Embedded-System Graphics Library)是连接OpenGL ES/OpenVG与原生窗口系统的中间层,负责管理图形渲染环境与设备硬件的交互。它提供渲染环境配置、资源管理和窗口绑定等基础功能,是嵌入式设备图形渲染的核心组件。EGL的关键组件包括EGLDisplay(显示设备连接)、EGLConfig(渲染配置)、EGLSurface(渲染表面)和EGLContext(OpenGL ES状态容器),它们协同工作实现图形渲染到屏幕的流程。在Android平台上,EGL使用流程包括
2025-10-19 09:00:00
1815
原创 【Android应用开发】认识StateMachine类
Android 的 StateMachine 类采用状态机设计模式,有效解决了传统 if-else/switch 实现多状态管理的痛点。通过 State 类封装状态行为(包括 enter()、exit()、processMessage() 等方法)和 StateMachine 类管理状态切换与消息分发,开发者可以构建清晰、可维护的状态逻辑。典型应用包括蓝牙连接、媒体播放等场景。状态机工作流程分为初始化注册、设置初始状态、启动运行三个阶段,通过父子状态继承实现逻辑复用,内部基于 Handler 实现线程安全的
2025-10-18 09:00:00
1092
原创 【OPENGL ES 3.0 学习笔记】第五天:渲染彩色三角形(C++版本)
本文介绍了一个基于 Android NDK 和 OpenGL ES 3.0 的三角形渲染实现方案。系统采用 Java 层管理 Surface 生命周期、Native 层负责核心渲染的架构模式。Java 层通过自定义 SurfaceView 处理 Surface 的创建/变化/销毁事件,并启动后台渲染线程;Native 层使用 EGL 连接 OpenGL 与 Android 窗口系统,完成着色器编译、顶点数据加载和帧渲染。该方案展示了移动端 3D 渲染的基础实现流程,包括 EGL 环境配置、OpenGL 资源
2025-10-18 09:00:00
924
原创 【Android Gradle学习笔记】第五天:认识BuildType
Android Gradle 构建系统中,BuildType 是实现多环境差异化构建的核心机制。通过定义不同的构建类型(如 debug、release、staging),开发者可以复用同一套代码适配调试、测试、发布等不同场景。BuildType 支持环境隔离、自动化构建,并允许自定义参数配置,包括是否混淆代码、启用调试、配置签名等。默认提供 debug 和 release 两种构建类型,开发者还可扩展自定义类型,通过 BuildConfig 字段注入、资源覆盖等特性实现更灵活的环境适配。这种机制显著提升了开
2025-10-17 09:00:00
944
原创 【OPENGL ES 3.0 学习笔记】第四天:渲染彩色三角形(JAVA版本)
本文详细解析了TriangleSurfaceView的代码实现,该组件基于SurfaceView和OpenGL ES 3.0实现彩色三角形渲染功能。核心设计采用双线程架构:主线程的SurfaceView负责管理渲染表面生命周期,子线程RenderThread处理OpenGL渲染任务。通过EGL环境搭建OpenGL与Surface的桥梁,完成着色器程序编译、顶点缓冲创建等资源初始化,确保高效安全的图形渲染。文章深入剖析了EGL配置、着色器源码、线程同步等关键技术点,为Android平台的OpenGL开发提供了
2025-10-17 08:45:00
855
原创 【Android Gradle学习笔记】第五天:认识defaultConfig
摘要: Android Gradle构建脚本中的defaultConfig是配置所有构建变体的默认基准,避免重复配置。核心功能包括:定义应用标识(applicationId)、版本号、SDK兼容性(minSdk/targetSdk)、测试配置(testInstrumentationRunner)等。支持动态配置(如环境变量注入)和多风味覆盖(productFlavors)。Kotlin DSL提供类型安全校验,需注意语法差异(如+=操作符)。通过buildConfigField和manifestPlaceh
2025-10-16 08:30:00
420
原创 【Android Gradle学习笔记】第四天:Android Gradle插件
Android Gradle插件(AGP)是连接Android项目与Gradle构建工具的核心桥梁,负责将代码转换为APK/App Bundle,并提供依赖管理、变体控制等功能。本文采用Kotlin DSL配置AGP版本(8.5.0)和Gradle版本(8.5),详细介绍了在根目录和模块级build.gradle.kts中的核心配置,包括compileSdk、buildTypes、productFlavors等关键设置,以及Kotlin DSL特有的语法规则,如布尔属性(isXXX)和create()函数的
2025-10-16 08:00:00
1767
原创 【OPENGL ES 3.0 学习笔记】第三天:Vulkan 与 OpenGL ES
摘要: Vulkan与OpenGL ES是Khronos Group主导的两大图形API,定位差异显著。Vulkan面向高性能场景(如3A游戏、专业渲染),采用显式控制架构,支持多线程,但开发复杂度高;OpenGL ES则针对嵌入式设备(中低端手机、IoT),隐式驱动管理,兼容性强且开发门槛低。二者互补:Vulkan适合高端硬件与性能敏感场景,OpenGL ES适配快速开发与老旧设备。主流应用常采用双API策略(如《原神》),兼顾画质与兼容性。未来Vulkan渗透率将提升,但OpenGL ES仍将在嵌入式领
2025-10-14 08:30:00
1510
原创 【Android Gradle学习笔记】第三天:Gradle Task
Gradle Task是Android构建工具的核心执行单元,负责编译代码、处理资源、打包APK等操作。文章介绍了Gradle任务的基本概念和两种创建方式:通过task关键字快速创建和指定任务类型(如Copy、Exec)实现特定功能。重点讲解了任务依赖关系(dependsOn)、执行顺序控制(mustRunAfter)以及任务前后操作(doFirst/doLast)。最后提到通过group和description对任务进行分组和描述管理,提高构建流程的可控性和可维护性。
2025-10-14 00:09:21
703
原创 【OPENGL ES 3.0 学习笔记】第一天:什么是EGL
在移动图形开发中,`OpenGL ES`作为跨平台的图形API,其核心功能聚焦于GPU渲染管线的控制,例如顶点变换、纹理采样、片段着色等。然而,这些渲染指令需要与具体设备的窗口系统(如Android的SurfaceFlinger、iOS的Core Animation)进行交互,才能最终将图像呈现到屏幕上。EGL(Embedded-System Graphics Library)便扮演了至关重要的「桥梁」角色。
2025-10-12 18:31:34
901
原创 【Android Gradle学习笔记】第二天:Gradle工程目录结构
本文介绍了Android项目的Gradle目录结构及其核心功能。项目根目录包含全局配置文件(如build.gradle、settings.gradle)和Gradle执行脚本,用于定义构建规则、模块管理和环境配置。重点解析了应用模块(app/)的结构,包括模块级build.gradle配置文件、混淆规则以及源代码与资源目录的组织方式(如main、androidTest等)。通过理解这些目录和文件的作用,开发者可以更高效地管理和构建Android项目。
2025-10-12 11:25:19
895
原创 【Android Gradle学习笔记】第一天:认识下Gradle
Gradle是一款功能强大的构建自动化工具,广泛应用于Android开发。它结合了Ant的灵活性和Maven的约定优于配置思想,支持Groovy或Kotlin DSL编写构建脚本。Gradle具有高性能(增量构建、构建缓存、并行执行)、多语言支持、完善的依赖管理和丰富的插件生态等特点。核心概念包括项目(Project)、任务(Task)、构建脚本和插件,通过定义任务间的依赖关系来管理构建流程。官方文档是最权威的学习资源。
2025-10-11 19:15:00
744
原创 【OPENGL ES 3.0 学习笔记】第一天:认识渲染管道
OpenGL ES 3.0渲染管道是一个将3D数据转换为屏幕像素的多阶段处理流程。它包含6个核心阶段:1)输入装配整理顶点数据;2)顶点着色器转换3D坐标为2D位置;3)图元装配将顶点组成基本形状并裁剪;4)可选几何着色器修改或生成新图元;5)光栅化将矢量形状转为像素片元;6)片元着色器计算像素颜色,最终通过逐片元操作进行深度/模板测试和混合后输出图像。其中顶点、几何和片元着色器是可编程阶段,开发者可通过它们实现各种渲染效果。整个管道通过分工明确的处理流程,实现了从简单图形到复杂3D场景的渲染。
2025-10-10 23:59:39
624
原创 【Camera开发】疑难杂症记录
当你不主动调用 setDefaultBufferSize(width, height) 时,SurfaceTexture 会使用一个 系统默认的缓冲区尺寸(通常是较小的尺寸,比如手机屏幕分辨率的 1/4,或固定的低分辨率如 320x240,具体依赖系统版本和图像源)。缓冲区尺寸不足,强制压缩:SurfaceTexture 的默认缓冲区尺寸很小(比如 320x240),无法容纳 720x960 的完整数据,系统会先将 720x960 的图像 压缩到 320x240(像素被合并,细节丢失);
2025-09-21 17:37:12
428
原创 【OSG学习笔记】Day 18: 碰撞检测与物理交互
**物理引擎** 是一种通过计算机模拟物理规律(如力学、碰撞、重力、流体动力学等)的软件工具或库。它的核心目标是在虚拟环境中逼真地模拟物体的运动和交互,广泛应用于 **游戏开发、动画制作、虚拟现实(VR)、机器人仿真** 等领域。
2025-06-10 15:23:30
994
原创 【OSG学习笔记】Day 17: 粒子系统(osgParticle)实战
OpenSceneGraph(OSG)的粒子系统(osgParticle)是一个强大的工具包,用于创建各种自然现象和视觉特效,如火焰、烟雾、雨雪、爆炸等。它基于物理模拟原理,通过管理大量微小的"粒子"对象来生成复杂的动态效果。
2025-06-09 18:09:55
1210
原创 【OSG学习笔记】Day 16: 骨骼动画与蒙皮(osgAnimation)
骨骼动画是 3D 计算机图形中常用的技术,它通过以下两个主要组件实现角色动画。
2025-06-08 17:45:39
537
原创 【OSG学习笔记】Day 15: 路径动画与相机漫游
本文介绍了如何使用OpenSceneGraph(OSG)实现物体沿贝塞尔曲线运动和相机路径录制。主要内容包括:贝塞尔曲线的基本概念,通过控制点定义曲线路径;OSG实现步骤,包括创建模型、计算贝塞尔曲线点、设置动画路径以及添加矩阵变换节点;还展示了相机路径记录的实现方法,通过按键控制记录开关。最终效果是物体沿曲线运动的同时,可实时记录并显示相机移动轨迹。代码示例完整,实现了三维场景中的动画和漫游功能。
2025-06-04 21:55:14
767
原创 【OSG学习笔记】Day 14: 操作器(Manipulator)的深度使用
如果内置的操作器无法满足需求,我们可以继承类来实现自定义操作器。home():重置操作器到初始状态。handle():处理事件(如鼠标、键盘输入)。和:返回摄像机的变换矩阵和逆矩阵。
2025-04-29 16:13:12
414
原创 【OSG学习笔记】Day 13: 事件处理——响应键盘与鼠标
在`OpenSceneGraph (OSG)` 中,事件处理是实现用户交互功能的重要部分。
2025-04-28 18:15:24
490
原创 【OSG学习笔记】Day 12: 回调机制——动态更新场景
NodeCallback 可用于在不同的遍历阶段执行自定义操作,例如在裁剪遍历、绘制遍历等阶段。是一个更通用的回调类,它能在节点遍历的任何阶段被调用。
2025-04-28 16:19:11
299
原创 【OSG学习笔记】Day 11: 文件格式与数据交换
osgConv是 OSG 官方提供的命令行工具,用于在不同三维文件格式之间转换,支持输入/输出多种格式(包括 OSG 系列格式、常见第三方格式)。
2025-04-26 22:00:00
1185
原创 【OSG学习笔记】Day 10: 字体与文字渲染(osgText)
osgText是OpenSceneGraph(OSG)中用于文本渲染的重要模块,支持在3D场景中添加静态/动态文字、自定义字体、文字样式(颜色、大小、对齐方式等)以及动态更新文本内容。通过结合OSG的场景图机制,可实现文字与3D模型的精准对齐、视角跟随等效果。
2025-04-26 16:50:11
482
原创 【OSG学习笔记】Day 9: 状态集(StateSet)与渲染优化 —— 管理混合、深度测试、雾效等渲染状态
StateSet 是OSG(OpenSceneGraph)中管理渲染状态的核心类,用于封装 OpenGL 渲染状态(如混合、深度测试、雾效、材质、纹理、着色器等),并将这些状态应用于节点或几何体。
2025-04-25 15:15:21
956
原创 【OSG学习笔记】Day 8: 纹理贴图——赋予模型细节
在 OSG(Open Scene Graph)中,纹理贴图是为模型添加细节的关键技术,主要涉及和三部分。
2025-04-24 20:30:47
1224
原创 【OSG源码阅读】Day 3: 走进realize函数
图形上下文(Graphics Context)是一个存储图形渲染所需状态信息的数据结构,它包含了诸如当前的颜色、线宽、字体、投影矩阵、模型视图矩阵等渲染状态,以及与特定显示设备交互的必要信息。不同的图形库和操作系统对图形上下文的实现方式有所不同,但总体来说,它是图形渲染过程中不可或缺的一部分。编译图形上下文通常指的是对图形对象(如显示列表、纹理、着色器程序等)进行预处理,将它们转换为显卡能够高效执行的格式。这个过程类似于编译代码,通过提前处理和优化,减少了每次渲染时的重复计算,从而提高了渲染效率。
2025-04-23 15:30:55
86
原创 【OSG学习笔记】Day 6: 几何体(Geometry)的创建与自定义
今天学习下几何体的创建,也就是Geometry。学习之前我们先来回想一下右手坐标系:所以如果我们想直观的看到效果需要定义来实现几何体。
2025-04-22 19:06:19
947
原创 【OSG源码阅读】Day 1: 从Viewer的run函数开始
几乎每一个OSG代码都是从这个函数开始了运行。我们来看下这个函数都干了什么?我这里下载的是版本。首先找到源码的Viewer这里实现和简单就是跳转了最后就执行到了函数。进入这个函数我们看下它主要干了啥。
2025-04-22 11:44:45
152
Android SurfaceView+OpenGL ES 3.0 kotlin版本实现绘制彩色三角形源码
2025-10-16
snmpwalk的timeout问题
2016-07-28
TA创建的收藏夹 TA关注的收藏夹
TA关注的人