The `COMPONENT_NAME` variables were in the `<package_name>/<class_name>` format, but since Termux plugin apps like Termux:API may be hosted in main Termux app itself, so for such cases the package name would be for main Termux app at runtime instead of Termux:API app, so `TERMUX_API_APP__PACKAGE_NAME` will be dynamically exported as `com.termux` instead of `com.termux.api` by the app, and receiver should be called with `$TERMUX_API_APP__PACKAGE_NAME/$TERMUX_API_APP__ANDROID_API__ANDROID_API_RECEIVER__CLASS_NAME` by reading environment variables instead of build time value of `$TERMUX_API_APP__API_RECEIVER_BROADCASTRECEIVER__COMPONENT_NAME`.
Following variables have been renamed:
- `TERMUX_APP__SHELL_ACTIVITY__CLASS_NAME` to `TERMUX_APP__SHELL_API__SHELL_API_ACTIVITY__CLASS_NAME`
- `TERMUX_APP__SHELL_SERVICE__CLASS_NAME` to `TERMUX_APP__SHELL_API__SHELL_API_SERVICE__CLASS_NAME`
- `TERMUX_APP__RUN_COMMAND_SERVICE__CLASS_NAME` to `TERMUX_APP__RUN_COMMAND_API__RUN_COMMAND_API_SERVICE__CLASS_NAME`
- `TERMUX_APP__DATA_SENDER_BROADCASTRECEIVER__CLASS_NAME` to `TERMUX_APP__DATA_SENDER_API__DATA_SENDER_API_RECEIVER__CLASS_NAME`
- `TERMUX_API_APP__API_RECEIVER_BROADCASTRECEIVER__CLASS_NAME` to `TERMUX_API_APP__ANDROID_API__ANDROID_API_RECEIVER__CLASS_NAME`
The new API variables format is `TERMUX_*APP__<API_SERVICE_NAME>__<API_CLASS_NAME>__*`. An API service can contain multiple classes to manage different parts/components, and additional helper classes can exist too for an API like to request permissions, or for configuration, etc.
The Termux app shell activity (`TermuxActivity`) is part of the shell service, just like Termux app shell service (`TermuxService`), so they are now both under the same `TERMUX_APP__SHELL_SERVICE__` scope. Note that `TermuxActivity` is the Termux app home activity. but may not be for Termux forks, and will be provided as like `TermuxShellApiActivity`, but target class name for intents could vary, and hence variables should be read from environment at runtime instead of build time hardcoded values.
- Depend on `protobuf` explicitly at runtime: fixes `CANNOT LINK EXECUTABLE "telegram-desktop": library "libprotobuf-lite.so" not found: needed by main executable`
- Migrate from `protobuf-static` to `libprotobuf` (pulled in by `protobuf`)
- `libprotobuf`:
- conflict with `protobuf-static` (because of `libupb.a`)
- add license file for `libutf8-range`
- `protobuf-static`:
- align `TERMUX_PKG_REVISION` with `libprotobuf`
- conflict with `libprotobuf` (because of `libupb.a`)
- provide its own `libutf8-range` and `protoc` (because of conflict with `libprotobuf` preventing it from depending on `protobuf` [which is `protoc`])
- add license file for `libutf8-range`