@devicefarmer/adbkit-apkreader

中文文档
4.0.0发布于 2026/10/25Apache-2.0TypeScriptCommonJS构建来源已验证近 30 天下载 28.1万

从 APK 文件提取信息 .

中文使用文档
文档目录9 节
  1. 所需资源
  2. 开始
  3. 实例
  4. API 密码
  5. 自动读取器
  6. 更多信息
  7. 释放
  8. 捐款
  9. 许可证

adbkit 读取器

adbkit 读取器 页:1 节点.js API用于从Android APK文件中提取信息. 例如,它允许您阅读 AndroidManifest.xml 的 APK 文件.

所需资源

  • 节点.js 22岁或更新。 旧版本不支持 .

开始

通过国家预防机制安装:

npm install --save @devicefarmer/adbkit-apkreader

实例

读取 AndroidManifest.xml 自动启动程序

const util = require('util')
const ApkReader = require('@devicefarmer/adbkit-apkreader')

ApkReader.open('HelloApp.apk')
  .then(reader => reader.readManifest())
  .then(manifest => console.log(util.inspect(manifest, { depth: null })))

类型脚本

货包装有它自己的类型声明。 解析结果的形状导出于 ApkReader 名称空间 :

import ApkReader from '@devicefarmer/adbkit-apkreader'

const reader = await ApkReader.open('HelloApp.apk')
const manifest: ApkReader.Manifest = await reader.readManifest()
// application has no lists when the manifest has no <application> element.
console.log(manifest.package, manifest.application.launcherActivities ?? [])

与 esModuleInterop 关闭, 使用 import ApkReader = require('@devicefarmer/adbkit-apkreader') 换句话说 其他出口类型包括: ApkReader.XmlElement, (中文(简体) ), ApkReader.TypedValue 财务报告和审定财务报表 ApkReader.Attributes。 。 。 .

API 密码

返回的每一种方法a Promise 返回一个本地的。 3.x版本并提前返回 青鸟 承诺;如果你只依靠蓝鸟的方法,例如 .timeout(), (中文(简体) ), .tap() 或者说 .return(),将结果包入 Bluebird.resolve() 或使用当地同等物.

自动读取器

ApkReader.manifest (英语)

带有值的便利常数 'AndroidManifest.xml'。在某些情况下,可以使用其他API方法.

ApkReader. open( 文件)

手动创建 ApkReader 实例的替代语法 。 文件和 Buffers被支持,但在某个时候可能会添加对流的支持.

请注意,目前这种方法不能因为文件被懒散地打开而拒绝,但这可能会在未来发生改变,因此返回一个未来兼容性问题更少的保证. 在相关的节点上,直接拨打构造器仍然是可能的,但劝阻.

  • 文件 APK 文件的路径, 或一个 Buffer 及其内容.
  • 回返:A Promise 解决一个 ApkReader 举个例子.

阅读器。 read Content(路径)

读取APK内部给定文件的内容.

  • 路径 文件的路径 。 例如,给予 'META-INF/MANIFEST.MF' 因为路径会读取该文件的内容.
  • 回返:A Promise 解决一个 Buffer 包含文件的全部内容.

读取器。 read Manifest( [选项])

阅读和描述 AndroidManifest.xml 在 APK 内保存文件,并返回其简化对象表示.

  • 选项 可选的 一个 Object 具有下列属性:
    • 调试 若为 true,将二进制 XML 解析器的每个读取记录到控制台。 默认为 false。 。 。 .
  • 回返:A Promise 用 Java 脚本解决 Object 代表清单。 见下文实例产出。 拒绝错误( 如解析失败 ) .
{ versionCode: 1,
  versionName: '1.0',
  package: 'com.example.hello.helloapp.app',
  usesPermissions: [],
  permissions: [],
  permissionTrees: [],
  permissionGroups: [],
  instrumentation: null,
  usesSdk: { minSdkVersion: 7, targetSdkVersion: 19 },
  usesConfiguration: null,
  usesFeatures: [],
  supportsScreens: null,
  compatibleScreens: [],
  supportsGlTextures: [],
  application:
   { theme: 'resourceId:0x7f0b0000',
     label: 'resourceId:0x7f0a000e',
     icon: 'resourceId:0x7f020057',
     debuggable: true,
     allowBackup: true,
     activities:
      [ { label: 'resourceId:0x7f0a000e',
          name: 'com.example.hello.helloapp.app.MainActivity',
          intentFilters:
           [ { actions: [ { name: 'android.intent.action.MAIN' } ],
               categories: [ { name: 'android.intent.category.LAUNCHER' } ],
               data: [] } ],
          metaData: [] } ],
     activityAliases: [],
     launcherActivities:
      [ { label: 'resourceId:0x7f0a000e',
          name: 'com.example.hello.helloapp.app.MainActivity',
          intentFilters:
           [ { actions: [ { name: 'android.intent.action.MAIN' } ],
               categories: [ { name: 'android.intent.category.LAUNCHER' } ],
               data: [] } ],
          metaData: [] } ],
     services: [],
     receivers: [],
     providers: [],
     usesLibraries: [] } }

读取器. readXml(路径[,选项])

