- 博客(126)
- 资源 (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
2717
原创 2. OpenHarmony源码下载
现在的 OpenHarmony 4.0 源码已经有了,在 https://gitee.com/openharmony 地址中,描述了源码获取的方式。下来先写下 windows 的获取方式,再写 ubuntu 的获取方式。获取源码前,还需要的准备工作是在 gitee 上添加 ssh 公钥来保证 PC 可以正确发起请求并下载。具体的生成 ssh 公钥方式,在 gitee 官网上按照步骤操作就可以了。
2023-11-23 15:03:19
375
原创 App启动——Application的创建
一个 app 启动时候创建一个对象。这个对象的创建时间在 frameworks 中调用创建的,创建流程可见下图,涉及的几个主要的类调用。
2023-11-07 10:40:38
67
原创 理解android AIDL
Android 接口定义语言 (AIDL) 是一种让用户抽象出 IPC 的工具。给定一个接口(在.aidl文件中指定),各种构建系统使用aidl二进制文件来构建 C++ 或 Java 绑定,以便该接口可以跨进程使用,而不管那里的运行时或位数如何。AIDL 可以在 Android 中的任何进程之间使用:平台组件之间或应用程序之间。// 与普通java文件定义一样有包名// 可以是在其他地方定义的类型服务器进程注册一个接口并为其提供调用服务,而客户端进程则调用这些接口。
2023-10-30 13:40:45
220
1
原创 Looper分析
在 Handler 机制中,Looper的作用是提供了一个消息循环 ( message loop ) 的机制,用于处理和分发消息。Looper是一个线程局部的对象,每个线程只能有一个Looper对象。它通过一个无限循环来不断地从消息队列中取出消息,并将消息分发给对应的Handler进行处理。在使用 Handler 机制时,我们可以通过调用方法来创建一个Looper对象,并通过方法来启动消息循环。在消息循环开始后,Looper会不断地从消息队列中取出消息,然后将消息分发给对应的Handler进行处理。
2023-10-19 17:29:32
566
原创 Message&MessageQueue分析
Handler机制中对象是跨线程间通信的桥梁。Message对象是架起这座桥梁的材料。在 App 进程中,通过消息队列的方式,实现在不同的线程间传递消息,进而实现跨线程的通信。
2023-10-19 11:16:10
84
原创 Handler-ThreadLocal分析
提供了线程本地变量保存的功能。线程本地变量的修改由的set()实现,读取由的get()方法实现。实例通常会被定义成static字段,这些字段与一个线程的状态关联 ( 例如,用户ID 或 业务ID )。依据 app 启动过程,主线程下的使用进行对应的分析。
2023-10-13 18:14:51
110
原创 Java高级特性-泛型通配符
在泛型中,问号叫做通配符,它表示了未知的类型。在使用上,通配符可以用来定义参数类,字段或本地变量,有时也可以作为方法返回类型。
2023-10-10 16:15:14
70
原创 Java高级特性-泛型类型推断
Java泛型类型推导是Java 7中引入的一种新特性,指 Java 编译器根据上下文推断出泛型类型参数的类型。类型推导的目的是简化泛型编程,减少代码中的冗余。在 Java 7 之前,需要在定义泛型类型或调用泛型方法时显式指定泛型类型。使用类型推导后,可以让编译器根据上下文推断出泛型类型的实际类型,从而简化代码。
2023-10-07 21:26:19
129
原创 Java高级特性-泛型继承与子类型
在Java中,泛型继承关系是通过使用类型参数来实现的。类型参数是一种在编译时指定类型的机制,它使得我们可以在编写代码时使用一般化的类型,而不必关注具体的类型。其中 T 是类型参数,extends 关键字用于指定继承关系。
2023-09-29 07:30:10
128
原创 Java高级特性-受限类型参数
你有时可能需要限制类型参数的类型。例如,我们可能希望创建一个操作数字的类,并希望确保只有数字类型可以作为类型参数。这可以通过使用受限类型参数来实现。
2023-09-25 14:01:18
108
原创 Java高级特性-泛型方法
上面示例代码中, 是类型参数,它表示一种未知的类型。在调用方法时,可以传入任何引用类型的参数,例如 Double,String 等。T 在方法签名中的返回类型和参数类型中被使用,表示输入和输出都是同一种类型。在这个例子中, 是类型参数,表示两种未知的类型。在调用方法时,可以传入任何类型的参数。// 泛型方法// 输出数组元素。
2023-09-25 10:43:44
194
原创 Java高级特性-泛型类
其中,T1, T2, …, Tn 是类型参数,它们在实例化类的时候会被具体的类型替换。看下使用了泛型定义后的Box类。注意:类型参数T不能是原始数据类型。将原始类型传给类型参数,编译器会报错// 在代码中创建Box实例,将int类型传入,代码编译时报错。found: int1 error正确的创建使用方式。
2023-09-23 15:41:27
680
原创 mmap使用测试
Linux系统调用api说明,这个系统函数在频繁读写文件是很高效。mmap在调用进程内开辟一块内存空间,将文件(或文件部分)内容映射到调用的进程的虚拟空间中。进程通过操作这块mmap开辟的虚拟内存,就相当于直接操作文件本身了,其余的细节都由kernel,cpu中的mcu负责完成。这样与传统的I/O操作相比,不仅省去了写入I/O缓存,再有I/O写出的次数,还更加稳定可靠。这篇文章主要尝试使用mmap进行频繁写文件操作尝试。
2023-09-21 12:19:17
67
原创 VMware(Ubuntu)共享文件夹设置
第一种解决方案,使用 rc-local.service 方式,但由于在新版本中,rc-local.service 默认就关闭了,因此不选择这种方式。安装完成ubuntu虚拟机后,需要建立共享文件夹来方便在Host主机和虚拟机ubuntu之间分享文件。这样创建出来的挂载共享文件夹,在虚拟机重新启动后,会消失不见。在虚拟机中,在ubuntu终端中使用指令设置挂载路径。目录中可以看到创建的共享文件夹名。项,在右侧添加共享文件夹。后是要挂载的 本地路径。文件中,新增一条指令。指令中,可能修改的是。
2023-06-06 14:59:17
1961
原创 Android基础理解线程与进程
Android中,当一个应用程序启动并且应用程序没有组件在运行时,系统会为应用程序创建一个新额单线程的进程。默认情况下,一个应用程序的所有组件都运行在同一个进程中,以及同一个main线程。在系统中已经有应用程序正在运行时,被启动的组件会在这个应用程序的同一进程中运行。然而,组件的运行也可以被设计安排在一个不同的进程中执行,并且在任一进程中创建不同的线程。
2023-05-29 15:25:19
713
原创 non-protected broadcast场景分析及解决
在两个app之间互相送消息使用,有时在运行过程中在logcat工具中会发现大片的飘红消息。要消除这些错误信息,需要在广播的和做部分的修改。
2023-05-24 17:04:26
987
原创 Android AIDL示例及高版本问题
按照blog解释,基于对私有数据越来越严格的控制,且在一般场景下,app不需要完全查询调用一个设备上的其他所有的应用。在Android 11(API Level 30)以上,App可查询的应用列表被看作是私有敏感数据,即要查询或调用其他app时,会受到系统限制,也就是Android上对应用的访问查询做了更加严格的限制。关于Android AIDL不论是官方文档,还是网络上的资料信息,都讲解的很完整,包括Binder机制。上述的AIDL定义,程序实现,调用均在Android 8上执行,可以成功调用。
2023-03-16 16:55:58
495
原创 neovim搭建cpp环境
在开发过程中习惯在DIE环境中使用vim作为编辑器,在单独的编辑器也常使用gvim图形化编辑器。其实在vim下,已经有编译完整的ctags可以安装使用。windows下ctags若才用自己下在开源代码,编译的方式会比较花时间,在自己尝试之后还是失败,对编译部分的知识还不够。文件中,保存后打开nvim,输入指令:PlugInstall即可安装。在安装tagbar之前需要先安装ctags,因为对ctags有依赖。在安装了ctags插件后,接着就可以i安装tagbar插件。结合在安装过程中的问题做一定的补充。
2023-02-13 15:24:11
1626
原创 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
4987
原创 2. Android逆向-Frida示例
由于设备要解锁bootloader需要一台专门android设备,暂且使用genymotion模拟器进行测试(保证frida-server具有root权限)。使用Frida尝试hook,做第一个示例代码。遇到这样的我问题,可以考虑使用另一个命令。代码注入到本地android项目上的。...
2022-08-28 16:42:14
652
原创 1. Android逆向-Frida环境搭建
Frida时当下比较流程的逆向工具,其本身是开源的。在Github上可以找到项目。抱着对Android逆向的好奇,来对这个Frida工具做些了解且学习。使用的OS是 Ubuntu 20.04,软件工具:JDK 13,Android Studio,python3等。......
2022-08-28 16:40:31
958
原创 Android Studio工具问题及解决
文章目录Android Studio工具问题(逐步梳理中~)找不到DataBindingMapperImplAndroid Studio工具问题(逐步梳理中~)Android Studio使用中配合Gradle构建工具,由于Gradle的版本之前差异很大,因此有是在修改project的文件过程中会遇到各种问题,这里记录了我在开发过程中逐渐梳理的遇到的问题。Project结构:Project | ---- app | ---- phase1 | ---- baseap
2022-05-10 15:36:43
564
原创 Java栈——操作数栈
文章目录Java栈——操作数栈Java栈——操作数栈先明确一个概念,Java栈(虚拟机栈)内存储的是栈帧,多个栈帧组成了一个虚拟机栈。栈帧是JVM进行方法调用使用的数据结构。栈帧内保存包含有操作数栈。操作数栈保存了方法执行过程中各指令的操作数。看下边代码:public class Test1 { public int add(int a, int b) { int c = a + b; return c; } public static
2021-11-19 14:36:59
1614
原创 Java栈——局部变量表
文章目录局部变量表Slot作用域局部变量表局部变量表存放方法的参数,以及方法内定义的局部变量。用以存储的内存以slot为单位,每个slot是一个32位(4bytes)内存空间。以下的字节码文件的方法定义部分*add()*方法局部变量的定义。例如:public class Test1 { public int add(int a, int b) { int c = a + b; return c; }}输出的字节码文件://...省略部分{
2021-11-18 16:49:16
812
原创 JVM知识整理
文章目录JVM知识整中Java文件的生命类的初始化时机堆的大小java一些指令JVM知识整中根据书籍/教程/网络材料,整理一些JVM知识。Java文件的生命一个Java文件(Class文件)的使用生命周期为:加载 -> 连接 -> 初始化 -> 使用 -> 卸载。其中 连接 阶段又可以详细为:验证 -> 准备 -> 解析 的过程。即更加详细的过程为:加载 -> 验证 -> 准备 -> 解析 -> 初始化 -> 使用 ->
2021-11-17 09:25:32
392
原创 Android Espresso(五) ——Custom Matcher
Android Espresso(五) ——Custom Matcher上一篇(Android Espresso(四)——RecyclerView)提到了使用自定义 ViewAction 来灵活应对 RecyclerView 中复杂Item测试。这一篇讲下,在某种场景下,相同文字不同颜色或者其他属性,匹配其中一个组件进行操作,使用自定义ViewMatcher。自定义Matcher在匹配一些简单的UI组件上,可以使用 BoundedMatcher 快速定义自己的 Matcher 。static cl
2021-08-20 23:29:37
213
原创 Android Espresso(四)——RecyclerView
文章目录Android Espresso(四)——RecyclerViewRecyclerViewActions APIRecyclerView已定义API测试代码RecyclerView自定义ViewActionViewActionCustomRecyclerViewAction总结Android Espresso(四)——RecyclerViewRecyclerView是ListView的一个高阶版本,可以被用以实现ListView,GridView的功能。但它本身并非一个AdapterView,因
2021-08-19 23:49:57
560
1
原创 Android Espresso(三)——ListView
文章目录Android Espresso(三)——ListView运行页面点击Item测试点击Item内ToggleButton其他操作Android Espresso(三)——ListViewListView是平时使用频率较高的一个组件,所以先来看下AdapterView的Espresso操作,以ListView为例。代码UI示例可以在android/testing-samples找到。为方便独立运行程序并测试,我将ListView相关UI代码提取到一个新project中,简化操作。运行页面
2021-07-21 16:56:16
335
1
原创 Android Espresso(二)——主要API说明
Espresso API下图是整理的Espresso API,子节点是类名,类似Espresso, ViewActions等。附上中文版的整理图。
2021-07-20 21:27:34
219
2
原创 Ubuntu上安装Dropbox
Ubuntu上安装Dropbox从 Dropbox 官网下载了 Debian 版的安装包,安装之后,打开需要联网下载程序。进度条下载进度为0,等待一段时间后会报错。需要修改配置来解决次问题。安装工具 proxychains.$ sudo apt install proxychains修改配置文件。$ sudo gedit /etc/proxychains.conf修给内容# 修改最后一行# 将最后一行修改为 socks5 127.0.0.1 1080命令行输入命令
2021-05-01 13:05:43
370
原创 Ubuntu软件安装整理
文章目录Ubuntu常用软件安装整理(更新中...)TyporaAndroid投屏程序Scrcpygoogle拼音输入法美化终端,安装zsh,一款强大的Shell工具安装shadowsocks客户端安装Chrome浏览器Oracle JDK安装NodejsVim强化方案Ubuntu常用软件安装整理(更新中…)每次安装ubuntu之后,需要查找安装常用软件,这里整理在使用ubuntu过程中使用到的程序。Typoratypora是很有名的Markdown编辑器,在ubuntu上使用snap安装。sud
2021-04-30 23:31:43
771
原创 Ubuntu 20.04 LTS上安装Edge浏览器
文章目录Ubuntu 20.04LTS上安装Edge浏览器Ubuntu 20.04LTS上安装Edge浏览器本文部分内容转载自:How to Install Microsoft Edge Browser on Ubuntu 20.04 | Linuxize,亲自安装测试并验证。Edge浏览器在各主要OS上均有正式版本发布,但是在Ubuntu上没有一个正式发布的版本。在Ubuntu上打开Download Microsoft Edge Browser | Microsoft网页上看到不支持Ubuntu系
2021-04-21 23:34:08
6631
6
原创 Win小众好用软件推荐(持续更新)
文章目录小众好用软件推荐(持续更新~~~)GifCam4n6 Hex Editor小众好用软件推荐(持续更新~~~)在开发过程中,很多时候需要除了IDE以外的一些辅助软件来查看一些中间过程的结果,或者为了方便于给其他人显示效果。这里梳理一下小众的软件,非常好用,可以用来辅助开发。有知道更多好用的小众软件的同学可以在评论区来提醒我。GifCamGifCam是用以制作gif动图的应用,是一款免费软件。在它的官方网站可以下载最新版本GifCam | BahraniApps Blog。下载后就是一个
2021-04-09 23:32:07
209
原创 vbox(ubuntu)使用整理
文章目录vbox使用整理vbox共享文件夹设置AS无法连接devicevbox使用整理主机系统windows 10,vbox版本6.1,ubuntu系统20.04 LTS。文章梳理了在使用过程中遇到的问题及对应的解决方案。vbox共享文件夹设置vbox共享文件夹设置 见这篇文章: vbox下共享文件夹设置_散人的博客-CSDN博客AS无法连接deviceubuntu内安装Android Studio,随之发生的问题是,连接上设备后,在AS内没有感觉到设备的连接。安装 dkms$ su
2021-04-07 11:38:23
651
AdvanceRestClient加载的json文件definitions.json
2013-12-05
android4.0 actionbar API
2011-12-24
把外部ndk-android工程放入系统源码内一起编译
2011-07-03
修改系统首选项(preferences)
2011-07-03
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人