StarUML 破解方法

操作环境

Windows 系统、StartUML 4.1.6。

操作步骤

  1. 首先安装 nodejs;
  2. 使用 npm 安装 asar,用于解包和打包 asar 文件;
1
npm install -g asar
阅读更多

Android Filter 分析

简介

Filter 是 Android 提供的用于搜索或过滤数据的工具类,它在 android.widget 包中,从包名上看,和控件相关,适用于处理界面相关的搜索场景。

通常可与 SearchView 控件组合使用,可为用户提供便捷的列表项搜索功能。

用法

考虑在一个文本类型的列表视图上进行搜索,例如联系人列表,为了展示数据通常使用一个 ListView 或 RecyclerView 和实现它们对应的适配器,那么适配器很适合成为一个 Filterable 子类型,支持对其内部的字符串列表数据进行搜索。

阅读更多

支持触摸拖动的 TouchDelegate

需求

最近有一个小需求,就是在界面上有一个预览图片的区域,这个区域用户可以双击缩放图片、双指自由缩放图片、触摸图片进行移动,对图片的局部区域进行查看,像这样:

这个功能可以使用 github 中的开源库 PhotoView 实现,地址:https://github.com/Baseflow/PhotoView

同时另一个条件是当前这个图像预览区域较小,不像上图这样预览区域比较大,大概是 4 分之 1 左右,如果直接使用 PhotoView 设置图片,那么用户体验可能较差,因为图像展示区域较小,难以进行自由的图像移动预览操作,所以这个需求就是:扩大触摸区域,让用户在图像显示区域的外侧也可以自由的对图像进行移动预览操作。如下,白色区域是 PhotoView 的父控件的区域,用户触摸和双击这里时,可对图像进行预览操作:

阅读更多

GDB ARM 交叉编译环境搭建

需求

需要使用 GDB 在本机来调试 ARM 环境

环境

需要安装交叉编译器,ARM 交叉编译器有很多种,这里安装其中一种。

1
sudo apt install gcc-arm-linux-gnueabi

编译时可能需要用到 Texinfo。

1
sudo apt install Texinfo
阅读更多

Dropbear Android 安装步骤

  1. 克隆 https://github.com/ubiquiti/dropbear-android 仓库
  2. 修改 build-dropbear-android.sh 文件中的编译器路径:
1
2
3
4
HOST=arm-linux-androideabi
COMPILER=${TOOLCHAIN}/bin/armv7a-linux-androideabi28-clang
STRIP=${TOOLCHAIN}/bin/arm-linux-androideabi-strip
SYSROOT=${TOOLCHAIN}/sysroot
阅读更多

Material Design 参考

Elevation

(海拔)

Component elevation values(组件高度值):

Compont Elevation
Nav drawer 16dp
App bar 4dp
Card 6dp
FAB 6dp
Button 2dp to 8dp
Dialog 24dp
阅读更多

Android AVD 位置修改

前言

默认的 Android Virtual Device Manager (AVD),就是官方 Android 模拟器的镜像文件存储位置在 C:\Users\<user_name>\.android\avd 中,Linux 和 Mac 在 <user_home>/.android/avd 中,有时需要改变它的位置,例如给 C 盘腾出空间。

Windows 系统中操作步骤如下:

阅读更多

Android so(ELF) 文件解析

前言

ELF 是一种可执行文件的格式,全称是 Executable and Linkable Format,即可执行和链接格式,它是 Unix/Linux 系统下的二进制文件的标准格式,与之对应的是 Windows 系统的 PE(Portable Executable)可执行文件格式,它们都是由 COFF(Common Object File Format,通用对象文件格式)文件格式发展而来。

so 文件是 Unix/Linux 系统中的动态库文件,被称为共享目标文件(Shared Object File),后缀名为 .so,它是 ELF 的一种,另外属于 ELF 类型的还有可重定位文件(Relocatable File)以及核心转储文件(Core Dump File)。

阅读更多

Xposed 实现原理分析

前言

Xposed 是 Android 平台上著名的 Java 层 Hook 框架,通过在 Android 设备上安装 Xposed 框架,编写 Xposed 模块,可实现对任意 Android 应用的 Java 方法的 Hook,以及应用资源的替换。

(Hook 是一种函数钩子技术,能够对函数进行接管,从而修改函数的返回值,改变函数的原始意图)

本文将基于 Xposed 最新的开源代码对 Xposed 的实现原理进行分析。Xposed 有两种实现版本,一个是基于 Dalvik 虚拟机的实现,它是针对早期的 Android 4.4 之前的 Android 设备设计的;另一个是基于 ART 虚拟机的实现,自 Android 5.0 系统开始,Android 系统正式采用了 ART 虚拟机模式运行,Dalvik 就成了历史,目前市面上几乎所有的手机都是以 ART 模式运行的,下面将主要对于 ART 上的 Xposed 实现进行详细分析,对于 Dalvik 上的 Xposed 的实现,进行必要性的分析。

通过了解 Xposed 的实现原理可以学到在 Android 平台上对于 Java 层代码的一种 Hook 机制的实现,同时复习 Android 系统的启动原理以及增加对于 Android ART 虚拟机运行原理的了解。

阅读更多