自定义博客皮肤VIP专享

*博客头图:

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

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

博客底图:

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

栏目图:

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

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+

VoidHope的博客

有着原创,有着转载,有着翻译,有帮助到你的我乐意之至,有错误的请不吝指正。

  • 博客(140)
  • 资源 (12)
  • 收藏
  • 关注

原创 Battery Historian电量分析工具安装运行详解

文章目录Battery Historian安装Docker安装虚拟功能Android模拟器冲突源码编译安装下载配置问题working directory is not part of a module单步执行closure-library错误运行获取bugreport.txt渲染分析在线分析Battery HistorianBattery Historian是开源的工具,代码链接地址。工具可以用于分析Android(5.0及以上)设备——不插电前提下——运行过程中电池相关的信息和事件。工具可使应用开发

2020-07-28 22:55:28 3030

原创 Compose UI 之 Card 卡片组件

Card是用于显示带有圆角和可选阴影的矩形内容容器。它通常用于构建用户界面,并可以包含标题、文本、图像、按钮等元素,表示界面上的可交互元素,我们称它是 “卡片”。Card出上面列出的 3 中场景,还有其较多的场景可以使用卡片组件,这里不再一一列出。Compose UI 库中定义了 3 种样式的卡片组件。分别是 Filled Card,Elevated Card,Outlined Card。3 种卡片的设计准则是一致的。它们执行后的样式有所区别。默认情况下,Card。

2024-04-11 16:01:35 163

原创 Compose UI 之 FloatingActionButton 按钮

FAB 是最具突出效果的悬浮按钮,出现在屏幕右下角。通常位于屏幕右下角,具有显著的圆形形状和浮动的定位,用于呈现应用程序的主要操作或常用操作,例如开始一个新的任务、分享内容、启动一个动作等。Compose UI 库中,FAB 的样式有 4 种。下面看下不同类型的 FAB 大小效果。

2024-03-28 17:50:24 212

原创 Compose UI 之 Checkbox 复选框 & RadioButton 单选框

Checkbox和都是用于用户交互的常用组件,但它们的功能和用途有所不同。Checkbox是一个可以勾选或取消勾选的复选框,用户可以选择多个选项。它通常用于表示一系列可选项目,用户可以根据自己的需要选择任意数量的选项。在 Android Compose 的视觉呈现上,Checkbox可能具有特定的样式和动画效果,以符合 Material Design 或其他设计规范。则是一个单选按钮,它表示一组互斥的选项。在一组中,用户只能选择其中一个选项,一旦选中某个按钮,其他按钮会自动取消选中状态。

2024-03-24 20:27:11 186

原创 Compose UI 之 Segmented buttons 分段按钮

单选和多选都有其各自的优点和缺点。**单选**它的外观简洁直观,在选项较少的情况下,单选的分段式按钮占用空间小,且操作体验很好。但若选项较多(多于 5 个可选项)或复杂交互的情况下,使用单选分段式按钮就显得不够友好。**多选**它允许用户选择多个选项,适用于需要复杂筛选或配置的场景。当每个按钮被点击独立选中时,可以提供清晰的视觉反馈。与单选相比,多选的实现可能更复杂,需要处理更多的状态和交互逻辑。

2024-03-18 12:16:29 124

原创 Compose UI 之 Buttons 按钮 & IconButtons 图标按钮

5 中类型的Button在渲染的效果上不尽相同,因此对于它们的使用描述总结如下。Button即:它是一个基础组件,通过不同的参数和子组件来创建特定的视觉效果和行为。在需要使用通用按钮,并且希望通过自定义来实现特殊外观或行为时,开发者直接使用Button。:它通常用于突出显示主要的操作或强调一个重要的交互点。它的背景色通常与品牌的主题色或强调色相一致,以便吸引用户的注意力。当用户看到一个填充按钮时,他们通常会认为这是页面上的一个主要行动点。:它是一个带有描边的按钮,但没有填充色。

2024-03-14 16:40:15 190

原创 Compose UI 之 BottomAppBar 底部应用栏

