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 или ключи из памяти.Источник: github.com · пост в Telegram