Skip to content

Releases: jacojayy/cronoszip

CronosZip 1.0.0 - The Android HatchZip Port.

Choose a tag to compare

@github-actions github-actions released this 30 Oct 14:49

CronosZip v1.0.0 — the first Android release

Extract huge archives in place. The archive shrinks as your files hatch, so you only need room for the files you are unpacking — not for the files and the archive at the same time.

CronosZip is a free, open-source Android archive extractor and a port of HatchZip by xevrion. This is the first public Android build: a native Rust extraction engine packed into a Jetpack Compose app, with support for ZIP, 7z, RAR, tar, .tar.gz and split archives.

This release is intentionally a debug APK. It is not Play Store-signed and it does not auto-update. See Installation and Known limitations before installing.


Build information

Field Value
Release tag v1.0.0
Release title CronosZip 1.0.0 - The Android HatchZip Port.
Source commit 838996147653b81029f21a8782b00881dc5185ee
Build workflow run 41072962523
Build timestamp 2026-10-30T14:35:41Z
APK asset CronosZip-v1.0.0-debug.apk
APK size 29MiB (30082362 bytes)
APK SHA-256 1ff8f5471ca867aeb9a5eb915b95c51a31e96433af86a40ebdb506ad72aaf341
Android requirement Android 8.0 Oreo or newer (API 26+)
Target SDK 35 (Android 15)
ABIs arm64-v8a, armeabi-v7a, x86_64
Build type Debug (assembleDebug), debug-signed
Version versionCode 1, versionName 1.0.0

The APK is attached directly to this release. A matching .sha256 file is attached beside it.


The problem CronosZip solves

A 180 GB archive that unpacks to 200 GB normally needs 380 GB of storage: 180 GB for the archive plus 200 GB for the extracted files, all alive at the same time. On a phone or tablet that is already almost full, that is often impossible even though the unpacked files themselves would fit.

CronosZip extracts the archive from the end and cuts away each finished part as it goes. The space released by the archive is immediately available for the next files. For the same 180 GB → 200 GB example, CronosZip needs a little over 200 GB, not 380 GB.

This is not a cache trick, a cloud service, or a promise to clean up afterwards. The archive file itself is truncated as entries are completed, on your own storage, under your own control.


Highlights in 1.0.0

In-place extraction that actually gives space back

  • Extracts ZIP, 7z, RAR, tar, .tar.gz, and split archive sets in place.
  • Frees the archive progressively: one file at a time for ZIP/tar/RAR, one solid block at a time for 7z, and volumes one at a time for split sets.
  • Reuses the reclaimed bytes for the remaining output instead of waiting until the end.
  • Keeps working on normal internal storage and adoptable SD cards, including Android shared storage.

A space plan before anything is touched

  • Reads the archive index and the destination filesystem's free space first.
  • Replays the extraction to account for peak usage, not just the final total.
  • Computes the keep-free safety reserve you configure (default: 2 GB).
  • Refuses safely when the plan does not fit; no archive bytes are modified before the check passes.
  • Reports entries, archive size, uncompressed output size, free space, required space, and free space after extraction.

Crash-safe, resume-safe extraction

  • Writes each file to a temporary name, flushes it to the filesystem, and renames it into place before cutting that part out of the archive.
  • A crash, force-stop, low-memory kill, or full disk leaves either the completed file or the still-needed archive bytes — never neither.
  • Saves progress in two small side files next to the archive: .hatchzip and .hatchzip-tail.
  • Detects an unfinished extraction and offers to continue it from the saved journal.
  • Can resume after the device runs out of space because something else filled the disk.
  • Supports deliberate pause and resume from the Android UI.

Restore instead of losing the archive

  • If you decide to give up on an unfinished extraction, Restore archive rebuilds a normal archive containing exactly the entries that were not yet extracted.
  • The rebuilt archive opens in 7-Zip, WinRAR, unzip, tar, and other standard tools.
  • Files that already finished extracting stay in the output folder.
  • Restore gives you an exit path instead of leaving a partially consumed archive that only CronosZip understands.

Archive inspection before extraction

  • Shows the archive format, entry count, compressed size, uncompressed size, and whether it is encrypted.
  • Lists archive entries with paths, sizes, and types.
  • Search through entries directly in the app.
  • Run a checksum test over the archive without writing extracted files.
  • Detect overlapping entries, duplicate names, unsafe paths, and other layouts that in-place extraction cannot handle safely.