是一种比较特殊的应用栏,通常显示在屏幕的底部。它为用户提供了一个便捷的方式来访问应用的主要导航和功能。位于屏幕的底部。它适用于需要在屏幕上方显示主要内容的应用,如视频播放器、地图应用或阅读器等场景。上的项可以是图标或文本。这样允许用户快速访问应用的不同部分或执行特定操作。可与 FAB 协同工作。FAB 是一个突出的悬浮按钮,通常用于执行应用中最主要的操作,如创建新内容或开始新的任务。与ScaffoldScaffold提供了一个基本的布局结构,包括顶部应用栏、底部应用栏和内容区域。通过可以将。

2024-03-11 18:12:56 156

原创 Compose UI 之 Medium&Large TopAppBar

前面文章介绍了 Small 类型的TopAppBar。下来介绍 Medium 和 Large 类型的。

2024-03-08 15:23:27 199

原创 Compose UI 之 Small TopAppBar

AppBar 主要由2类,顶部 AppBar和底部 AppBar。顶部 AppBar 包含了 4 中类型:TopAppBar下面会逐个介绍 AppBar 的类型及给出示例。

2024-03-06 12:15:17 156

原创 Compose UI 之 Scaffold 脚手架

Scaffold脚手架组件是一个核心组件,它为开发者提供了一个标准的、可定制的应用界面框架。包含了应用界面的基础元素,如状态栏、导航栏、顶部应用栏(TopAppBar)等。通过Scaffold,开发者可以轻松地为应用添加这些常见组件,并对其进行自定义。

2024-03-01 17:23:46 169

原创 Components 概览

中文意思是可组成的/可合成,也为了与原来 xml 和 View(ViewGroup)做出区分。Compose 提供了 Material Design 的实现,后者是一个用于创建数字界面的综合设计系统。上面表格中包含了大的组件类别,其中还有具体的组件类并未列举,下图是 Compose UI 库内组件类别及相关类的结构图。下表中整理出目前 Compose 组件篇里的组件类别,在过程中根据 Compose 库的更新情况跟随着更新。后续的文章将结合上述表格和结构图中的组件类进行介绍,并给出示例及运行结果。

2024-03-01 15:28:56 44

原创 Compose 介绍

通过基于 Kotlin 的声明式UI、高效的智能重组机制、响应式编程与数据流以及布局与测量的结合,Compose 为开发者提供了更高效、更灵活的UI构建方式。与传统的视图系统不同,Compose 通过声明式的方式描述 UI,这意味着我们只需要告诉系统我们想要的 UI 状态,而不需要关心如何实现渲染和更新。每个可组合函数都可以返回一个UI元素,该元素可以是基本的绘图元素(如文本、形状等),也可以是更复杂的布局容器(如行、列、网格等)。当状态发生变化时,Compose 会自动触发重组过程,更新相关的UI组件。

2024-02-29 10:42:13 229

原创 从app bindService分析binder客户端

大家都知道的是 Binder 采用的是 C/S 架构思想,由 Client 端发起调用请求,由 Server 执行请求并返回结果(没有结果)。写 App 程序进行 IPC 调用时,需要在调用端中获取服务端的Binder接口对象,再调用方法。这篇文章尝试通过方法的核心调用过程,分析Binder客户端的流程。我们在Activity中写到的调用到的是中的方法。在调用到了,最终会调用到方法。

2023-12-14 15:47:07 231

原创 vmware_ubuntu_双向拷贝问题

在 vmware workstation 中最小化安装好 ubuntu 20.04 后,开机后发现无法将 Host 机中拷贝的内容粘贴到 ubuntu 中。实践搜索到的方案:https://blog.csdn.net/luobeihai/article/details/123885756,可以直接跳转查看。执行上述命令后,直接重启 ubuntu 系统。

2023-12-04 15:26:03 210

原创 ubuntu内移除snap

snap 是 ubuntu 的集中式管理的软件商城,但在使用过程中软件更新没有很及时。ubuntu 20.04 在安装开始就有预装了 snap,所以我想把它移除掉,省出系统空间。具体参考链接:https://cloud.tencent.com/developer/article/2168090,可以直接跳转查看步骤。

2023-12-04 15:25:04 359

原创 ubuntu系统安装和开发环境搭建

等待系统安装完成,重启系统。

2023-11-30 14:39:33 225

原创 2. OpenHarmony源码下载

