The examples in this folder illustrate how assets are built and bundled in Dart
and Flutter apps.

Currently two main asset types are supported in `package:hooks`:
  * Native libraries via `package:code_assets`
  * Data assets via `package:data_assets`

Note that Data assets are not yet consumable in Dart and Flutter.

Examples:

* Bundling C/C++/Objective-C source code in a package. This native code is built on the developers' machine when such package is a dependency.
  * [native_add_library/](native_add_library/) contains a library with C code.
    When Dart code in this library or dependent on this library is invoked, the
    C code must be built and bundled so that it can be used by the Dart code.
  * [native_add_app/](native_add_app/) has a dependency with C code.
    This app should declare nothing special. Dart and Flutter should check
    all dependencies for native code.
* Bundling prebuilt native libaries.
  * [download_asset/](download_asset/) is very similar to
    [native_add_library/](native_add_library/), but instead of building the
    native code on the machine of developers pulling in the package, the native
    libraries are prebuilt in GitHub actions and downloaded in the build hook.
* Bundling multiple dynamic libraries depending on each other.
  * [native_dynamic_linking/](native_dynamic_linking/) contains source code for
    3 native libraries that depend on each other and load each other with the
    native dynamic loader at runtime.
* Using system libraries
  * [system_library/](system_library/) contains a package using native libaries
    available on the host system where a Dart or Flutter app is deployed.
* Building dynamic libraries against `dart_api_dl.h`.
  * [use_dart_api/](use_dart_api/) contains a library with C code that invokes
    `dart_api_dl.h` to interact with the Dart runtime.
* Bundling all files in a directory as data assets.
  * [local_asset/](local_asset/) contains a package that bundles all files in
    the `assets/` directory as data assets.
* Transforming files and bundling them as data assets.
  * [transformer/](../../../hooks_runner/test_data/transformer/README.md)
    contains a package that transforms files and bundles the result as data
    assets. The hook uses caching internally to prevent retransforming files if
    not needed.
