Box —— 个人开发助手

项目地址:Boxgit

为何要作 Box ? 其实源于开发过程当中一些很小的需求,也许并不常见,可是每次碰到都要费一些功夫。因此想着写一个小应用,集成一些经常使用功能,给开发带来一些便利。下面这些小需求,你也遇到过吗?github

如何查看当前 Activity ?

看到别人优秀的 UI 界面想借鉴一下如何实现?看到别人的应用实现了本身不知道如何实现的功能?反编译了别人的 apk 殊不知道去哪找代码?常常作逆向的同窗应该常常碰到这些问题。首先,你确定得找到当前 Activity 的名称,才能顺路找到相应的代码。那么,如何查看当前 Activity 的名称呢?常见的作法是经过 adb 命令:shell

adb shell dumpsys activity activities | grep mFocusedActivity
复制代码

执行结果以下:bash

无奈记性很差,常常忘记命令,每次都得去搜一下,顺便推荐一个 adb 命令集合。再来看一下 Box 中这一功能是什么效果:微信

经过悬浮窗实时显示当前 Activity ,简单便捷。实现原理也很简单,经过 无障碍服务 监听窗口变化并获取当前 Activity 名称。悬浮窗没有本身造轮子了,使用了开源项目 FloatWindow。有段时间没更新了,顺便也改了几个 bug。app

如何获取已安装应用的 Apk 文件 ?

某天忽然看上了手机里的某个 App,想拖到 jadx 里面看一看,如何快速的获取到安装包文件呢?咱们都知道对于已安装的应用,系统都备份了安装包,存储在 /data/app/[packageName] 目录下,通常文件名为 base.apk。若是是具备 root 权限的手机,咱们能够直接拿到文件。对于非 root 手机,仍是有读权限的,能够经过文件 API 直接读取。Box 中界面以下所示:异步

安装包文件会复制到手机根目录 /Box/apk/应用名 文件夹下。工具

如何快速查看 AndroidManifest.xml 文件 ?

AndroidManifest.xml 包含了应用的基本信息,如何快速的查看应用的清单文件?以前有一个开源工具,AXmlPrinter.jar,能够直接解析安装包中的二进制清单文件。本想直接把 jar 包拿过来用,但是用的不是那么随心应手。加上以前亲手解析过 AndroidManifest.xml 文件,详见 Android逆向(一) —— AndroidManifest.xml 二进制解析。索性就用了本身的代码,顺便也修复了一些解析过程当中遇到的 bug。具体效果以下:post

其余

主要功能都在上面了,另外还加了一块 本机信息,包括内容以下:spa

  • 品牌、版本号、型号、主板、制造商等
  • 屏幕、RAM、ROM、SDK 版本、Android 版本、ABIS 等
  • IMEI、MEID、SN、MAC 地址等

Box 使用 kotlin 开发,简单的使用了 协程 来进行异步任务,如复制 Apk 并更新进度等。界面设计很通常,实在是很为难我这么一个理科生。图片基本上都是 Android Studio 里面自动生成的,logo 暂时尚未,有合适的能够 push 一个。

第一个版本功能比较简单,后面再遇到开发中的痛点需求,还会加进来,持续更新。有 bug 或者好的想法,欢迎 issuepr 砸过来!

项目源码: Box

文章首发微信公众号: 秉心说 , 专一 Java 、 Android 原创知识分享,LeetCode 题解,欢迎关注!

相关文章
相关标签/搜索