0%

通过 simpleperf 采集的

1
2
3
4
5
- adb push ${NDK_HOME}/simpleperf/bin/android/arm64/simpleperf /data/local/tmp
- adb shell chmod a+x /data/local/tmp/simpleperf
- adb shell /data/local/tmp/simpleperf record -o /data/local/tmp/perf.data -g --app com.autonavi.minimap --duration 120
- adb pull /data/local/tmp/perf.data
- python ${NDK_HOME}/simpleperf/report_sample.py --symfs ../binary_cache ./perf.data > ./backgroud2mins.perf
阅读全文 »

  • ar 可以用来创建、修改库,也可以从库中提出单个模块
    1
    /usr/local/opt/binutils/bin/ar -t libidst.a
阅读全文 »

CMakeLists.txt

1
2
3
4
5
6
7
8
cmake_minimum_required(VERSION 3.24)
project(cplusplus_demo)

set(CMAKE_CXX_STANDARD 11)

ENABLE_LANGUAGE(ASM)

add_executable(main main.cpp test.S)
阅读全文 »

Header

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
typedef struct elf64_hdr {
unsigned char e_ident[EI_NIDENT]; //魔术值
Elf64_Half e_type; //类型 3为共享库
Elf64_Half e_machine; // 体系结构类型 183为aarch64
Elf64_Word e_version; // 版本信息
Elf64_Addr e_entry; // 程序入口地址 0x0000000000003FFC
Elf64_Off e_phoff; // program header 偏移
Elf64_Off e_shoff; // section header 偏移
Elf64_Word e_flags; //
Elf64_Half e_ehsize; // header size
Elf64_Half e_phentsize; // program header entry结构 size
Elf64_Half e_phnum; // program header size
Elf64_Half e_shentsize; // section header entry结构 size
Elf64_Half e_shnum; // section header size
Elf64_Half e_shstrndx; // section中string table index
} Elf64_Ehdr;
阅读全文 »

问题

  • 下列是一个c++的崩溃,使用addr2line可以根据地址反解获取到具体的崩溃代码,原理是什么?

    阅读全文 »

命局旺衰

一、偏旺 二、太旺 三、旺极 四、中和 五、偏弱 六、太弱 七、弱极。

  • 偏旺

克、泄、耗都行

阅读全文 »

问题

  • etstat -an | grep 3306
1
2
root@raspberrypi:/etc/mysql# netstat -an | grep 3306
tcp 0 0 127.0.0.1:3306 0.0.0.0:* LISTEN

如果显示127.0.0.1,说明mysql server 只监听本地端口

阅读全文 »

1
2
3
4
5
6
7
8
sudo fdisk -l

Device Boot Start End Sectors Size Id Type
/dev/mmcblk0p1 2048 249735167 249733120 119.1G 7 HPFS/NTFS/exFAT

Device Boot Start End Sectors Size Id Type
/dev/mmcblk1p1 * 8192 524287 516096 252M c W95 FAT32 (LBA)
/dev/mmcblk1p2 524288 60460639 59936352 28.6G 83 Linux
阅读全文 »

1
2
3
4
5
java -jar .tools/hack/apktool_2.6.0.jar d -r Desktop/base4.8.1.apk -o Desktop/outdir

java -jar .tools/hack/apktool_2.6.0.jar b Desktop/outdir

Library/Android/sdk/build-tools/25.0.3/apksigner sign --ks Desktop/song.keystore Desktop/base4.8.1.apk
阅读全文 »

背景

如今树莓派上部署的博客,云盘,aria2c,起名网站等,在外网访问时都依赖于frpc穿透,但如果有一天断电或者其他异常导致树莓派重启,frpc服务将不能自动连接到阿里云frps服务,那么就需要将frpc添加到开机启动服务中,这样在树莓派启动后,我还可以通过ssh连接树莓派启动云盘服务,nginx等。

阅读全文 »

参考

阅读全文 »

Opaque Binary Blob,简称obb,为apk的拓展文件,下载的资源可以是视频,图片,资源等,常见于VR或者游戏中使用。

拓展文件大小不能超过2GB,格式可以是任意格式,可压缩,最多可以添加1-2个拓展文件。从概念上讲,每个拓展文件扮演者不同的角色

  • 主扩展(main):应用必须的额外资源
  • 布丁扩展:用于更新

https://developer.android.com/google/play/expansion-files

阅读全文 »

问题

  • AndroidJUnitRunner 原理
  • 编译产物 (自动化测试生成的2个apk对比)
  • 启动方式 (主要研究AndroidJUnitRunner如何被调起)
  • 运行方式 (研究 espresso和 uiautomator原理,如何模拟操作)
  • espresso和uiautomator是否可以打包到主apk
阅读全文 »

背景

安装apk的方式有以下两种

  • adb install 通过adb安装
  • Installer activity 通过系统的包管理Activity安装

实际调用上述两种方式并不能成功,即使手机root也不行,所以需要将app设置为系统app

阅读全文 »

上一篇文章AC86U - 路由器安装aria2中我们讲了路由器aria2的安装和配置,但是存在一个问题,路由器的内存是512MB,存储空间为256MB,这肯定是不能满足我们需求的,那么我们需要为路由器添加一个虚拟内存,系统存储空间。

AC86u的软件中心已经为我们提供了虚拟内存和USB挂载工具

阅读全文 »

Aria2是一款开源下载工具,可帮助简化不同设备和服务器之间的下载过程。它支持磁力链接、BT种子、http等类型的文件下载,与迅雷及QQ旋风相比,Aria2有着优秀的性能及较低的资源占用,架构本身非常轻巧,通常只需要4兆字节(HTTP下载)到9兆字节(用于BitTorrent交互)之间。最重要的一点是Aria2完全免费!

阅读全文 »

背景

最近在开发一款起名字的应用,最开始使用的康熙字典数据库是从github找的,使用了一段时间发现数据库中的汉字不全,部分高频汉字无法查询,最后决定自己去爬数据。

第一次爬取的是百度汉语,但有一个问题,名字的三才五格计算必须使用康熙汉字的笔画来计算,而百度汉语并没有给出汉字的康熙笔画,最终使用了汉程网的字典。

阅读全文 »

名词解释

  • WAN 广域网,连接外部网络
  • LAN 局域网,连接内部网络
  • PPPoE 拨号上网协议
  • DHCP 动态主机配置协议,是一个局域网协议,指的是由服务器控制一段IP地址范围,客户机登录服务器时就可以自动获得服务器分配的IP地址和子网掩码
  • PPTP/L2TP 动态ip协议
  • 静态ip 一般手机上的网络里面可以选择 DHCP和静态IP
  • AP 无线访问接入点,是移动计算机用户进入有线网络的接入点,一般连接AC控制器
  • AC 接入控制器
阅读全文 »

pyenv

pyenv是一个forked自ruby社区的简单、低调、遵循UNIX哲学的Python环境管理工具, 它可以轻松切换全局解释器版本, 同时结合vitualenv插件可以方便的管理对应的包源.

阅读全文 »