English | 简体中文
Android port of MNGA, an NGA (bbs.nga.cn)
client. Built with Jetpack Compose, on top of the same Rust logic backend
MNGA uses, linked in as liblogic.so over JNI.
| Home | Topic list | Topic detail | Topic detail |
|---|---|---|---|
![]() |
![]() |
![]() |
![]() |
- Download the latest APK from the Releases page:
app-release.apk— signed release build (recommended)app-debug.apk— debug build (built by CI on every push)
- Install and sign in with your NGA account on first launch.
mnga://deep links are supported, e.g.mnga://forum/f/722opens a forum directly; links copied to the clipboard are also detected and opened automatically when the app comes to the foreground.
app/— Compose UI, ported from the MNGA SwiftUI app.logic/— Android library module wrappingliblogic.soplus the generated protobuf Java/Kotlin sources.rust/— the Rust workspaceliblogic.sois built from, vendored from MNGA. See rust/README.md.
./gradlew assembleDebugOutput: app/build/outputs/apk/debug/app-debug.apk. JDK 17 required.
Gradle does not build the Rust side. liblogic.so is committed under
logic/src/main/jniLibs/, so a plain Gradle build needs no NDK or Rust
toolchain. After changing anything under rust/, rebuild and commit the
libraries:
rust/build-jni-libs.sh # liblogic.so for arm64-v8a, x86_64, x86
rust/gen-kotlin-protos.sh # only when rust/protos/ changedBoth need protoc; the first also needs cargo-ndk and an Android NDK.
- ci.yml builds the debug APK on every push/PR to
mainand uploads it as an artifact. - rust.yml rebuilds
liblogic.sofor all three ABIs and runs the Rust unit tests, on changes underrust/or on demand.
MNGA ships without a LICENSE file and its README reserves all rights, so this
port — including the Rust sources vendored under rust/ — is not
redistributable without permission from its author. Vendored sled keeps its own
MIT/Apache-2.0 license files in rust/logic/sled/.




