告别繁琐!用ApkInfoQuick快速提取APK关键信息

我开发了一个开源 APK 信息查看工具:ApkInfoQuick

最近我做了一个小工具,名字叫 ApkInfoQuick

它是一个面向 Android APK 文件的信息查看与解析工具,支持桌面 GUI,也支持 CLI 命令行。项目已经准备开源放到 GitHub 上,希望能给经常分析 APK、测试包、渠道包、版本包的同学提供一点帮助。

为什么要做这个工具

平时在 Android 开发、测试、渠道分发、逆向分析或者自动化流水线里,经常会遇到这些需求:

  • 快速看一个 APK 的包名。
  • 确认应用名是不是解析正确。
  • 查看 versionCode、versionName。
  • 查看 minSdkVersion、targetSdkVersion、compileSdkVersion。
  • 看 APK 里声明了哪些权限。
  • 看支持哪些 ABI。
  • 提取应用图标。
  • 判断渠道信息有没有写进去。
  • 批量解析多个 APK。
  • 把解析结果复制成文本或 JSON。

这些需求看起来都很简单,但真正用起来,经常需要在多个工具之间切换。

有些老工具界面比较旧,有些工具解析图标和应用名不稳定,有些只支持 GUI,不方便脚本自动化;而命令行工具虽然强大,但对日常查看又不够直观。

所以我做了 ApkInfoQuick:目标就是让 APK 信息查看这件事变得更快、更直观,也更适合自动化。

项目地址

GitHub 地址:

text 复制代码
https://github.com/TheDarkXian/ApkInfoQuick.git

这里先放一个占位地址,等仓库公开后替换成真实链接即可。

主要功能

ApkInfoQuick 当前支持:

  • 拖拽 APK 到窗口自动解析。
  • 多文件标签页工作区。
  • 多 APK 按顺序自动解析。
  • APK 图标预览。
  • 图标导出。
  • 包名、应用名、版本、SDK 信息展示。
  • 权限列表展示。
  • ABI 列表展示。
  • 渠道信息展示。
  • 签名信息尽力解析。
  • warnings 诊断信息展示。
  • 当前标签内容复制为纯文本。
  • 当前标签内容复制为 JSON。
  • CLI 命令行解析。
  • 批量目录解析。
  • CLI 导出 icon。

目前 AAB 文件暂时是占位标签,还没有做真实解析。后续计划会补上。

桌面端效果

桌面端基于 React + Material UI + Tauri 实现。

核心交互很简单:

  1. 打开应用。
  2. 把 APK 拖进去。
  3. 自动解析。
  4. 在标签页里查看结果。
  5. 需要的话复制文本、复制 JSON 或导出 icon。

我比较关注这个工具的信息密度,所以界面不是那种展示型大留白 UI,而是偏工具型布局。目标是尽量在首屏看到更多有用信息。

CLI 用法

除了 GUI,ApkInfoQuick 也提供 CLI。

进入后端目录后可以运行:

powershell 复制代码
cd backend
cargo run -- parse path\to\app.apk

输出的是统一的 JSON Envelope:

json 复制代码
{
  "success": true,
  "data": {
    "packageName": "com.example.app",
    "appName": "Example",
    "iconUrl": "file:///...",
    "minSdkVersion": 23,
    "targetSdkVersion": 35,
    "compileSdkVersion": 35,
    "versionCode": 1,
    "versionName": "1.0.0",
    "permissions": [],
    "signers": [],
    "abis": [],
    "channel": "unknown"
  },
  "errorCode": null,
  "errorMessage": null,
  "warnings": []
}

常用命令示例:

powershell 复制代码
# 紧凑 JSON
cargo run -- parse path\to\app.apk --compact

# 纯文本输出
cargo run -- parse path\to\app.apk --text

# 解析并导出 icon
cargo run -- parse path\to\app.apk --export-icon .\icons

# 递归批量解析目录
cargo run -- parse .\samples --recursive --out result.json

# 检查工具链
cargo run -- doctor

CLI 和 GUI 复用同一套 Rust 解析引擎,所以结果是一致的。

技术栈

项目主要技术栈:

  • 前端:React、TypeScript、Vite、Material UI。
  • 桌面壳:Tauri 2。
  • 后端解析:Rust。
  • APK 解析辅助:aapt。
  • 压缩包读取:zip。
  • XML 处理:quick-xml。
  • CLI 参数解析:clap。
  • 序列化:serde、serde_json。

整体结构大概是:

