| Crates.io | blinc_platform_android |
| lib.rs | blinc_platform_android |
| version | 0.1.12 |
| created_at | 2026-01-14 18:57:16.763933+00 |
| updated_at | 2026-01-19 01:07:46.861248+00 |
| description | Blinc Android platform - native activity, JNI bridge, and input handling |
| homepage | |
| repository | https://github.com/project-blinc/Blinc |
| max_upload_size | |
| id | 2043465 |
| size | 137,861 |
Part of the Blinc UI Framework
This crate is a component of Blinc, a GPU-accelerated UI framework for Rust. For full documentation and guides, visit the Blinc documentation.
Android platform implementation for Blinc UI.
blinc_platform_android provides native Android integration using the NDK, including activity lifecycle, touch input, and GPU rendering via Vulkan.
use blinc_platform_android::android_main;
#[no_mangle]
pub extern "C" fn ANativeActivity_onCreate(
activity: *mut ANativeActivity,
saved_state: *mut c_void,
saved_state_size: usize,
) {
android_main(activity, |ctx| {
// Build your UI
div()
.w_full()
.h_full()
.child(text("Hello Android!"))
});
}
[lib]
crate-type = ["cdylib"]
[dependencies]
blinc_platform_android = "0.1"
android {
defaultConfig {
ndk {
abiFilters 'arm64-v8a', 'x86_64'
}
}
externalNativeBuild {
ndkBuild {
path 'src/main/jni/Android.mk'
}
}
}
<application
android:hasCode="false"
android:allowBackup="true">
<activity
android:name="android.app.NativeActivity"
android:exported="true"
android:configChanges="orientation|screenSize|keyboardHidden">
<meta-data
android:name="android.app.lib_name"
android:value="myapp" />
<intent-filter>
<action android:name="android.intent.action.MAIN" />
<category android:name="android.intent.category.LAUNCHER" />
</intent-filter>
</activity>
</application>
fn handle_touch(event: TouchEvent) {
for pointer in event.pointers() {
match pointer.action {
PointerAction::Down => {
// Touch started
}
PointerAction::Move => {
// Touch moved
}
PointerAction::Up => {
// Touch ended
}
}
}
}
use blinc_platform_android::AndroidAssetLoader;
let loader = AndroidAssetLoader::new(activity);
// Load from assets/ directory in APK
let data = loader.load("images/logo.png")?;
// Check if asset exists
if loader.exists("config.json") {
let config = loader.load("config.json")?;
}
android_main(activity, |ctx| {
ctx.on_start(|| {
// Activity started
});
ctx.on_resume(|| {
// Activity resumed
});
ctx.on_pause(|| {
// Activity paused - save state
});
ctx.on_stop(|| {
// Activity stopped
});
ctx.on_destroy(|| {
// Cleanup
});
build_ui()
});
# Build for Android
cargo ndk -t arm64-v8a -t x86_64 -o ./app/src/main/jniLibs build --release
# Or using cargo-apk
cargo apk build --release
rustup target add aarch64-linux-android
rustup target add x86_64-linux-android
cargo install cargo-ndk
MIT OR Apache-2.0