现在的 OpenHarmony 4.0 源码已经有了,在 https://gitee.com/openharmony 地址中,描述了源码获取的方式。下来先写下 windows 的获取方式,再写 ubuntu 的获取方式。获取源码前,还需要的准备工作是在 gitee 上添加 ssh 公钥来保证 PC 可以正确发起请求并下载。具体的生成 ssh 公钥方式,在 gitee 官网上按照步骤操作就可以了。

2023-11-23 15:03:19 690

原创 App启动——Application的创建

一个 app 启动时候创建一个对象。这个对象的创建时间在 frameworks 中调用创建的,创建流程可见下图,涉及的几个主要的类调用。

2023-11-07 10:40:38 199

原创 理解android AIDL

Android 接口定义语言 (AIDL) 是一种让用户抽象出 IPC 的工具。给定一个接口(在.aidl文件中指定),各种构建系统使用aidl二进制文件来构建 C++ 或 Java 绑定,以便该接口可以跨进程使用,而不管那里的运行时或位数如何。AIDL 可以在 Android 中的任何进程之间使用:平台组件之间或应用程序之间。// 与普通java文件定义一样有包名// 可以是在其他地方定义的类型服务器进程注册一个接口并为其提供调用服务,而客户端进程则调用这些接口。

2023-10-30 13:40:45 280 1

原创 Looper分析

在 Handler 机制中,Looper的作用是提供了一个消息循环 ( message loop ) 的机制,用于处理和分发消息。Looper是一个线程局部的对象,每个线程只能有一个Looper对象。它通过一个无限循环来不断地从消息队列中取出消息,并将消息分发给对应的Handler进行处理。在使用 Handler 机制时,我们可以通过调用方法来创建一个Looper对象,并通过方法来启动消息循环。在消息循环开始后,Looper会不断地从消息队列中取出消息,然后将消息分发给对应的Handler进行处理。

2023-10-19 17:29:32 587

原创 Message&MessageQueue分析

Handler机制中对象是跨线程间通信的桥梁。Message对象是架起这座桥梁的材料。在 App 进程中,通过消息队列的方式,实现在不同的线程间传递消息,进而实现跨线程的通信。

2023-10-19 11:16:10 114

原创 Handler-ThreadLocal分析

提供了线程本地变量保存的功能。线程本地变量的修改由的set()实现,读取由的get()方法实现。实例通常会被定义成static字段,这些字段与一个线程的状态关联 ( 例如,用户ID 或 业务ID )。依据 app 启动过程,主线程下的使用进行对应的分析。

2023-10-13 18:14:51 160

原创 Java高级特性-泛型通配符

在泛型中,问号叫做通配符,它表示了未知的类型。在使用上,通配符可以用来定义参数类,字段或本地变量,有时也可以作为方法返回类型。

2023-10-10 16:15:14 110

原创 Java高级特性-泛型类型推断

Java泛型类型推导是Java 7中引入的一种新特性,指 Java 编译器根据上下文推断出泛型类型参数的类型。类型推导的目的是简化泛型编程,减少代码中的冗余。在 Java 7 之前,需要在定义泛型类型或调用泛型方法时显式指定泛型类型。使用类型推导后,可以让编译器根据上下文推断出泛型类型的实际类型,从而简化代码。

2023-10-07 21:26:19 330

原创 Java高级特性-泛型继承与子类型

在Java中,泛型继承关系是通过使用类型参数来实现的。类型参数是一种在编译时指定类型的机制,它使得我们可以在编写代码时使用一般化的类型,而不必关注具体的类型。其中 T 是类型参数,extends 关键字用于指定继承关系。

2023-09-29 07:30:10 278

原创 Java高级特性-受限类型参数

你有时可能需要限制类型参数的类型。例如,我们可能希望创建一个操作数字的类,并希望确保只有数字类型可以作为类型参数。这可以通过使用受限类型参数来实现。

2023-09-25 14:01:18 216

原创 Java高级特性-泛型方法

上面示例代码中, 是类型参数,它表示一种未知的类型。在调用方法时,可以传入任何引用类型的参数,例如 Double,String 等。T 在方法签名中的返回类型和参数类型中被使用,表示输入和输出都是同一种类型。在这个例子中, 是类型参数,表示两种未知的类型。在调用方法时,可以传入任何类型的参数。// 泛型方法// 输出数组元素。

