- 博客(356)
- 收藏
- 关注
原创 Android 13 骁龙相机点击拍照流程分析(二)——点击拍照到存入相册
Android 13 骁龙相机点击拍照流程分析(一)——点击拍照到更新到左下角缩略图-CSDN博客。
2023-10-09 16:39:42
1846
原创 OpenHarmony与HarmonyOS联系与区别
HarmonyOS 是华为是基于 OpenHarmony、AOSP等开源项目开发的面向多种全场景智能设备的商用版本,所以HarmonyOS包含OpenHarmony,如果将OpenHarmony理解成地基,则HarmonyOS则是在这个地基基础上修建的精装房。开篇就说“关于‘鸿蒙操作系统’,由于缺乏规范的表述和统一的口径,导致内部理解不一致、对外说法不一致,容易引起混淆,所以此篇是专门说一下OpenHarmony与HarmonyOS的区别的。当我们在说“鸿蒙”的时候,也许就是指鸿蒙生态。
2023-07-21 16:04:54
18694
6
原创 001 Android13将Settings移植到AndroidStudio中(一)
首先环境,最好用我上面的AndroidStudio版本及gradle配置将代码整编得到out产物如下图内容复制到AndroidStudio的Settings对应目录下面复制后对应的Settings项目中如下:注意values可以按照需要保存相应的文件夹,我这边是只保留默认的values和中文的values的其实这些步骤也可以放到最后将所有模块导入差不多了在做Settings模块,不然会有很多报错,这里我暂时不说Settings的gradle配置的了,这些都放到最后来说。
2023-05-24 16:12:39
2801
7
原创 一篇文章彻底理解自定义View
对应标签。容易引起oom继承系统的TextView,实现在文字中间加一条横线}}}}) {canvas?}}可以看见文字中间是有一条横线的①.简单实现一个矩形的绘制}}}}) {canvas?}}添加自定义属性,添加自定义背景色先在values目录下面创建attrs.xml,添加自定义属性然后在代码中获取自定义属性,注意获取的资源要回收}//获取自定义属性对应的组名称//获取自定义属性//注意资源需要回收}}}
2022-12-02 17:37:45
1963
原创 flutter_easyrefresh 加载多次问题修复
flutter_easyrefresh是一个下拉刷新上拉加载的插件,具体我就不介绍了,这里主要是解决flutter_easyrefresh的bug,主要我在用此插件的时候遇到如下两个问题:①.上拉加载最后的footer不消失②.加载少量数据出现多次加载现象解决方案第一个问题现象如下,就是加载过程中在数据不能占满整个界面的时候footer是不会自动消失的解决方案:加载完成延时一...
2020-04-17 01:32:06
5814
6
原创 adb常用指令
抓取所有日志(推荐)这是最常用的命令,可一次性捕获main(主应用日志)、system(系统日志)、radio(RIL日志)和events(系统事件)四大缓冲区的日志,并按时间戳(-v time)交织排序,便于分析事件序列。
2026-01-16 09:58:20
212
原创 Android应用程序 c/c++ 崩溃排查流程三——ndk-stack工具使用
摘要:Android开发中遇到C/C++代码崩溃时,ndk-stack工具能有效解析调用栈定位问题。该工具位于NDK目录下,可通过命令adb logcat | ndk-stack.cmd -sym [so文件路径]使用,自动生成包含完整调用链路的详细报告,比addr2line工具更高效直观,帮助开发者快速定位异常位置。(98字)
2026-01-07 19:34:31
302
原创 Android应用程序 c/c++ 崩溃排查流程二——AddressSanitizer工具使用
摘要:本文介绍了在Android应用中集成AddressSanitizer(ASan)工具来检测C/C++内存问题的方法。针对Scudo内存分配器检测到的内存块头部损坏问题,文章详细说明了ASan工具的集成步骤:修改AndroidManifest.xml和gradle配置,添加wrap.sh脚本,以及集成ASan动态库。最后展示了如何使用ASan日志和addr2line工具定位具体的内存错误位置,如检测到试图释放栈上局部变量的无效操作。该方法能有效帮助开发者诊断内存越界写入、释放已释放内存等常见问题。
2026-01-07 19:16:18
1053
原创 图像显示框架七——createSurface的流程(基于Android 15源码分析)
<--2. onFirstRef()回调-------------------------------------||<--6. 返回ISurfaceComposer代理----------------------------||<--10. 返回ISurfaceComposerClient代理---------------------||---11. 保存到mClient成员--------------------------------->|然后再来看下createSurfaceChecked方法。
2025-12-20 20:35:53
901
1
原创 AndroidStudio module编译aar混淆文件处理
一般我们在开发应用的时候,可能需要封装对应的功能模块,封装成aar包对外提供,封装成aar对外提供的话,考虑到安全性方面,我们需要对提供的aar包进行混淆,而且要保证aar的release版本保持的不混淆文件不能被app的release版本混淆了;上述的proguard-rules.pro文件就是之前配置的保持不混淆文件,也可以自定义这个不混淆文件,我这边使用的是同一个文件,这样就把规则传递给app模块了,release app就不会报错类找不到等问题了。详细的规则我这边不展开了,网上有很多。
2025-12-20 17:06:02
261
原创 图像显示框架六——SurfaceFlinger的初始化以及任务调度(基于Android 15源码分析)
然后是通过compositor.configure()将显示配置更新,由于SurfaceFlinger实现了Compositor接口,所以具体实现是在SurfaceFlinger中,然后我们看下SurfaceFlinger中的configure()方法。可以看出来任务调度器中继承了MessageQueue(消息队列),这个是和Android 12有所区别的,Android 12中MessageQueue是在SurfaceFlinger中实现的,这里做了解耦,将消息队列放到任务调度器里面了。
2025-12-11 20:30:16
968
原创 OpenHarmony 5.0 彻底解决应用与导航栏状态栏重叠问题
在launcher应用中进行修改,将设置全面屏改成false,具体修改路径:xxx/launcher/common/src/main/ets/default/manager/WindowManager.ts。但是这个解决方案对于单个应用是有效果的,不能彻底解决此问题,如果每个应用都这样修改则太麻烦了,而且不能适配三方应用,所以需要一个彻底解决方案。
2025-12-09 15:05:11
80
原创 Android应用程序 c/c++ 崩溃排查流程一——addr2line工具使用
addr2line工具的位置在ndk工具里面,我这边工具位置在:xxx\23.1.7779620\toolchains\llvm\prebuilt\windows-x86_64\bin\llvm-addr2line.exe。上述的指令如果想在任意位置使用就添加到环境变量里面即可,将xxx\23.1.7779620\toolchains\llvm\prebuilt\windows-x86_64\bin\路径添加到环境变量中。# 详细版本,显示更多信息。
2025-12-09 14:42:19
453
原创 图像显示框架五——SurfaceFlinger的启动流程(基于Android 15源码分析)
前面介绍了Native应用层如何与SurfaceFlinger进行通信的,但是我们还要了解SurfaceFlinger如何启动起来的,以及一些初始化处理,本文是基于Android 15源码以及Android 15设备进行分析的本篇涉及的代码位置: /frameworks/native/services/surfaceflinger/
2025-11-05 21:31:21
1174
原创 图像显示框架四——应用与SurfaceFlinger构建桥梁(基于Android 15源码分析)
上一篇介绍了如何创建Native的示例应用,从应用开发使用的角度去调用了相关api,从这篇来详细介绍如何调用到系统层,系统内部如何实现的本篇主要介绍应用与SurfaceFlinger的交互,即如何与SurfaceFlinger进行通信的。
2025-11-05 19:11:39
685
原创 Android 图像显示框架三——演示demo以及解析
本文解析了一个Android Native Surface演示程序,重点剖析了图像显示系统的核心机制。程序通过onFirstRef函数初始化Surface,包括建立SurfaceFlinger连接、配置显示属性和初始化BLASTBufferQueue。主程序采用"出队-渲染-入队"的缓冲区管理模式,实现颜色动画循环。关键技术包括:1)双缓冲机制避免显示撕裂;2)Fence系统确保GPU-CPU同步;3)CPU软件渲染RGBA8888格式图像;4)简单的红绿蓝三色循环动画逻辑,每秒切换1帧
2025-11-04 21:20:13
1014
原创 OpenHarmony 5.0 wifi开启整个流程详细分析
本篇是介绍OpenHarmony5.0 wifi开启的整体流程分析,主要是根据日志和代码进行跟踪。
2025-10-24 15:04:06
139
原创 android 图像显示框架二——流程分析
1.图像生产者(Image Producer):负责生产(绘制)图像内容,例如:应用程序、视频解码器。2.图像消费者(Image Consumer):负责使用(消耗)已生成的图像内容。例如:将图像合成后送到显示屏的SurfaceFlinger。3.BufferQueue:作为核心中介,连接生产者和消费者,它管理着一组图形缓冲区(GraphicBuffer),是数据交换的通道。1.图像生产者(右侧)所有需要将画面绘制到屏幕上的实体。常见生产者::3D图形渲染库。Skia:2D图形绘制库,常用于。
2025-10-23 21:18:15
1114
原创 android 图像显示框架一——基础概念介绍
如下是新人小白的各种名词介绍方式底层各个组件名词介绍1.BufferQueue和gralloc我们可以把GraphicBuffer(图形缓冲区)理解为一辆装满货物(图像数据)的卡车,那么:BufferQueue(缓冲区队列):就像一条传送带或者是一个卡车排队通道。它连接着生产货物的“车间”(生产者)和消费货物的“仓库”(消费者)。传送带上面有很多空的卡车,生产者(如App)把货物装满一卡车后,卡车就开到通道末尾排队,等待消费者(如SurfaceFlinger)来取货。
2025-10-23 01:21:01
1338
原创 Android Framework智能座舱面试题
binder机制的理解:binder是一种基于(c/s)架构的ipc通信方式,核心是mmap内存映射而完成的一次拷贝技术为什么重要:它是整个android通信系统的骨架,ActivityManagerService、WindowManagerService等等系统服务的通信方式都是在binder基础上实现的与Socket对比优势:①.只进行了一次数据拷贝,Socket需要进行两次数据拷贝②.binder更加安全(基于UID/PID身份校验③.binder是面向对象的,而Socket是字节流。
2025-09-06 16:45:44
285
原创 hdc指令
hdc shell mount -o rw,remount / # 此命令用于解决推包时提示只读路径,无法推送。例如:[Fail]Error opening file: read-only file system, path:/system/lib/libace.z.so。1.打开camera和Video。
2025-08-18 13:49:18
147
原创 OpenHarmony 5.0 Settings中wifi删除密码立刻去输入密码连接,连接不上
OpenHarmony 5.0中Settings模块的WiFi连接存在三个主要问题:1)信号弱的MAC地址导致连接失败,解决方案对扫描结果按信号强度排序;2)删除密码后立即连接时状态不一致,通过添加"断开中"状态过渡解决;3)密码输入后监听事件异常,修改为仅注销当前监听器并调整连接状态判断。修改方案包括优化WiFi扫描排序算法、添加中间状态处理机制以及完善监听器管理逻辑。
2025-08-05 15:19:41
306
原创 OpenHarmony 5.0 Settings wifi列表界面偶现连接不上,并且后续一直也连接不上
摘要:针对Wifi列表界面切换时偶现无法连接的问题,分析发现当信号过弱断开时,应用监听失效。解决方案包括:1)在监听前增加连接状态判断;2)断开时重新初始化监听器;3)添加"断开中"状态标识,在WifiModel中更新状态并移除监听;4)连接时根据状态判断直接连接或正常流程。通过状态管理确保连接可靠性。
2025-08-05 14:49:33
113
原创 OpenHarmony 5.0 Launcher相关定制
本文介绍了Launcher界面适配调整的方法,主要包括桌面图标/文字大小修改和底部Hotseat布局优化。在PhonePageDesktopGridStyleConfig类中调整桌面图标大小、文字高度等参数;Hotseat布局修改涉及ResidentLayout界面和SmartDockModel数据,通过调整图标间隔、宽度、大小及最大容量实现适配。具体通过修改padding值调节图标间距,在ResidentLayout中调整图标尺寸,并在SmartDockModel中增加图标容量判断逻辑来实现界面优化。这些
2025-07-22 10:54:23
148
原创 OpenHarmony 5.0 Settings中连接wifi状态显示不正确(未加锁的显示加锁,连接正常的显示连接感叹号)
文章摘要:本文分析了WiFi连接状态显示异常的问题,主要包括四种情况:1.界面切换导致监听失效,通过在页面显示/隐藏时正确注册/解注册回调函数解决;2.安全状态判断逻辑错误,修正了未加密WiFi的图标生成逻辑;3.连接状态变化时未及时刷新图标,在watchWifi中添加刷新机制;4.真实连接状态校验缺失,在upImageUrl中增加实际连接检测,未连接时显示警告状态。这些修改通过完善状态管理和刷新机制,解决了WiFi状态显示混乱的问题。(150字)
2025-07-04 17:44:38
128
原创 OpenHarmony 5.0 SIM卡信号格没有变化解决方案(修改成符合标准的信号变化)
针对OpenHarmony5.0设备信号格显示异常问题(仅显示满格或无信号两种状态),本文提出修改方案。通过分析信号传递流程(modem→vendorlib→hril→应用层),参照4G/5G和2G/3G网络信号强度标准(如4G/5G满格阈值为≥-97dBm),对开源部分hril中的信号阈值参数进行调整。修改涉及GSM/CDMA/WCDMA等网络类型的信号强度阈值数组,使其符合标准规范
2025-07-04 15:38:32
111
原创 OpenHarmony 5.0 解决点击导航栏切换后台按钮再切换到前台导航栏可能覆盖输入法问题,导致输入法下沉,最下面的显示不全
但是这个是有一个问题的 悬浮态的输入法其他应用监听不到当前输入法是否打开,所以会造成其他应用无法避让输入法,比如dialog无法感知输入法,这样就无法根据输入法打开状态进行避让(缩小),所以此方案不可行,或者所有应用都无需避让,则可以使用此方案。在打开输入法的情况下然后点击导航栏将当前应用切换到后台,然后在切换到前台,如果此时该应用还在获取焦点并使得输入法还存在界面中,则会出现输入法下沉,底部显示不全,被导航栏覆盖的情况。②.监听当前导航栏是否显示的状态进行输入法的移动操作。
2025-07-02 20:39:00
259
原创 OpenHarmony 5.0 web组件输入法弹出导致闪现桌面或者多次操作卡主桌面现象
【摘要】在HarmonyOS开发中,Web组件默认采用异步渲染(RenderMode.ASYNC_RENDER)会导致尺寸变化时闪现桌面背景。分析发现同步渲染会破坏功能,设置背景无效。解决方案分场景处理:1.输入法场景通过keyboardAvoidMode(RESIZE_VISUAL)固定高度,配合输入法显示/隐藏监听动态调整内容;2.其他场景直接固定组件尺寸。该方案既避免了重绘闪屏,又确保了功能正常,需根据不同机型灵活适配组件宽高。
2025-06-15 17:10:39
137
原创 OpenHarmony 5.0读取文件并写入到另一份文件(公共文件夹),并保持原先的格式以及编码类型
《保持编码格式的文件复制实现方案》 摘要:本文介绍了在HarmonyOS系统中实现文件精确复制的方法,通过字节流操作确保原始文件的编码类型和格式保持不变。方案采用NONBLOCK模式读取源文件缓冲区,使用APPEND模式写入目标文件。具体流程包括:1)以READ_ONLY|NONBLOCK方式打开文件;2)读取文件字节流到ArrayBuffer;3)在公共目录创建时间戳命名的子目录和新文件;4)将缓冲区内容写入目标文件。完整实现代码展示了文件访问助手(FileAccessHelper)的使用、缓冲区读写操作
2025-06-15 14:11:35
328
原创 OpenHarmony 5.0横竖屏界面适配
由于需要一套代码适配横屏和竖屏设备,所以有些数值的大小可能在竖屏上面适配,在横屏上面不那么适配了,所以需要横屏特殊的数值大小(例如:宽高)
2025-06-04 19:59:14
473
原创 OpenHarmony 5.0中状态栏添加以太网状态栏图标以及功能实现
本文介绍了在OpenHarmony系统中修复以太网接口问题的方案。首先,通过修复以太网卡热插拔事件接口,确保能够正确获取以太网连接状态,并注意避免WiFi和虚拟网口的干扰
2025-05-23 14:51:38
488
原创 OpenHarmony 4.1版本应用升级到5.0版本问题记录及解决方案
此处要注意可以确定globalThis.context是Context类型,不然要在前面在加上判断。然后将上述的在源码中引用的常量修改成自定义的常量。上述都是FA模式下的数据库存储相关的,将。首先在最外层加上如下代码。
2025-05-23 10:12:12
834
2
原创 OpenHarmony 5.0设置应用设置手势导航开关打开后重新关闭导航栏和设置界面重合
在OpenHarmony 5.0中从设置界面打开手势导航开关然后重新关闭,此时设置界面导航栏和设置列表主界面重合,导致设置界面无法点击最下面的关于设备。首先参考之前的如何设置导航栏文档,我们可以自己再重新设置下导航栏样式及是否显示,然后在设置是否开始手势导航有一个。属性,我们根据这个属性强制显示和隐藏导航栏。
2025-05-20 15:36:16
737
2
原创 OpenHarmony 5.0应用自定义状态栏和导航栏颜色以及是否显示,如何实现全面屏
/状态栏和导航栏背景颜色//以下两个属性从API Version8开始支持,状态栏和导航栏内容颜色try {});
2025-05-20 15:24:51
487
原创 OpenHarmony 5.0状态栏息屏状态下充电然后亮屏会出现电量跳变情况
是由于有一个策略导致在息屏状态下会关闭对底层的电量监听,然后在亮屏状态下在打开此监听,所以导致在亮屏状态下会有电池电量跳变情况。在OpenHarmony 5.0中在息屏状态下充电一段时间突然亮屏,状态栏的电量会出现跳变情况。
2025-05-18 20:50:17
350
原创 OpenHarmony SIM卡信号值整体流程分析
会调用到 ProcessCurrentCell函数,此函数其实是根据当前不同的网络制式进行不同的函数调用,如下就是我们当前的sim卡是5g的并且我们也在设置中设置的是5g的网络制式的调用流程。这里可以看出来是有vendorlib中at_support的日志打印,这里的日志可以看出来当前的信号值是-97,这块是的实现一般是厂商实现的,所以一般是闭源的,我这边的路径是在。其实从架构图上面可以看出来at_network.c应该是在vendorlib中,所以应该是闭源的,闭源代码位置和上述所说的位置一致。
2025-05-18 20:42:44
709
原创 OpenHarmony 以太网卡热插拔事件接口无效
在OpenHarmony中,开发者发现以太网热插拔事件未触发回调,原因是相关napi接口未正确设置env参数。具体表现为,使用ethernet.on('interfaceStateChange', callback)监听接口状态变化时,未收到任何回调。通过分析代码,发现问题出在ethernet_module.cpp文件中,RegisterEthernetInterface函数未调用NapiUtils::SetEnvValid(env)方法,导致环境参数未生效。解决方案是在该函数中添加NapiUtils::S
2025-05-09 20:37:30
336
原创 鸿蒙应用安装报错se try to match the APl version of thedevice and the app. The current device doesnot 解决方案
在安装应用的时候报如下错误edCore其实这个报错是当前的DevEco Studio版本过高,hap应用的版本较低导致的,但是其实生成了hap包,所以有三个方案解决。
2025-05-09 20:11:40
1010
OpenHarmony 5.1.0 full sdk公版的previewer-windows-x64-5.1.0.107-Release部分,注意此处是解压替换的路径和之前的不一致
2025-05-23
OpenHarmony 5.1.0 full sdk公版的js-windows-x64-5.1.0.107-Release部分
2025-05-23
OpenHarmony 5.1.0 full sdk公版的ets-windows-x64-5.1.0.107-Release部分
2025-05-23
OpenHarmony 5.1.0 full sdk公版的native-windows-x64-5.1.0.107-Release部分
2025-05-23
OpenHarmony 5.1.0 full sdk公版的toolchains-windows-x64-5.1.0.107-Release部分
2025-05-23
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人
RSS订阅