Passwords

  • Supports password-protected ZIP (ZipCrypto and AES) and 7z (AES, including encrypted file lists).
  • Supports password-protected RAR files through UnRAR.
  • Asks for the password in the app, and distinguishes a missing password from a wrong password.
  • Verifies the password on an entry before deleting archive bytes, so a typo cannot destroy the archive.
  • NEVER stores the password in the release notes, logs, or crash reports.

Split archives and volume sets

  • Opens ZIP and 7z split sets such as .001, .002, .003, and so on.
  • Opens multi-volume RAR sets.
  • Deletes each volume only after everything that reaches into it has been extracted.
  • Lets you start from any part of a split set; CronosZip finds the complete set.

Android-first interface

  • Jetpack Compose UI designed for one-handed phone use.
  • Dark glass-style interface with a liquid animated background.
  • Home screen with recent archives, safety reminders, and a clear path to start.
  • Built-in storage browser for archives and destination folders.
  • Extraction plan screen with a plain-language space report.
  • Live extraction screen with entry name, bytes completed, total bytes, commit progress, and archive size.
  • Settings screen for the keep-free reserve, keep-archive default, verify-first default, animations, and All files access.
  • Graceful handling of Android 11+ scoped storage via MANAGE_EXTERNAL_STORAGE for shared-storage locations.

Safety checks built into the engine

  • Rejects archive entries whose paths escape the destination folder.
  • Rejects entries that overlap each other.
  • Rejects archives with duplicate entry names where extraction would be ambiguous.
  • Rejects links that would interfere with real files or folders.
  • Never restores setuid or setgid bits.
  • Creates symlinks only after regular files are written, so nothing can be written through a link.
  • Verifies each entry's CRC-32 while extracting.
  • Stops at damaged data and leaves the damaged entry in the archive, together with everything still behind it.
  • With Keep archive enabled, the engine refuses all code paths that shrink, truncate, punch, or delete archive bytes.
  • Optional Verify first mode reads and checks every entry before deleting anything.

Format support

Format Status in 1.0.0
ZIP / ZIP64 Supported. Stored, Deflate, Deflate64, bzip2, LZMA, PPMd, XZ, and Zstandard entries. Entries past the 4 GiB mark are supported.
Self-extracting .exe ZIPs Supported.
7z, solid and non-solid Supported. LZMA2, LZMA, BCJ, bzip2, Deflate, PPMd, and Zstandard. Solid archives are freed one solid block at a time.
RAR 4 and RAR 5 Supported, including volume sets and password-protected files, via the bundled UnRAR decoder.
Solid RAR Supported only while keeping the archive. A solid RAR must decode front to back and cannot be resumed mid-way or freed progressively.
tar Supported, including long names, symlinks, and hard links.
.tar.gz / .tgz / .taz Supported, including multi-member gzip and split sets. Extracted from the front, freeing compressed bytes behind the decoder where the filesystem can punch holes.
Split .001, .002, ... sets of ZIP or 7z Supported.
.tar.zst / .tar.xz Not supported yet. Refused before extraction with a clear message.
Plain .gz / .zst / .xz / .bz2 streams that are not tar archives Not supported for in-place extraction. Refused with a clear message.

What changed on the way to this release

This is the first release, so the full history is included here.

Android application

  • Added the Android Jetpack Compose application and navigation flow: Home, file browser, archive details, extraction setup, live extraction, and settings.
  • Added the glass-style theme, wordmark, animated liquid background, cards, chips, buttons, and status pills.
  • Added recent-archive history with local persistence.
  • Added settings persistence for keep-free space, keep-archive, verify-first, and animations.
  • Added All files access handling for shared storage on modern Android.
  • Added storage-root discovery for internal storage, SD cards, and app-accessible folders.
  • Added archive filtering in the file browser, including split-volume suffixes.
  • Added password prompts and wrong-password feedback.
  • Added restore-archive confirmation and result reporting.
  • Added live progress events for bytes, committed archive bytes, current entry, phase, and totals.
  • Added cancellation/pause handling that leaves the journal resumable.
  • Added friendly native error mapping for password errors, no-space, existing files, damaged archives, busy archives, and unsupported in-place layouts.
  • Replaced colored card and button shadows with border/glow treatments to remove gray square artifacts on Android 8–9.
  • Fixed arrow icons to use auto-mirrored variants for right-to-left...
Read more