2023-09-25 10:43:44 228

原创 Java高级特性-泛型类

其中,T1, T2, …, Tn 是类型参数,它们在实例化类的时候会被具体的类型替换。看下使用了泛型定义后的Box类。注意:类型参数T不能是原始数据类型。将原始类型传给类型参数,编译器会报错// 在代码中创建Box实例,将int类型传入,代码编译时报错。found: int1 error正确的创建使用方式。

2023-09-23 15:41:27 695

原创 mmap使用测试

Linux系统调用api说明,这个系统函数在频繁读写文件是很高效。mmap在调用进程内开辟一块内存空间,将文件(或文件部分)内容映射到调用的进程的虚拟空间中。进程通过操作这块mmap开辟的虚拟内存,就相当于直接操作文件本身了,其余的细节都由kernel,cpu中的mcu负责完成。这样与传统的I/O操作相比,不仅省去了写入I/O缓存,再有I/O写出的次数,还更加稳定可靠。这篇文章主要尝试使用mmap进行频繁写文件操作尝试。

2023-09-21 12:19:17 101

原创 VMware(Ubuntu)共享文件夹设置

第一种解决方案,使用 rc-local.service 方式,但由于在新版本中,rc-local.service 默认就关闭了,因此不选择这种方式。安装完成ubuntu虚拟机后,需要建立共享文件夹来方便在Host主机和虚拟机ubuntu之间分享文件。这样创建出来的挂载共享文件夹,在虚拟机重新启动后,会消失不见。在虚拟机中,在ubuntu终端中使用指令设置挂载路径。目录中可以看到创建的共享文件夹名。项,在右侧添加共享文件夹。后是要挂载的 本地路径。文件中,新增一条指令。指令中,可能修改的是。

2023-06-06 14:59:17 3750

原创 Android基础理解线程与进程

Android中,当一个应用程序启动并且应用程序没有组件在运行时,系统会为应用程序创建一个新额单线程的进程。默认情况下,一个应用程序的所有组件都运行在同一个进程中,以及同一个main线程。在系统中已经有应用程序正在运行时,被启动的组件会在这个应用程序的同一进程中运行。然而,组件的运行也可以被设计安排在一个不同的进程中执行,并且在任一进程中创建不同的线程。

2023-05-29 15:25:19 783

原创 non-protected broadcast场景分析及解决

在两个app之间互相送消息使用,有时在运行过程中在logcat工具中会发现大片的飘红消息。要消除这些错误信息,需要在广播的和做部分的修改。

2023-05-24 17:04:26 1145

原创 Android AIDL示例及高版本问题

按照blog解释,基于对私有数据越来越严格的控制,且在一般场景下,app不需要完全查询调用一个设备上的其他所有的应用。在Android 11(API Level 30)以上,App可查询的应用列表被看作是私有敏感数据,即要查询或调用其他app时,会受到系统限制,也就是Android上对应用的访问查询做了更加严格的限制。关于Android AIDL不论是官方文档,还是网络上的资料信息,都讲解的很完整,包括Binder机制。上述的AIDL定义,程序实现,调用均在Android 8上执行,可以成功调用。

2023-03-16 16:55:58 654

原创 Android Battery信息

检测Battery相关数据

2023-03-13 14:12:48 438

原创 neovim搭建cpp环境

在开发过程中习惯在DIE环境中使用vim作为编辑器,在单独的编辑器也常使用gvim图形化编辑器。其实在vim下,已经有编译完整的ctags可以安装使用。windows下ctags若才用自己下在开源代码,编译的方式会比较花时间,在自己尝试之后还是失败,对编译部分的知识还不够。文件中,保存后打开nvim,输入指令:PlugInstall即可安装。在安装tagbar之前需要先安装ctags,因为对ctags有依赖。在安装了ctags插件后,接着就可以i安装tagbar插件。结合在安装过程中的问题做一定的补充。

2023-02-13 15:24:11 2096

原创 3. Android逆向-基于Frida的工具Objection

