- Updated dependencies
- Fixed a file reference leak when a ZIP-related error was encountered when reading an APK file. Thanks @harlentan!
- Fixed manifest parsing on applications processed by 360 encryption services, which changes the
application
key tocom.stub.StubApp
. Thanks @JChord!
- Fixed parsing of certain APKs that deduplicate items in the string pool.
- Optional structured debug output can be enabled by passing
debug: true
to.readManifest()
or.readXml()
.
- Fixed parsing of Chrome 68 Beta APK and other similar APKs with a missing XML namespace. Thanks @zr0827!
- Fixed parsing of long strings. Thanks @mingyuan-xia!
- Got rid of CoffeeScript.
- Dropped support for older Node.js versions. You need at least 4.x or newer now.
- Fixed a
RangeError: Index out of range
error when parsing newer APKs that use UTF-8 encoding for their string pools. Thanks to @headshot289 and @mingyuan-xia for providing samples that helped isolate the issue.
- Fixed a
readManifest()
parsing issue with slightly malformed manifests.
- Added
readContent(path)
to read the raw content of any file. Thanks @LegNeato! - Exposed
usingFileStream(path, action)
that allows you to consume the contents of a file as a Stream. Useful for very large files.
readXml(path)
was unable to read any other file thanAndroidManifest.xml
due to an oversight. You can now read any file with it.
It was discovered that our previous Zip parser, adm-zip, could not handle all valid Zip formats. We've therefore switched to yauzl which provides an asynchronous interface. Therefore the following breaking API changes were required:
- Replaced
ApkReader.readFile()
with a Promise-returningApkReader.open()
which describes it better, and we have no way of supporting the previous synchronous method with the new dependency. - Replaced
ApkReader.readManifestSync()
with a Promise-returningApkReader.readManifest()
as we have no way of supporting the synchronous method with the new dependency. - Replaced
ApkReader.readXmlSync()
with a Promise-returningApkReader.readXml()
as we have no way of supporting the synchronous method with the new dependency.