Socket
Socket
Sign inDemoInstall

node-apk

Package Overview
Dependencies
1
Maintainers
1
Versions
10
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

    node-apk

A library to parse Android application manifest and signature


Version published
Weekly downloads
2.6K
decreased by-7.46%
Maintainers
1
Install size
1.76 MB
Created
Weekly downloads
 

Readme

Source

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

Keywords

FAQs

Last updated on 21 Feb 2023

Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc