Unlike the T150, extensions on Android do not run inside a container. They instead run directly on the tablet.
Consequently all tools used for running your extensions have to be available on the tablet.
The Java Runtime Environment needs to be packaged along with your extension.
You can build and embed a Java Virtual Machine yourself but it is easier to use a pre-built static version like this JRE17.
Along with the JRE you will need to provide a wrapper script that tells Smart Pendant how to run your extension.
For instance:
#!/bin/env sh
export JAVA_HOME=$(pwd)/<JRELocation>
export LD_LIBRARY_PATH=$JAVA_HOME/lib
chmod u+x $JAVA_HOME/bin/java
$JAVA_HOME/bin/java -cp $(printf '%s:' *.jar). <MyExtension>
For packaging instructions, refer to the packaging section below.
You can also refer to the Calculator example extension for code reference.
The .NET Runtime Environment needs to be packaged along with your extension.
Publish your dotnet application as self contained against bionic (see reference) like such:
dotnet publish --runtime linux-bionic-arm64 --self-contained true
Deep down your bin folder you will find a publish folder with inside your native executable along with the required .NET runtime library.
Since the program is native, a shell wrapper is not needed here, the program can be directly executed on the tablet.
For packaging instructions, refer to the packaging section below.
You can also refer to the TestExtension example for code reference.
Your extension is now ready to be packaged through SmartPackager.
SmartPackager --unprotected --package <MyExtension.yip> --new <MyExtensionTemplate>.jsonnet --archive <PathToArchiveFolder>
Remember to include your JRE for Java or the content of your publish folder for .NET inside your archive folder.