自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

江上清风山间明月的博客

编程十多年,之前的学习和工作没有积累和输出,改变下,学习和总结的时候顺手写点总结

  • 博客(321)
  • 收藏
  • 关注

原创 Flutter中Column中使用ListView时溢出问题的解决方法

Flutter是一个由Google开发的开源UI工具包,它可以让您在不同平台上创建高质量、美观的应用程序,而无需编写大量平台特定的代码。从基础知识到高级技巧,从UI设计到性能优化,欢饮关注一起讨论学习,共同进入Flutter的精彩世界!默认会尝试根据其子组件的高度总和来确定自身高度(即“包裹内容”)。时,它会尝试根据子组件的总高度收缩自身大小(类似“包裹内容”)。时,两者的布局逻辑会产生冲突。但实际布局中,父组件(如。通过这种方式,既解决了布局冲突,又确保了。,否则会抛出布局错误(如。

2025-11-12 14:19:40 616

原创 Android的user版本详解

✅核心安全机制锁定的 BootloaderSELinux 强制模式系统分区只读默认无 ADB Root已验证启动❌破解难度极高利用未修补的 0-day 漏洞复杂的漏洞利用链接受数据被清除的官方解锁结论:对于运行最新安全补丁的 user 版本设备,普通攻击者几乎不可能破解。及时的系统更新(修补已知漏洞)不随意解锁 Bootloader不从不可信来源安装应用这就是为什么主流手机厂商都使用 user 版本作为最终发行版本的原因——它在安全性和功能性之间取得了最佳平衡。结束语。

2025-11-12 14:10:12 754

原创 Java面试题

Flutter是一个由Google开发的开源UI工具包,它可以让您在不同平台上创建高质量、美观的应用程序,而无需编写大量平台特定的代码。我将学习和深入研究Flutter的方方面面。从基础知识到高级技巧,从UI设计到性能优化,欢饮关注一起讨论学习,共同进入Flutter的精彩世界!DI 是 IoC 思想的实现方式。

2025-11-11 10:42:54 1047

原创 Android 系统中进程和线程的区别

在 Android 中,进程是一个独立的执行环境,拥有自己独立的内存空间和系统资源。每个应用默认运行在一个独立的进程中。// 在 AndroidManifest.xml 中声明组件运行在独立进程<activity-- 私有进程 --><service-- 全局进程 -->线程是进程内的执行单元,是 CPU 调度的基本单位。一个进程可以包含多个线程,所有线程共享进程的资源。// 在主线程(UI线程)中更新UI");// 创建工作线程执行耗时任务@Override。

2025-11-11 10:40:46 468

原创 如何让APK获得系统权限

方法所需条件权限等级稳定性/持久性适用场景一、平台签名系统平台密钥完整的 SYSTEM 权限高,永久OEM/系统厂商预装应用二、放入系统分区Root 权限有限的 PRIVILEGED 权限高,永久(除非刷机)已 Root 设备上的系统级应用三、pm grantUSB 调试特定的 SIGNATURE 权限低,重启后失效开发、测试、自动化四、编译进系统AOSP 源码完整的 SYSTEM 权限最高,永久OEM/系统厂商,AOSP 定制。

2025-11-10 16:27:49 612

原创 Android 系统超级实用的分析调试命令

Flutter是一个由Google开发的开源UI工具包,它可以让您在不同平台上创建高质量、美观的应用程序,而无需编写大量平台特定的代码。我将学习和深入研究Flutter的方方面面。从基础知识到高级技巧,从UI设计到性能优化,欢饮关注一起讨论学习,共同进入Flutter的精彩世界!这些命令覆盖了 Android 系统调试的各个方面,从基础信息获取到深度性能分析。根据具体的使用场景,可以灵活组合这些命令来满足不同的调试需求。Android 系统提供了大量强大的分析调试命令,涵盖了从应用层到内核层的各个层面。

2025-11-10 14:29:17 864

原创 Android 调试桥工具包中最强大、最核心的部分ADB Shell详解

adb shell是一个命令行接口,它为你提供了访问 Android 设备内部 Linux shell 的权限。你可以把它想象成通过 USB 线在电脑上打开的、一个直接操作手机的“终端”或“命令提示符”。

2025-11-07 15:10:51 998

原创 在不安装APK的情况下获取版本号

无需安装APK即可获取其版本信息的方法总结:1)推荐使用aapt工具直接查询版本号和名称;2)解压APK后通过apktool解析二进制格式的AndroidManifest.xml;3)编写Python脚本调用aapt命令自动提取版本数据;4)使用Android Studio或在线工具等GUI方式查看。aapt作为Android SDK组件是最简便的方案,能快速输出versionCode和versionName而无需完全解压文件,文中提供了各方法的详细命令和代码示例。

