自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(18)
  • 收藏
  • 关注

原创 Android11系统编译与调试杂项

本文介绍了Android系统开发中的编译与调试方法。首先需导入环境变量(source build/envsetup.sh)并选择编译分支(lunch)。初次需全量编译(make),之后可单编模块:1)make 模块名;2)mmm 目录路径;3)mm(当前目录编译)。还介绍了ninja编译的注意事项,需先生成ninja文件,且修改构建文件后需重新生成。编译产物可通过模块名在out目录查找,并部署到车机对应目录。这些方法为Android系统开发提供了灵活的编译调试手段。

2025-07-30 12:35:15 351

原创 Android11日志系统

本文系统介绍了Android日志系统的架构与实现原理。主要内容包括:1) 日志系统的核心组件logd进程及其环形缓冲区结构;2) liblog模块作为NDK应用与日志系统的接口;3) Logcat命令行工具的使用方法及过滤语法;4) 详细分析了日志写入和读取的流程,包括应用层、Native层及内核日志的处理机制;5) 阐述了logd内部组件如LogListener、LogReader的工作原理。全文通过架构图、类图和流程图直观展示了Android日志系统从写入、存储到读取的完整链路,为开发者理解和使用日志功

2025-07-30 11:45:45 950

原创 Android12分屏与定制三分屏设计文档

Android12三屏分屏与甩屏功能实现 本文介绍了基于Android12系统实现三屏分屏与甩屏功能的定制开发方案。系统在原有双屏基础上新增了第三屏幕区域,重新设计了分屏滑动算法和布局变化逻辑。主要模块包括: 分屏拖放:通过DragAndDropController实现拖拽功能,新增DragLayout视图处理拖拽事件 分屏控制:SplitScreenController管理分屏布局,StageCoordinator协调三个屏幕(主屏、副屏、后排屏)的交互 界面展示:SplitLayout处理分屏边界计算,

2025-07-30 11:04:51 1294

原创 Android11分屏

Android分屏功能适配与配置指南 本文详细介绍了Android分屏功能的实现与适配方法。对于普通应用,开发者可通过设置resizeableActivity属性控制是否支持分屏,并利用最小宽度限定符适配不同分屏比例。系统提供了onTopResumedActivityChanged回调来管理多窗口状态。 系统应用适配方面,介绍了通过ActivityTaskManager启动分屏的方法,以及使用ActivityInfo判断应用是否支持分屏的技术细节。 分屏模块配置部分讲解了系统支持分屏的条件判断,包括内存要求

2025-07-29 12:33:14 1439 4

原创 goldendict: error while loading shared libraries: libQt5Svg.so.5

Ubuntu系统中,使用工具goldendictgoldendict: error while loading shared libraries: libQt5Svg.so.5: cannot open shared object file: No such file or directory原因是没有设置环境变量,解决办法:1 查找libQt5Svg.so.5路径./opt/netease/netease-cloud-music/libs/libQt5Svg.so.52 /etc/ld.so.co

2021-10-20 09:57:26 1360 1

原创 c/c++ thread 段错误

c/c++ thread 段错误最近写一个socket 相关的demo,便于理解相关属性,为了适配多个客户端, 使用了线程,但不知道怎么了只要创建线程后就莫名其妙的程序崩溃。整了大半下午,最后通过gdb 调试 查看 内核信息发现是线程传入参数的问题导致指针指向未知的内存使其程序崩溃。具体错误代码如下:void * client_run(void *arg) { int csd = *(int *)arg; printf(" client_run csd:%d\n", csd);}int ma

2021-09-14 13:03:15 940

原创 Android 音频框架记录

音频框架记录基于android P 高通平台阅读与记录, 只是整体从上层应用到底层驱动的简单介绍,主要根据audio 的open,find和write 三个流程介绍音频框架。1音频结构framework:android 的应用框架层media:主要负责媒体扫描,播放和录音,和媒体控制等类。在播放和录音这块都是基于底层audiotrack 和audiorecord来实现的。audio:主要负责音频的流输出输入,声音大小,以及音频相关的参数操作。Media jni & audio jn

