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号.
- 键入值 如果区域代表更复杂的类型,则可能可用。 详情见上文.
- 名称空间URI 命名空间 URI 或
读取器. using FileStream( 路径, 动作)
在 APK 内打开可读 Stream 到给定文件, 并用它运行给定动作 。 APK文件在动作运行时保持开放,允许您处理流. 一旦动作完成,APK就会自动关闭.
- 路径 文件的路径 。 例如,给予
'META-INF/MANIFEST.MF'因为路径会打开文件. - 动作(流) 以某种方式处理流的函数 . 必须 返回 a
Promise当你处理完溪流后 就能解决了 价值Promise解决的还有:usingFileStream()决意接受.- 流线 文件内容的可读流 。 你要么自己消耗 要么自己结束水流 然后再解决问题.
- 回返:A
Promise解决与任何action决意接受.
更多信息
- (原始内容存档于2018-09-21). Android. util. 已键入值 关于数值类型的更多信息.
- 董刘出色的基于Java的APK解析器,用作参考执行.
- 关于 Android 二进制 XML 格式的详细博客端口
- 关于这一专题的堆叠流讨论
- 机器人工具 最先进的基于CLI/Java的APK工具.
释放
软件包以 npm 的形式发布 @devicefarmer/adbkit-apkreader 由两个 GitHub 动作工作流程 :
- 运行
Prepare release以版本作为输入,例如3.2.5它会撞倒package.json,写下CHANGELOG.mdgitHub 生成的音符,并按release/v3.2.5。它没有写给master。 。 。 . - 打开任务摘要中的拉动请求链接, 贴上标签
ignore-for-release,一旦支票通过,就将其合并. - 运行
Release打开master和同一个版本。 标记v3.2.5,发布 GitHub 发布,并附上来自CHANGELOG.md,然后将 TypeScript 编译,测试并用可信赖的出版方式(OIDC)将软件包发布到npm,所以没有npm 令牌存放在任何地方.
撞出一个拉出的要求 因为 master 被保护. Release 拒绝在任何分支上奔跑,但 master,所以没有出现 release/v* 分支无法发布.
捐款
见 捐款额。 。 。 .
许可证
见 自由主义。 。 。 .
版权:© OpenSTF 项目. 所有权利保留.