2025-11-06 16:28:48 377

原创 LOCAL_STATIC_ANDROID_LIBRARIES的作用

当前模块需要链接哪些静态的 Android 库模块。这些库会在编译时被静态链接到最终的 APK 中。

2025-10-29 10:50:10 331

原创 蓝牙协议中的a2dp详解

A2DP是蓝牙技术中用于传输高品质立体声音频的基石协议。它通过使用不同的音频编解码器(从基础的SBC到高端的LDAC)来平衡音质、延迟和兼容性。理解A2DP及其编解码器,可以帮助你更好地选择蓝牙音频设备,并理解其背后的工作原理和性能表现。结束语Flutter是一个由Google开发的开源UI工具包,它可以让您在不同平台上创建高质量、美观的应用程序,而无需编写大量平台特定的代码。我将学习和深入研究Flutter的方方面面。

2025-10-27 13:57:11 881

原创 Android面试题

Flutter是一个由Google开发的开源UI工具包,它可以让您在不同平台上创建高质量、美观的应用程序,而无需编写大量平台特定的代码。我将学习和深入研究Flutter的方方面面。从基础知识到高级技巧,从UI设计到性能优化,欢饮关注一起讨论学习,共同进入Flutter的精彩世界!: View 观察 ViewModel 中的 LiveData,当 Model 层的数据变化时,ViewModel 更新 LiveData,LiveData 自动通知处于活跃状态的 View 更新 UI。库是检测内存泄漏的利器。

2025-10-27 08:16:16 1007

原创 Kotlin语言的面试题集

题目1:Kotlin 中的 和 有什么区别?什么是不可变性,为什么它很重要?答案:不可变性 指的是一个变量引用的对象本身不能被修改。在 Kotlin 中, 保证了引用不可变,但不保证其指向的对象内部状态不可变。如果 指向一个可变对象(如 ),你仍然可以修改这个列表的内容。重要性:示例:题目2:请解释 Kotlin 中的空安全机制。, , 操作符分别代表什么?答案:Kotlin 通过类型系统在编译期消除 。可空类型与非空类型:安全调用操作符 :Elvis 操作符 :非空断言操作符 :题目3:请说

2025-10-23 10:38:36 758

原创 Dart和Kotlin的对比

Flutter是一个由Google开发的开源UI工具包,它可以让您在不同平台上创建高质量、美观的应用程序,而无需编写大量平台特定的代码。是的,在**表面语法和现代语言特性(空安全、类型推断、Lambda、扩展方法)**上,Dart 和 Kotlin 非常相似,学习其中一门再学另一门会感觉很多概念相通。Dart(主要用于 Flutter)和 Kotlin(主要用于 Android 原生,但也支持多平台)它们都是现代、简洁、安全的语言,并且目标平台有重叠(移动开发)。选择哪一个,最终取决于你的项目是追求。

2025-10-21 10:21:58 502

原创 Android性能分析工具套件Profiler详解

Android Profiler 取代了旧的 Android Monitor 工具,它提供了一个实时、可视化的界面,让你能够监控应用的 CPU、内存、网络和电池(能量)资源使用情况。你可以基于这些数据来定位性能瓶颈,如卡顿、内存泄漏、耗电过快和网络使用不当等问题。位置:在 Android Studio 中,点击顶部菜单栏的,或点击工具栏上的Profiler图标即可打开。

2025-10-21 10:20:04 1178

原创 rsync命令详解

