NewYour coding agent can read the release notes before it upgrades.Set up the MCP server →
crates.io · #1200 most downloaded on crates.io
Safe Rust bindings to the Android NDK
Last release 2 years ago
no release in 18 months
Release timing varies
gaps range from 5 weeks to 13 months
Nearly every release is documented
notes for 10 of 10 stable releases
1 version withdrawn
withdrawn after publishing
6 years old
12 releases · first in 2020
One column per quarter.
Move MediaFormat from media::media_codec to its own media::media_format module.
MediaFormat from media::media_codec to its own media::media_format module. (#442)MediaFormat::copy() and MediaFormat::clear() from API level 29. (#449)fn set_*() and fn str() as taking self by &mut. (#452)dyn Fn* types to implement Send when the FFI implementation invokes them on a separate thread: (#455)
audio::AudioStreamDataCallback;audio::AudioStreamErrorCallback;media::image_reader::BufferRemovedListener;media::image_reader::ImageListener;media::media_codec::ErrorCallback;media::media_codec::FormatChangedCallback;media::media_codec::InputAvailableCallback;media::media_codec::OutputAvailableCallback.Boxed callbacks after registering new ones, instead of before. (#455)from_java() constructor, available since API level 33. (#456)from_java() constructors to KeyEvent and MotionEvent, available since API level 31. (#456)Image-acquire functions. (#457)ImageReader::acquire_latest_image_async() unsafe to match the safety requirements on ImageReader::acquire_next_image_async(). (#457)SourceClass bitflag and provide Source::class() getter. (#458)bitflags implementations consider all (including unknown) bits in negation and all(). (#458)non_exhaustive and fix repr types. (#459)TRANSFORM_ prefix from NativeWindowTransform variants. (#460)HardwareBufferUsage to bitflags. (#461)BitmapCompressError behind missing api-level-30 feature. (#462)libnativewindow for most API >= 26 functions. (#465)AudioResult variant enum into AudioError. (#467)DataSpaceRange::Unspecified variant. (#468)Send marker when adding fd event callbacks on ForeignLooper. (#469)ndk-sys 0.6.0. (#472)event: Add tool_type getter for Pointer .
tool_type getter for Pointer. (#323)pre_dispatch() again, as per documentation. (#325)raw-window-handle 0.5.1, num_enum's catch_all with arbitrary enum discriminants. (#388, #431)jni dependency for doctest example from 0.19 to 0.21. (#390)ndk-sys 0.5.0. (#370)bitflags crate from 1 to 2. (#394)try_format() to AndroidBitmapInfo to handle unexpected formats without panicking. (#395)Font bindings. (#397)num_enum crate from 0.5.1 to 0.7. (#398, #419)media" error types and helpers to a new media_error module. (#399, #432)MaybeUninit bytes in buffer_mut(). (#403)lock() to blit raw pixel data. (#404)YCbCr_P010 and R8_UNORM variants. (#405)is_allocated() and open_file_descriptor() methods. (#409)remove_fd() to unregister events/callbacks for a file descriptor. (#416)BorrowedFd and OwnedFd to clarify possible ownership transitions. (#417)ndk-sys 0.5.0. (#420)sync.h. (#423)AndroidBitmapInfoFlags. (#424)set_buffers_transform(), try_allocate_buffers() and set_frame_rate*(). (#425)ASharedMemory. (#427)id() to retrieve a system-wide unique identifier for a HardwareBuffer. (#428)Android prefix from structs and enums, and Bitmap from Result. (#430)raw-window-handle 0.5 support is now behind an optional rwh_05 crate feature and raw-window-handle 0.4 and 0.6 support is provided via the new rwh_04 and (default-enabled) rwh_06 crate features. (#434)event value to file descriptor poll callback. (#435)HardwareBufferFormat is no longer exported from hardware_buffer and native_window, and can only be reached through the hardware_buffer_format module. (#436)get_ prefixes have been removed from all public functions in light of the C-GETTER convention. (#437)DataSpace type and relevant functions on Bitmap and NativeWindow. (#438)Bitmap::compress() and Bitmap::compress_raw() functions. (#440)BitmapError into a non_exhaustive enum. (#440)AudioErrorResult to AudioResult and turn into a non_exhaustive enum. (#441)adb device serial parameter to detect_abi() and Apk::{install,start}(). (#329).exe extension for adb on Windows inside detect_abi(). (#339)start() now returns the PID of the started app process (useful for passing to adb logcat --pid). (#331)ndk_gdb() function from cargo-apk with the appropriate script extension across platforms. (#330, #258)adb path to ndk-gdb, allowing it to run without adb in PATH. (#343)Android.mk to fix ndk-gdb on Windows. (#344)ndk-gdb to block app start until the debugger is attached. (#345)ANDROID_SDK_ROOT as deprecated instead of ANDROID_HOME. (#346)fn android_dir() to fn android_user_home() and seed with ANDROID_SDK_HOME or ANDROID_USER_HOME. (#347)Nothing published for this version
hardware_buffer: Make HardwareBuffer::as_ptr() public for interop with Vulkan.
HardwareBuffer::as_ptr() public for interop with Vulkan. (#213)Configuration::country() now returns None when the country is unset (akin to Configuration::language()). (#220)MediaCodec and MediaFormat bindings. (#216)ndk-sys 0.4.0 and use new enum newtype wrappers. (#245)release/acquire for Drop and Clone respectively. (#207)aaudio to audio and drop A prefix. (#273)HasRawWindowHandle directly on NativeWindow. (#274, #319)CStr return types with Path. (#279)format() getter and set_buffers_geometry() setter. (#276)set_window_format() setter. (#277)set_window_flags() to change window behavior. (#278)SurfaceTexture bindings. (#267)get_event() now returns a Result with std::io::Error; InputQueueError has been removed. (#292)has_events() now returns a bool directly without being wrapped in Result. (#294)HardwareBufferError has been removed and replaced with std::io::Error in return types. (#295)HardwareBuffer leak on buffers returned from AndroidBitmap::get_hardware_buffer(). (#296)jni dependency for doctest example from 0.18 to 0.19. (#300)HardwareBufferDesc fields pub. (#313)hardware_buffer and trace features in favour of using api-level-26 or api-level-23 directly. (#320)Generate against upstream NDK build 11769913 .
ndk-sys 0.3.0 and migrate to jni-sys types that it now directly uses in its bindings. (#209 / #214)Breaking: Regenerate against NDK 25.2.9519653 with rust-bindgen 0.66.0 . ( #324 , #370 )
add_fd_with_callback ident with constant value ALOOPER_POLL_CALLBACK,
as per https://developer.android.com/ndk/reference/group/looper#alooper_addfd.add_fd_with_callback.#[cfg(feature)].fn get_allowed_capture_policy().api-level-30 feature to fn screen_round().Breaking: Model looper file descriptor events integer as bitflags.
bitflags.Breaking: Looper ident not passed in data pointer anymore. attach_looper now only sets the ident field when attaching an InputQueue to a ForeignLooper
ident not passed in data pointer anymore.
attach_looper now only sets the ident field when attaching an
InputQueue to a ForeignLooper.
If you are relying on Poll::Event::data to tell event fd and
input queue apart, please use Poll::Event::ident and the new
constants introduced in ndk-glue!Fix documentation build on docs.rs
Breaking: Updated to use ndk-sys 0.2.0
media bindingsbitmap and hardware_buffer bindingsaaudio bindingstrace feature for native tracingNothing published for this version
- Initial release! 🎉
Your coding agent can read these notes before it upgrades. Set up the MCP server →