Skip to content

id0Sch/node-apk-parser

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

3 Commits
 
 
 
 
 
 
 
 
 
 
 
 

Repository files navigation

#node-apk-parser based on adbkit-apkreader, add meta data parse feature

node-apk-parser provides a Node.js API for extracting information from Android APK files. For example, it allows you to read the AndroidManifest.xml of an existing APK file.

Getting started

Install via NPM:

npm install --save node-apk-parser

Examples

Read the AndroidManifest.xml of an APK

var util = require('util')
var ApkReader = require('node-apk-parser')

var reader = ApkReader.readFile('HelloApp.apk')
var manifest = reader.readManifestSync()

console.log(util.inspect(manifest, { depth: null }))

API

ApkReader

ApkReader.readFile(file)

Alternate syntax to manually creating an ApkReader instance. Currently, only files are supported, but support for streams might be added at some point.

  • file The path to the APK file.
  • Throws: Error on error (e.g. if the file is not valid)
  • Returns: An ApkReader instance.

constructor(file)

Manually construct an ApkReader instance. Useful for testing and/or playing around. Normally you would use ApkReader.readFile(file) to create the instance.

  • file The path to the APK file.
  • Throws: Error on error (e.g. if the file is not valid)
  • Returns: N/A

reader.readManifestSync()

Synchronously reads and parses the AndroidManifest.xml file inside the APK and returns a simplified object representation of it.

  • Throws: Error (e.g. if parsing was unsuccessful)
  • Returns: A JavaScript Object representation of the manifest. See example output below:
{ versionCode: 1,
  versionName: '1.0',
  package: 'com.cvte.sdk.update',
  usesPermissions: [],
  permissions: [],
  permissionTrees: [],
  permissionGroups: [],
  instrumentation: null,
  usesSdk: { minSdkVersion: 14, targetSdkVersion: 20 },
  usesConfiguration: null,
  usesFeatures: [],
  supportsScreens: null,
  compatibleScreens: [],
  supportsGlTextures: [],
  application: 
   { theme: 'resourceId:0x7f060000',
     label: 'resourceId:0x7f050001',
     icon: 'resourceId:0x7f020000',
     debuggable: true,
     allowBackup: true,
     activities: 
      [ { label: 'resourceId:0x7f050001',
          name: 'com.cvte.sdk.update.MyActivity',
          intentFilters: 
           [ { actions: [ { name: 'android.intent.action.MAIN' } ],
               categories: [ { name: 'android.intent.category.LAUNCHER' } ],
               data: [] } ],
          metaData: [] },
        { theme: 'resourceId:0x1030071',
          name: 'com.cvte.sdk.update.UpdateDialogActivity',
          intentFilters: [],
          metaData: [] } ],
     activityAliases: [],
     launcherActivities: 
      [ { label: 'resourceId:0x7f050001',
          name: 'com.cvte.sdk.update.MyActivity',
          intentFilters: 
           [ { actions: [ { name: 'android.intent.action.MAIN' } ],
               categories: [ { name: 'android.intent.category.LAUNCHER' } ],
               data: [] } ],
          metaData: [] } ],
     services: [],
     receivers: [],
     providers: [],
     usesLibraries: [],
     metaDatas: 
      [ { name: 'MENGYOU_APPKEY',
          value: 'a41a4a18b9a1808e4b88f8beea2ddfd1870866c3' } ] } }

reader.readXmlSync(path)

Synchronously reads and parses the binary XML file at the given path inside the APK file. Attempts to be somewhat compatible with the DOM API.

  • path The path to the binary XML file inside the APK. For example, giving AndroidManifest.xml as the path would parse the manifest (but you'll probably want to use reader.readManifestSync() instead).
  • Throws: Error (e.g. if parsing was unsuccessful)
  • Returns: A JavaScript Object representation of the root node of the XML file. All nodes including the root node have the following properties:
    • namespaceURI The namespace URI or null if none.
    • nodeType 1 for element nodes, 2 for attribute nodes, and 4 for CData sections.
    • nodeName The node name.
    • For element nodes, the following additional properties are present:
      • attributes An array of attribute nodes.
      • childNodes An array of child nodes.
    • For attribute nodes, the following additional properties are present:
      • name The attribute name.
      • value The attribute value, if possible to represent as a simple value.
      • typedValue May be available when the attribute represents a complex value. See android.util.TypedValue for more information. Has the following properties:
        • value The value, which might null, String, Boolean, Number or even an Object for the most complex types.
        • type A String representation of the type of the value.
        • rawType A raw integer presentation of the type of the value.
    • For CData nodes, the following additional properties are present:
      • data The CData.
      • typedValue May be available if the section represents a more complex type. See above for details.

More information

About

No description, website, or topics provided.

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages

No packages published