rsync是 Linux 系统管理员和开发者的瑞士军刀,是数据同步和备份任务的终极利器。掌握它的核心概念(增量传输、归档模式、路径斜杠)和常用选项(-a-v-z-n--delete--exclude),就能应对绝大多数文件同步场景。操作前先-n模拟,这是一个好习惯!结束语Flutter是一个由Google开发的开源UI工具包,它可以让您在不同平台上创建高质量、美观的应用程序,而无需编写大量平台特定的代码。我将学习和深入研究Flutter的方方面面。

2025-10-20 11:15:32 777

原创 大名鼎鼎的内存泄漏检测库LeakCanary 详解

LeakCanary是一个专门用于自动化检测和定位 Android 应用中内存泄漏的开源库。它的核心理念是:“不要浪费时间在手动寻找内存泄漏上,让 LeakCanary 自动为你完成这项繁重的工作。工作原理简述它自动监测被销毁的 Android 组件(如 Activity 和 Fragment)。当这些组件本应被垃圾回收(GC)时,LeakCanary 会触发 GC 并检查它们是否仍然在内存中。如果仍然存在,则确认发生了内存泄漏,并自动捕获堆转储(Heap Dump)。

2025-10-20 09:32:12 725

原创 flutter 编译报错java.util.zip.ZipException: zip END header not found

Flutter是一个由Google开发的开源UI工具包,它可以让您在不同平台上创建高质量、美观的应用程序,而无需编写大量平台特定的代码。从基础知识到高级技巧,从UI设计到性能优化,欢饮关注一起讨论学习,共同进入Flutter的精彩世界!这个错误表明 Gradle 的 ZIP 文件损坏或不完整。如果问题仍然存在,请尝试创建一个新的 Flutter 项目来测试是否是当前项目特有的问题。某些防病毒软件可能会干扰 Gradle 的文件操作,暂时禁用它们可能有助于解决问题。如果问题持续,可以尝试在。

2025-09-23 10:25:34 1270

原创 DTS、DTSO、DTBO三种文件的关系及编译流程

文件类型全称作用编译目标DTS描述完整的硬件设备树(如主板、SoC的固定配置),是基础设备树的源码文件。编译为DTB文件DTSO描述对基础设备树的动态修改或扩展(如外设配置),是覆盖层的源码文件。编译为DTBO文件DTBODTSO编译后的二进制覆盖文件,用于在运行时动态叠加到基础DTB上。无需编译,直接使用关系类型说明DTS → DTB基础设备树源码(DTS)编译为二进制(DTB),描述系统固定硬件配置。覆盖层源码(DTSO)编译为二进制覆盖(DTBO),描述动态修改或扩展逻辑。

2025-09-19 11:48:55 854

原创 Linux 系统中一个用于内核诊断的“黑匣子”工具dmesg命令