text 复制代码
.
|-- backend/        Rust 解析引擎和 CLI
|-- frontend/       React UI 和 Tauri 桌面端
|-- tools/android/  内置 Android 辅助工具
`-- README.md

APK 解析方案

ApkInfoQuick 当前采用的是混合解析策略。

第一层优先使用 aapt

  • aapt dump badging
  • aapt dump resources
  • aapt dump xmltree

这些能力对应用名、图标、资源引用等信息比较稳定。

第二层是 Rust 自研兜底解析:

  • 读取 APK zip。
  • 解析 AndroidManifest.xml。
  • 解析部分 resources.arsc 场景。
  • 扫描 res 下的 icon 资源。
  • 推断 ABI。
  • 解析渠道信息。
  • 尽力解析签名信息。

一开始我尝试过只靠 Rust 自研解析,但真实 APK 的情况很多,特别是图标和应用名解析会遇到不少边界情况。

后来又尝试过完全导向 aapt,但也发现部分原本 Rust 能命中的 icon 反而丢失。

所以最后采用了混合方案:aapt 做主解析,Rust 做字段级兜底和增强

这个方案目前效果比较稳定,尤其是应用图标解析已经覆盖了不少真实 APK 场景。

图标解析做了哪些处理

APK icon 解析其实比想象中复杂。

常见情况包括:

  • manifest 里直接写 @mipmap/ic_launcher
  • manifest 里写 @drawable/icon
  • 带包名前缀的资源引用。
  • 资源 ID 引用,比如 @0x7f...
  • roundIcon。
  • adaptive icon XML。
  • foreground / background 分层。
  • png、webp、9.png 等不同格式。
  • 不同 density 目录,比如 mdpi、hdpi、xhdpi、xxhdpi、xxxhdpi。

ApkInfoQuick 目前会综合多个策略选择最合适的图标,并在界面里显示图标来源,方便排查。

比如可能显示:

  • aapt badging
  • aapt xmltree
  • resources.arsc 反查
  • adaptive xml
  • heuristic fallback

为什么做成开源

这个工具本身是为了解决我自己的日常需求,但 APK 信息查看其实是很多 Android 开发者、测试同学、工具开发者都会遇到的问题。

开源之后,希望它可以:

  • 给需要的人直接使用。
  • 给想做 APK 工具的人提供参考。
  • 接收更多真实 APK 样本反馈。
  • 一起补齐更多边界情况。

尤其是 APK 的资源格式、签名格式、渠道信息写法非常多,靠一个人很难覆盖全部场景。开源以后,如果大家遇到解析失败的 APK,也可以提 issue 或 PR。

当前状态

目前比较稳定的能力:

  • APK 基础信息解析。
  • 应用名解析。
  • 图标解析与导出。
  • 权限、ABI、渠道展示。
  • 多文件标签页。
  • CLI 单文件和批量解析。
  • JSON / 文本复制。

仍然需要继续完善的地方:

  • AAB 真实解析。
  • 更完整的签名证书解析。
  • 更多导出格式。
  • 更完善的安装包发布流程。
  • macOS / Linux 的打包验证。

本地开发

前端开发:

powershell 复制代码
cd frontend
npm install
npm run tauri:dev

前端测试:

powershell 复制代码
cd frontend
npm run test -- --run

后端测试:

powershell 复制代码
cd backend
cargo test

构建桌面安装包:

powershell 复制代码
cd frontend
npm run tauri:build

构建 CLI:

powershell 复制代码
cd backend
cargo build --release

写在最后

ApkInfoQuick 不是一个很复杂的大项目,但它解决的是一个非常具体、非常高频的小问题。

我一直觉得工具类项目最有意思的地方在于:它不一定宏大,但只要能让某个重复动作少几步、让某个排查过程快几分钟,就已经有价值。

如果你经常需要查看 APK 信息、分析测试包、检查渠道包,欢迎试试这个工具。

如果你有更复杂的 APK 样本,也欢迎提 issue,一起把它打磨得更好。

GitHub:

text 复制代码
https://github.com/TheDarkXian/ApkInfoQuick.git
相关推荐
深度智能Ai1 小时前
GPT Image 2 图片生成 API 接口对接文档
android·gpt
VincentWei952 小时前
Compose:1.5 无状态与状态提升(State Hoisting)
android
xingpanvip2 小时前
星盘接口开发文档:天象盘接口指南
android·开发语言·python·php·lua
tianyuanwo2 小时前
Rust RPM Spec 中的动态宏定义:原理、原因与低版本兼容方案
rust·lua·spec
天涯海风2 小时前
写一个录音并保存到手机的工具 安卓工具类
android·java·智能手机
黄林晴2 小时前
Koin 开发者炸了!7 条规则根治运行时错误,自动扫描太香了
android
恋猫de小郭2 小时前
Flutter 3.41.8 又双叒修复调试问题,草台班子日常 hotfix
android·前端·flutter
火山上的企鹅3 小时前
QGC 二次开发(RTK):内置 NTRIP Client,实现 CORS 差分数据接入与 GPS_RTCM_DATA 转发
android·无人机·rtk·qgroundcontrol
Kapaseker3 小时前
客官,你误会 Compose Strong Skipping 了
android·kotlin