Differences between kernelapi and api

Hi,

I’m having a look at the minimal mutli app firmware (https://github.com/MicroEJ/Example-MinimalMultiAppFirmware).
In com.microej.example.firmware.minimal.net\module.ivy, I can see that you define the firmware dependencies. What is the difference between <dependency org="ej.api" name="edc" rev="[1.2.0-RC0,2.0.0-RC0[" conf="provided" /> and <dependency org="com.microej.kernelapi" name="edc" rev="[1.0.0-RC0,2.0.0-RC0[" conf="kernelapi->default"/> ?

Thank you for your help,

Marc

Hi Marc,

There is indeed a difference between the two dependencies:

  • <dependency org="ej.api" name="edc" rev="[1.2.0-RC0,2.0.0-RC0[" conf="provided" /> is a library that provides the API of the foundation library EDC.
  • <dependency org="com.microej.kernelapi" name="edc" rev="[1.0.0-RC0,2.0.0-RC0[" conf="kernelapi->default"/> is a dependency containing a file (.api) for exposing API to applications using a Multi-Sandbox Firmware. This one opens every public API from the foundation library EDC to the sandboxed applications that will be used on-top of the minimal firmware you’ll build.

Using a different .api file you could restrain the set of APIs used to help secure or simplify your firmware.

Hope it’ll help!

Gaëtan for MicroEJ

1 Like

It does help, thank you Gaëtan.