dmesg是系统管理员和开发者诊断底层系统问题、尤其是硬件和驱动相关问题的第一道、也是最重要的一道工具。核心使用心法遇到硬件问题,首先跑。使用dmesg -T或dmesg -wT来获得更直观的实时信息。结合grep过滤出你关心的设备(如usbsdaeth0)或错误级别(errorfail在测试前用清空缓冲区,可以获得更干净的日志。它提供的是一种自底向上的视角,让你能够直接聆听内核的“对话”,是理解和解决复杂系统问题的强大助力。结束语。

2025-09-19 11:47:02 935

原创 DTSO文件预处理

可以包含.h文件:但需通过预处理器处理,且文件内容必须为设备树语法。编译报错原因:未启用预处理器或头文件路径/内容错误。正确流程:分步预处理和编译,并确保头文件符合规范。结束语Flutter是一个由Google开发的开源UI工具包,它可以让您在不同平台上创建高质量、美观的应用程序,而无需编写大量平台特定的代码。我将学习和深入研究Flutter的方方面面。从基础知识到高级技巧,从UI设计到性能优化,欢饮关注一起讨论学习,共同进入Flutter的精彩世界!

2025-09-17 09:44:16 754

原创 Linux非常专一且强大的线程管理工具pstree

pstree是一个专注于可视化进程关系的专项工具。它不像htop那样功能全面,也不像ps清晰地展示进程的派生层次。核心使用心法当你想了解进程从哪里来和谁有关时,就使用pstree。pstree -pa是最常用的组合,提供了进程名、PID和命令行参数的全景图。结合grep使用可以快速定位你关心的特定进程及其上下文。它将系统中看似孤立的进程连接成一棵有逻辑的树,极大地增强了你对系统运行状态的理解深度。结束语。

2025-09-17 09:43:13 792

原创 DTSO文件语法详解

Flutter是一个由Google开发的开源UI工具包,它可以让您在不同平台上创建高质量、美观的应用程序,而无需编写大量平台特定的代码。我将学习和深入研究Flutter的方方面面。从基础知识到高级技巧,从UI设计到性能优化,欢饮关注一起讨论学习,共同进入Flutter的精彩世界!DTSO(Device Tree Source Overlay)是设备树覆盖层的源代码文件,用于在基础设备树(DTS)上动态修改或扩展硬件配置。块定义覆盖逻辑,每个片段对应一个目标节点。DTSO通过 fragment@X。

2025-09-16 14:55:58 667

原创 Linux上最牛最好用的线程管理工具htop详解

这里以条形图、数字和文本的形式实时显示系统整体资源使用情况。CPU 使用率条:每个逻辑CPU核心一条。颜色含义:蓝色:低优先级进程(nice > 0)使用的CPU时间。绿色:普通用户进程使用的CPU时间。红色:系统内核(kernel)进程使用的CPU时间。青色:虚拟化 steal 时间(被宿主机占用的时间)。内存 (Mem) 和交换空间 (Swp) 使用条:颜色含义:绿色:已使用的内存。蓝色:缓冲区(buffers)使用的内存。黄色/橙色:缓存(cache)使用的内存。交换空间条。

2025-09-16 14:54:26 1548

原创 开发一个Agent的流程和需要用到的技术

Flutter是一个由Google开发的开源UI工具包,它可以让您在不同平台上创建高质量、美观的应用程序,而无需编写大量平台特定的代码。我将学习和深入研究Flutter的方方面面。从基础知识到高级技巧,从UI设计到性能优化,欢饮关注一起讨论学习,共同进入Flutter的精彩世界!开发一个智能Agent(如聊天机器人、自动化程序或决策系统)需要结合软件工程、人工智能和领域知识。建议从简单场景(如规则型聊天机器人)入手,再逐步引入AI模型增强能力。

2025-09-11 10:42:18 1271

原创 kill、pkill、killall命令详解

特性killpkillkillall识别方式PID(精确打击)模式匹配(进程名、命令行、用户等)进程名(模式匹配)主要用途当你已知确切的 PID 时当你只知道进程名或其他属性时同上,但功能和可移植性稍逊于pkill精确度非常高中等(需谨慎使用模式)中等(需谨慎使用模式)便利度低(需先查找 PID)高高。

2025-09-11 10:40:47 914

原创 5GHz Wi-Fi频段的信道划分

Flutter是一个由Google开发的开源UI工具包,它可以让您在不同平台上创建高质量、美观的应用程序,而无需编写大量平台特定的代码。从基础知识到高级技巧,从UI设计到性能优化,欢饮关注一起讨论学习,共同进入Flutter的精彩世界!信道52-64、100-144需检测雷达信号,避免干扰气象雷达等设备,普通路由器可能不支持。建议根据设备支持和所在地区的法规选择信道,以优化网络性能。中心频率(MHz)= 5000 + 5 × 信道号。(例如:信道36 → 5000 + 5×36 =

2025-09-10 10:46:28 1729

原创 Linux常用实用命令

这个列表只是冰山一角,但掌握了这些命令,你的 Linux 功力会提升数个等级。最佳学习路径先了解每个命令是干什么的。记住最常用的一两个参数和组合(如ps auxss -tuln遇到实际问题时,主动思考“哪个命令可以帮我解决?,然后查阅man page)或--help。尝试将命令组合使用(管道),例如。Linux 命令行世界的魅力在于,这些工具就像乐高积木,通过组合可以构建出无限可能的功能。结束语。

2025-09-10 10:45:11 961

原创 白平衡详解

白平衡的核心目标是:让图像中的“白色”在任何光源下都看起来是真正的“白色”,并以此为基础,让所有其他颜色都得到准确还原。这听起来简单,但实现起来需要一套复杂的色彩科学。白平衡是色彩准确性的基石。它不是一个简单的“冷暖”偏好滑块,而是一个科学化的校准工具,旨在消除光源色温带来的色偏,确保显示设备能够忠实地还原内容本来的面貌。对于普通用户,选择电视的电影/Filmmaker模式通常是最佳选择,因为该模式通常已按D65标准进行过预校准,并关闭了所有会扭曲画面的后期处理。

2025-09-09 14:00:34 1110

原创 file命令详解

file是一个小巧但极其有用的命令行工具,是每位 Linux 用户和管理员都应该掌握的基本技能。它就像是一个文件的"X光机",能快速、准确地揭示文件的真实属性,是系统维护、安全审计和日常问题排查的得力助手。结束语Flutter是一个由Google开发的开源UI工具包,它可以让您在不同平台上创建高质量、美观的应用程序,而无需编写大量平台特定的代码。我将学习和深入研究Flutter的方方面面。从基础知识到高级技巧,从UI设计到性能优化,欢饮关注一起讨论学习,共同进入Flutter的精彩世界!

2025-09-09 13:59:08 796

原创 Flutter开发There are multiple heroes that share the same tag within a subtree报错

Flutter是一个由Google开发的开源UI工具包,它可以让您在不同平台上创建高质量、美观的应用程序,而无需编写大量平台特定的代码。从基础知识到高级技巧,从UI设计到性能优化,欢饮关注一起讨论学习,共同进入Flutter的精彩世界!,Flutter 无法确定目标页面的 Hero 目标,导致冲突或动画异常。(FAB)且希望实现 Hero 动画时,需要为每个 FAB 设置唯一的。,可以避免导航时的 Hero 冲突,同时保持 UI 的连贯性和用户体验。如果多个页面的 FAB 使用相同的。

2025-09-05 14:05:33 850

原创 Android的DTBO详解

设备树(Device Tree)。设备树(Device Tree): 是一种描述硬件配置的数据结构。它以一种与平台无关的格式,详细说明了处理器类型、内存大小、总线、外设(如I2C、SPI设备)、中断线、GPIO引脚等硬件信息。它的出现是为了解决内核需要为成千上万种不同的硬件板卡提供支持的冗余代码问题。简单说,它就是一个“硬件配置清单”。设备树二进制文件(DTB, Device Tree Blob): 设备树源文件(.dts)被编译后生成的二进制文件。

2025-09-05 14:03:43 1251

原创 Flutter AlwaysScrollableScrollPhysics详解

在 Flutter 中,是一个控制滚动行为的物理模拟类,它的核心作用是强制让滚动视图(如ListViewGridView等)始终允许用户滚动,即使内容不足以填满可视区域。核心价值:解决内容不足时滚动视图不可操作的痛点。适用场景:动态内容、强制滚动交互、跨平台弹性效果。组合技巧:通过applyTo方法与其他物理模拟结合,实现平台风格化滚动。性能优化:合理使用shrinkWrap和懒加载,避免不必要的布局计算。通过合理使用,可以显著提升 Flutter 应用的滚动交互体验,尤其是在内容动态变化的场景中。

2025-08-19 11:26:39 1155

原创 CalMAN简介

Flutter是一个由Google开发的开源UI工具包,它可以让您在不同平台上创建高质量、美观的应用程序,而无需编写大量平台特定的代码。CalMAN 是显示设备校准领域的“行业标准”,通过科学化测量与算法优化,释放电视、显示器、投影仪的终极画质潜力。对色彩有极致要求的用户(如电影制作、游戏开发、专业摄影),投资 CalMAN 校准能显著提升视觉体验的准确性。,确保显示效果符合电影工业、广播电视、游戏制作等领域的严格标准(如DCI-P3、Rec.709、BT.2020、HDR10等)。

2025-08-19 11:22:47 1479

原创 Downmix功能简介

是让多声道音轨能在电视两个喇叭上出声的必要转换过程。试图在双喇叭上模拟环绕感,可能空间感更好,但人声清晰度可能下降,效果不稳定(依赖电视算法和喇叭)。提供标准、直接的立体声混音,优先保证人声清晰度和稳定性,兼容性最好,是最推荐的通用选择。优先用Stereo模式保证清晰度;对特定电影/内容可切换到Surround试听效果,若感觉人声变模糊或声音不自然,立刻切回 Stereo。**有外接音响时务必关闭电视的 Downmix 或设为透传。结束语。

2025-08-07 10:11:40 476

原创 Flutter的空安全操作符 (?.) 和 空值合并操作符 (??)

createdAt??now首先通过?安全地访问。如果createdAt为null或为null,则返回默认值now。否则,返回createdAt的实际值。这种写法充分利用了 Dart 的空安全特性,既简洁又高效,非常适合处理可能为null的场景。结束语Flutter是一个由Google开发的开源UI工具包,它可以让您在不同平台上创建高质量、美观的应用程序,而无需编写大量平台特定的代码。我将学习和深入研究Flutter的方方面面。

2025-07-30 09:00:25 703

原创 Android的SELinux详细介绍

Android SELinux是一种基于Linux内核的强制访问控制(MAC)系统,通过精细的策略规则增强系统安全性。它采用标签化机制,为所有资源分配安全上下文(user:role:type:level),并基于类型强制(TE)规则控制访问权限。Android从4.3版本引入,5.0后默认启用强制模式。其策略通过.te文件定义,遵循最小权限原则,实现进程隔离和Binder IPC控制。系统采用分层策略设计(平台+厂商),并通过neverallow规则防止策略放宽。调试时可通过日志分析拒绝事件,使用audit

2025-07-30 08:28:48 1220

原创 lpmake工具详解

Flutter是一个由Google开发的开源UI工具包,它可以让您在不同平台上创建高质量、美观的应用程序,而无需编写大量平台特定的代码。从基础知识到高级技巧,从UI设计到性能优化,欢饮关注一起讨论学习,共同进入Flutter的精彩世界!是 Android 动态分区(Dynamic Partitions)工具链中的一个关键组件,用于创建。等),并支持动态调整分区大小(无需重新刷写整个分区表)。是 Android 动态分区的核心工具,用于构建。,支持灵活的分区管理和 A/B 更新。

2025-07-29 09:14:50 887

原创 什么叫动态分区,它是如何实现的?

动态分区(Dynamic Partitions)是 Android 10 引入的分区管理机制,旨在解决传统固定分区(如 system、vendor)在系统更新时面临的 空间浪费 和 灵活性不足 的问题。它的核心思想是:将多个物理分区合并为一个“超级分区”(super partition),并在其中动态分配逻辑分区的空间

2025-07-29 09:13:10 1599

原创 mkuserimg_mke2fs工具详解

Flutter是一个由Google开发的开源UI工具包,它可以让您在不同平台上创建高质量、美观的应用程序,而无需编写大量平台特定的代码。从基础知识到高级技巧,从UI设计到性能优化,欢饮关注一起讨论学习,共同进入Flutter的精彩世界!,它提供了更灵活的参数配置,并支持动态分区(Dynamic Partitions)等现代 Android 特性。是 Android 开发中更先进的 ext4 镜像打包工具,支持动态分区、SELinux 和精细权限控制。的一部分,通常用于生成。

2025-07-28 08:18:42 1181

原创 Flutter的空安全操作符 (?.) 和 空值合并操作符 (??)和空感知访问操作符(!.)

createdAt??now首先通过?安全地访问。如果createdAt为null或为null,则返回默认值now。否则,返回createdAt的实际值。这种写法充分利用了 Dart 的空安全特性,既简洁又高效,非常适合处理可能为null的场景。写法含义obj.prop直接访问属性,如果 obj 是 null,会抛异常obj?.prop如果 obj 为 null,返回 null;否则返回 propobj!.prop强制解包,如果 obj 为 null,则运行时报错。

2025-07-22 10:29:30 949

Flutter实现APP导航栏的几种方式

Flutter实现APP导航栏的几种方式。使用TabBar、TabBarView、TabController、BottomNavigationBar来实现APP的导航栏

2023-05-17

空空如也

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

TA关注的人

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