在APK文件内部给定的路径读取并解析二进制 XML 文件. 尝试与 DOM API 在一定程度上兼容 .

  • 路径 APK内部的二进制 XML 文件路径. 例如,给予 'AndroidManifest.xml' 因为路径会解析显示( 但你可能想要使用) reader.readManifest() 页:1.
  • 选项 可选的 与 reader.readManifest()。 。 。 .
  • 回返:A Promise 用 Java 脚本解决 Object 表示 XML 文件的根节点 。 包括根节点在内的所有节点都有下面列出的属性. 拒绝错误( 如解析失败 ) .
    • 名称空间URI 命名空间 URI 或 null 如果没有.
    • 节点类型 1 用于元素节点, 2 用于属性节点,以及 4 用于CData部分.
    • 节点Name 节点名.
    • 对于元素节点,还存在以下属性:
      • 属性 一系列属性节点.
      • 子节点 一系列儿童节点.
    • 对于属性节点,存在以下属性:
      • 名称 属性名.
      • 价值 属性值,如果可能的话,以简单值表示.
      • 键入值 当属性代表复杂值时,可能可用. 见 (原始内容存档于2018-09-21). Android. util. 已键入值 更多信息。 具有下列属性:
        • 价值 价值,可能 null, (中文(简体) ), String, (中文(简体) ), Boolean, (中文(简体) ), Number 甚至是一个 Object 对于最复杂的类型.
        • 类型 A 类 String 表示数值的类型.
        • 原始类型 数值类型的原始整数列报.
    • 对于 CData 节点,还存在以下属性:
      • 数据 CData号.
      • 键入值 如果区域代表更复杂的类型,则可能可用。 详情见上文.

读取器. using FileStream( 路径, 动作)

在 APK 内打开可读 Stream 到给定文件, 并用它运行给定动作 。 APK文件在动作运行时保持开放,允许您处理流. 一旦动作完成,APK就会自动关闭.

  • 路径 文件的路径 。 例如,给予 'META-INF/MANIFEST.MF' 因为路径会打开文件.
  • 动作(流) 以某种方式处理流的函数 . 必须 返回 a Promise 当你处理完溪流后 就能解决了 价值 Promise 解决的还有: usingFileStream() 决意接受.
    • 流线 文件内容的可读流 。 你要么自己消耗 要么自己结束水流 然后再解决问题.
  • 回返:A Promise 解决与任何 action 决意接受.

更多信息

释放

软件包以 npm 的形式发布 @devicefarmer/adbkit-apkreader 由两个 GitHub 动作工作流程 :

  1. 运行 Prepare release 以版本作为输入,例如 3.2.5它会撞倒 package.json,写下 CHANGELOG.md gitHub 生成的音符,并按 release/v3.2.5。它没有写给 master。 。 。 .
  2. 打开任务摘要中的拉动请求链接, 贴上标签 ignore-for-release,一旦支票通过,就将其合并.
  3. 运行 Release 打开 master 和同一个版本。 标记 v3.2.5,发布 GitHub 发布,并附上来自 CHANGELOG.md,然后将 TypeScript 编译,测试并用可信赖的出版方式(OIDC)将软件包发布到npm,所以没有npm 令牌存放在任何地方.

撞出一个拉出的要求 因为 master 被保护. Release 拒绝在任何分支上奔跑,但 master,所以没有出现 release/v* 分支无法发布.

捐款

见 捐款额。 。 。 .

许可证

见 自由主义。 。 。 .

版权:© OpenSTF 项目. 所有权利保留.

版本与发布记录

@devicefarmer/adbkit-apkreader 共发布 6 个版本,首次发布于 2020/05/16;过去 12 个月发布了 1 个版本。最新版本附带 npm provenance 构建来源证明,可追溯到公开的 CI 构建记录。

版本发布日期距今
4.0.0latest2026/10/2518 天前
3.2.42023/03/303 年前
3.2.32021/06/295 年前
3.2.22020/09/236 年前
3.2.12020/08/286 年前
3.2.02020/05/166 年前

关于 @devicefarmer/adbkit-apkreader 的常见问题

@devicefarmer/adbkit-apkreader 是什么?

从 APK 文件提取信息 .

如何安装 @devicefarmer/adbkit-apkreader?

在项目目录运行 npm install @devicefarmer/adbkit-apkreader,或使用 pnpm add / yarn add / bun add。

@devicefarmer/adbkit-apkreader 支持 TypeScript 吗?

支持。包内自带 TypeScript 类型声明(package.json 声明了 types 入口),安装后即可获得类型提示,无需再安装 @types 包。

@devicefarmer/adbkit-apkreader 支持 ESM 还是 CommonJS?

以 CommonJS 形式发布,可以直接 require();在 ES Module 项目中也可以用 import 引入(Node.js 会把 module.exports 作为默认导出)。

@devicefarmer/adbkit-apkreader 需要什么版本的 Node.js?

package.json 的 engines 字段要求 Node.js >= 22。版本不符时 npm 默认只给出警告,开启 engine-strict 后会拒绝安装。

@devicefarmer/adbkit-apkreader 可以商用吗?

@devicefarmer/adbkit-apkreader 使用 Apache-2.0 许可。宽松许可:允许商业使用、修改和再分发,并附带明确的专利授权;分发时需保留许可与 NOTICE 文件,修改过的文件要注明改动。以上为概括,不构成法律意见,请以许可原文为准。

@devicefarmer/adbkit-apkreader 的下载量有多少?

根据 npm 官方下载统计,@devicefarmer/adbkit-apkreader 在 2026/10/12 – 2026/11/10 这 30 天内被下载 281,264 次,日均约 9,375 次。下载量会把 CI 构建、镜像同步和作为其他包依赖的安装一并计入,适合横向比较热度,不能直接等同于使用人数。

@devicefarmer/adbkit-apkreader 还在维护吗?

最新版本 4.0.0 发布于 2026/10/25(18 天前);至今共发布 6 个版本,其中过去 12 个月发布了 1 个;首次发布于 2020/05/16。发布频率只是参考信号:功能稳定的工具可能很少需要更新,建议结合源码仓库的 issue 和提交记录判断。