2021-09-14 11:57:53 4924 1

原创 androidQ集成非SDK方案

关于android 10 集成非SDK方案如下主要是把customapi以java_sdk_library的方式集成到系统里面然后在把需要集成调用customapi架包的第三方非系统签名应用设置相应的白名单第三方开发引用架包第三方非系统签名需要以这种方式加入架包,在build.gradle添加 compileOnly files(‘libs/customapi.jar’) —此架包由客户提供,不是android原生系统编译生成出来的架包。还需要在AndroidManifest.xml 的appl

2021-07-09 10:59:04 920

原创 Android LifecycleRegistry

Android LifecycleRegistry

2021-05-14 17:17:34 669 2

原创 Activity的内部实例保存-Jetpack ViewModel

学习LifecycleRegistry源码

2021-05-13 12:18:14 323 2

原创 Activity的内部实例保存-Fragment.setRetainInstance

Fragment的setRetainInstance

2021-05-12 17:32:07 337

原创 Android LMK机制

LMK机制与linux oom kill

2021-05-12 10:24:32 2962 1

原创 Activity的内部实例保存-onRetainNonConfigurationInstance

概述在android 的activity 内部实例保存有很多方式,比较官方的有onSaveInstanceState ,Fragment的setRetainInstance或者是Jetpack的ViewModel。但今天我要讲的是onRetainNonConfigurationInstance ,首先这个是在android.os.Build.VERSION_CODES#HONEYCOMB(API 11)版本 或者更高版本已经弃用了,但不代表他没有作用,Fragment的setRetainInstanc

2021-04-25 17:06:32 1054 1

原创 Activity的内部实例保存-onSaveInstanceState

引言在android 中,acticity是一个常用的组件,但这个组件又是那么的脆弱,由于android的LMK(Low Memory Killer)机制 和ConfigurationChange(例如屏幕旋转等配置变化)都会使其当前的Activity销毁。然而在一些开发场景中需要在Activity中存储一些实例变量,并在Activity销毁了也能保持实例变量不会被销毁,等待Activity恢复后继续使用实例变量,但实际上那些实例变量同样也会随Activity销毁而销毁。(如果没有销毁只能说明内存泄漏了,

2021-04-09 17:45:50 635 1

原创 老的账户不能合并

老的账户不能合并 记录一下https://blog.youkuaiyun.com/jsmhao123

2021-01-21 13:56:20 226

原创 推荐Ubuntu使用UML工具-Drawio

最近在找一个免费的,漂亮的又能在ubuntu上使用的uml工具先上一张图网上搜索可以使用命令按照,个人没使用过sudo snap install drawiosnap官网介绍:https://snapcraft.io/drawio个人推荐直接在github直接下载最新版本的安装包drawio的github: https://github.com/jgraph/drawio-desktop...

2021-01-21 12:07:49 2222

原创 Zygote启动-代码阅读

概述zygote是android 系统的一个孵化器,可通过它分裂一个个子进程,为了理解zygote工作原理,这里做些记录,方便后续查阅和修正,加深理解。init启动zygoteinit作为linux 用户空间第一个进程,主要目的是通过解析init.rc来启动android一系列的进程服务。其中就有zygote关于解析规则可参考源码system/core/init/readme.txtzygote的启动配置service zygote /system/bin/app_process -Xzyg

2021-01-21 09:43:04 196

原创 Activity启动-代码阅读

Activity欢迎使用Markdown编辑器新的改变功能快捷键合理的创建标题,有助于目录的生成如何改变文本的样式插入链接与图片如何插入一段漂亮的代码片生成一个适合你的列表创建一个表格设定内容居中、居左、居右SmartyPants创建一个自定义列表如何创建一个注脚注释也是必不可少的KaTeX数学公式新的甘特图功能,丰富你的文章UML 图表FLowchart流程图导出与导入导出导入欢迎使用Markdown编辑器你好! 这是你第一次使用 Markdown编辑器 所展示的欢迎页。如果你想学习如何使用Markd

2021-01-20 12:36:38 361

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除