# NeoApk: pure Kotlin движок для ZIP, 16KB alignment и подписи APK

> 2026-09-28 · AI Release · @ai_release1

> #Android #Kotlin #APK #ZIP

### ⚡ Главное за 5 секунд - Суть: NeoApk — pure Kotlin/JVM библиотека (package `top.nkbe.nza`) для сборки, выравнивания и подписи Android APK. В одном инструменте объединены ZIP-движок, 16KB page-alignment упаковщик и подписант V2/V3. - Где доступно: исходники на GitHub (HSSkyBoy/NeoApk), координаты `top.nkbe:NeoApk:1.0.1`, подключение через `mavenLocal()` или composite build. - Ограничение: требуется JDK 21; для сборки из исходников — Kotlin 2.1.x. Чтение BKS-хранилищ требует BouncyCastle provider на JVM. ### 🔍 Что обнаружено NeoApk — это pure Kotlin библиотека без runtime-зависимостей и нативных бинарников; она работает на десктопных JVM и на Android. Проект заменяет три отдельные части APK-инструментария: отказоустойчивый ZIP reader/writer вместо apkzlib, ABI-aware выравнивание вместо zipalign и подпись APK Signature Scheme v2/v3 вместо apksigner. NeoApk является упаковочным движком NPatch, который приводится как пример реального использования. ZIP-движок умеет читать архивы с malformed/truncated/non-standard заголовками, писать записи последовательно через буфер 128KB, копировать сжатые байты без повторного inflate/deflate, встраивать целые APK как STORED host-записи и создавать virtual entries для файлов внутри них. Поддерживается ZIP64 для архивов больше 4GB и более 65 535 записей. Выравнивание: STORED-записи выравниваются автоматически — для host-записей и `lib/arm64-v8a`, `lib/x86_64` это 16384 байта, для остальных `.so` — 4096, для `resources.arsc` и прочих — 4. Virtual entries наследуют выравнивание host. Подписант V2V3SchemeSigner подписывает APK на месте по v2/v3, v3 объявляет SDK range 28..Int.MAX_VALUE. Для APK до 2GB добавляется APK Verity Merkle-tree; выше 2GB алгоритмы verity отключаются, чтобы избежать integer overflow в Android 15. При подписи существующий APK Signing Block заменяется, а `META-INF/` не трогается. ### 💡 Почему это важно NeoApk закрывает три типовые задачи репакинга APK одним инструментом на чистом Kotlin без внешних зависимостей. Для Android-разработчиков это упрощает сборку или модификацию пакетов: вместо связки zipalign, apksigner и отдельной ZIP-библиотеки нужен один API с поддержкой 16KB-выравнивания, устойчивого чтения и подписи. Отсутствие нативных компонентов и runtime-зависимостей облегчает интеграцию в JVM- и Android-проекты, а встроенные host/virtual entries позволяют компактно и быстро упаковывать вложенные APK. ### 🧩 Контекст Проект опубликован на GitHub. Библиотека `top.nkbe.nza` доступна как `top.nkbe:NeoApk:1.0.1`; установка возможна через local Maven (`./gradlew publishToMavenLocal`) или composite build, как это делает NPatch. Публичный API аннотирован `@JvmStatic`/`@Throws`, поэтому потребители могут использовать его из plain Java. Поддерживаются ключи RSA (PSS и PKCS#1 v1.5), ECDSA и DSA, хранилища BKS, JKS, PKCS12 или ключи из памяти.

[Источник](https://github.com/HSSkyBoy/NeoApk)
