Framework

Flutter

Bindings are plain Dart files in your project. They have no registry and do no work at startup, so the AOT compiler removes everything you do not call.

Android (generate flutter)

iOS (generate ios)

Size

Release APK of the example with one Android API: 14,842,216 bytes, both when bindings were generated for that API only and for the entire SDK (14,842,216 bytes); the app without bindings: 14,426,402 bytes (+415,814 bytes, mostly package:jni's native helper).

Cost per call

Measured on an Android emulator in profile mode: about 1.00 µs per generated JNI call versus about 271 µs for a hand-written MethodChannel round trip. On the iOS simulator (debug mode only): about 34 ns per objc_msgSend getter versus 20.4 µs per MethodChannel round trip. Emulator and simulator figures are not device figures.