在Windows上直接尝试了安装最新版本的Frida及Objection,遇到了问题,安装的坑,Objection安装版本需要配合Frida版本,不能在不指定版本的情况下直接安装Frida,因为默认会安装Frida最新版本,这样在运行objection会提示错误。在开始熟悉Frida时,接触的示例是需要frida-server在一个root过的os环境中运行,便于读取/访问所有需要的数据或其他app。一般开发时AS会完成对AAPT工具的使用。使用的frida版本不会是最新的,需要注意版本的一致。...

2022-08-28 16:46:13 5976

原创 2. Android逆向-Frida示例

由于设备要解锁bootloader需要一台专门android设备,暂且使用genymotion模拟器进行测试(保证frida-server具有root权限)。使用Frida尝试hook,做第一个示例代码。遇到这样的我问题,可以考虑使用另一个命令。代码注入到本地android项目上的。...

2022-08-28 16:42:14 920

原创 1. Android逆向-Frida环境搭建

Frida时当下比较流程的逆向工具,其本身是开源的。在Github上可以找到项目。抱着对Android逆向的好奇,来对这个Frida工具做些了解且学习。使用的OS是 Ubuntu 20.04,软件工具:JDK 13,Android Studio,python3等。......

2022-08-28 16:40:31 1056

原创 2. HarmonyOS工程结构

HarmonyOS工程结构

2022-08-12 23:24:16 674

原创 1. 创建第一个harmonyos工程

创建第一个ohosc工程

2022-08-12 12:08:36 2851

AdvanceRestClient加载的json文件definitions.json

在进行web服务端开发,需要进行数据获取测试,需要客户端测试工具,在chrome插件工具中AdvanceRestClient是一款很有效率的测试工具。但在国内,启用该工具时,会走动下载配置文件definitions.json文件,但国内的种种原因导致下载不到的。这里提供的这个文件配置进去之后可以正常使用。

2013-12-05

android4.0 actionbar API

ActionBar取代了传统的标题栏(title),其在activity位置就是title原有的位置,在activity的顶部。ActionBar上默认情况下包括了应用(app)的logo,logo的位置在ActionBar的左侧,紧挨在logo右侧的是activity的标题(title)。在ActionBar的右侧,可以是在选项菜单(options menu)中任意一个菜单项。ActionBar提供若干有用的特性,其中包括了: ① 作为“action选项”,在ActionBar上直接显示“选项菜单”(OptionsMenu)—— 为用户进行某项操作提供直接的访问; 作为“action项”没有出现在ActionBar上得菜单项会被置于“更多...”菜单项 中,在ActionBar上,“更多...”菜单项是以下拉形式实现的。 ② 为在多个fragments之间切换提供标签(tabs)功能; ③ 为导航提供下拉列表; ④ 在“action项”位置提供交互式action组件,例如搜索框。

2011-12-24

把外部ndk-android工程放入系统源码内一起编译

做基于android系统的ndk工程开发时,在开发板上需要经常烧制测试,需要将外部的ndk工程中上层实现(java)和下层实现(c/c++)进行分离,放入到系统之中进行一起编译

2011-07-03

修改系统首选项(preferences)

在基于源码开发,需要在系统setting中进行添加内容时,需要对内部文件进行修改,文档可以就对添加系统setting首页面中设置项进行了一定的操作

2011-07-03

android源码跟踪单步调试

在基于android源码开发过程中,少不了对源码进行跟踪,单步调试,确定需要修改的地方,此文档就可以有帮助

2011-07-03

android软键盘上移动焦点

android自带的输入法,在软键盘上实现焦点移动,支持上下左右按键,并支持回车输入,文档以LatinIME为例

2011-04-26

android 开发杂谈 pdf

android开发杂谈,介绍android系统架构,系统启动初始化过程等等

2011-03-16

android-ndk初学,一个简单实例实现

android ndk可以是程序员方便的调用c/c++书写的代码,完成高效的运行

2011-03-04

数值分析PPT电子教案(内容详细)

数值分析PPT电子教案(内容详细),信息技术专业等计算机专业使用

2009-05-31

软件工程PPT教案(全)

包含了软件工程教程的全部章节内容,幻灯片内容很详尽

2009-02-26

计算机网络的硬件软件配置手册

路由器配置 系统配置和管理 ADSL配置 接口配置 SNTP配置 大部分的网络硬件软件配置都有

2009-02-26

空空如也

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

TA关注的人

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