pedometer/README.md
This is a demo for some of our tooling around calling platform APIs directly from dart code. This repository represents a demo of a plugin that leverages FFIgen & JNIgen. There is also an example pedometer app that uses the bindings generated from these tools.
These tools are both experimental and are currently a work in progress. If you find any issues or have feedback, please file it on the corresponding GitHub repositories.
The bindings that allow the Dart code to call the platform code have
already been generated in the \lib folder.
You can regenerate them by following the steps below:
Configuration of FFIgen for the
CoreMotion framework
is in the ffigen.yaml file.
FFIgen currently does not support autogenerating code to handle callbacks.
So, there are a few extra steps needed to
appropriately handle callbacks in Objective-C.
You can read more about this limitation on
dart.dev.
dart run ffigen --config ffigen.yaml
Configuration of JNIgen for the
HealthConnect API
is in the jnigen.yaml file.
Build an Android APK file from the example app. Currently, JNIgen requires at least one APK build to obtain the classpaths of Android Gradle libraries.
cd example && flutter build apk
Return to the /pedometer directory and run jnigen:
cd .. && dart run jnigen --config jnigen.yaml
The example app is located in the /example directory,
and the following commands assume they are being run from that location.
Note that step counting is only available on physical devices.
flutter run and choose your physical device.flutter run and choose your physical device.src: Contains the native source code, and a CMakeLists.txt file for
building that source code into a dynamic library.
lib: Contains the Dart code that defines the API of the plugin and
calls into the native code using dart:ffi.
platform folders (ios etc.): Contain the build files for
building and bundling the native code library with the platform application.
example: Contains the native source code for building
that source code into a dynamic library.