| # In-App Java Example | |
| This example shows how to write custom java code in `android/app/src` and call | |
| it using bindings generated by JNIgen. | |
| ### How to run this example: | |
| - Run `flutter run` to run the app. | |
| ### General steps | |
| These are general steps to integrate Java code into a Flutter project using | |
| JNIgen. | |
| - Place Java code in a suitable package folder under the `android/` subproject | |
| of the flutter app. | |
| - Create a JNIgen configuration script like `tool/jnigen.dart` in this | |
| example. | |
| - Run `flutter pub get`. | |
| - Generate bindings by running that script with `dart run`. | |
| - To prevent tree shaking of your custom classes (which are always accessed | |
| reflectively in JNI) use either the `@Keep` annotation | |
| (`androidx.annotation.Keep`) for code written in the application itself, or | |
| a [proguard-rules file](https://github.com/dart-lang/native/blob/main/pkgs/jnigen/example/in_app_java/android/app/proguard-rules.pro) | |
| for external libraries. | |
| - Build and run the app. |