node-apk
v1.2.1
Published
A library to parse Android application manifest and signature
Downloads
11,414
Maintainers
Readme
Node APK
A library to parse Android application's manifest and signature
Installation
This library is meant to work with Node JS 4 or later. You can install it using npm:
npm install node-apk
The use of typescript is highly recommended for which this library has full typing support.
Usage
Import the Apk class and instantiate it passing your APK's file path
import {Apk} from "node-apk";
const apk = new Apk("yourapplication.apk");
Manifest information
Application manifest details can be accessed using:
apk.getManifestInfo().then((manifest) => {
console.log(`package = ${manifest.package}`);
console.log(`versionCode = ${manifest.versionCode}`);
console.log(`versionName = ${manifest.versionName}`);
// for properties which haven't any existing accessors you can use the raw binary xml
console.log(JSON.stringify(manifest.raw, null, 4));
});
Certificate information
Certificates can be retrieved like the following:
apk.getCertificateInfo().then((certs) => certs.foreach((cert) => {
console.log(`issuer = ${cert.issuer.get("CN")}`);
console.log(`subject = ${cert.subject.get("CN")}`);
console.log(`validUntil = ${cert.validUntil}`);
console.log(cert.bytes.toString("base64"));
}));
Application resources
Application resources can be resolved as shown below:
const iconBytes = Promise.all<Manifest, Resources>([apk.getManifestInfo(), apk.getResources()])
.then(([manifest, resources])) => {
let label = manifest.applicationLabel;
if (typeof label !== "string") {
const all = resources.resolve(label);
label = (all.find((res) => (res.locale && res.locale.language === "fr")) || all[0]).value;
}
console.log(`label = ${label}`);
// resolve and extract the first application icon found
return apk.extract(resources.resolve(manifest.applicationIcon)[0]);
}
Cleaning up
Once you are done, don't forget to release you Apk object:
apk.close();
License
This software is licensed under the MIT license
Copyright © 2019 All rights reserved. XdevL