diff --git a/scripts/dotnet/.gitignore b/scripts/dotnet/.gitignore
index 4dda52bb6d..92b313be22 100644
--- a/scripts/dotnet/.gitignore
+++ b/scripts/dotnet/.gitignore
@@ -3,6 +3,7 @@ macos-arm64
macos-x64
linux-x64
linux-arm64
+android-arm64
windows-arm64
windows-x64
windows-x86
diff --git a/scripts/dotnet/generate.py b/scripts/dotnet/generate.py
index 84db1f961b..9d93811d66 100755
--- a/scripts/dotnet/generate.py
+++ b/scripts/dotnet/generate.py
@@ -33,6 +33,25 @@ def get_dict():
}
+def process_android(s, rid):
+ libs = [
+ "libonnxruntime.so",
+ "libsherpa-onnx-c-api.so",
+ ]
+ prefix = f"{src_dir}/android-{rid}/"
+ libs = [prefix + lib for lib in libs]
+ libs = "\n ;".join(libs)
+
+ d = get_dict()
+ d["dotnet_rid"] = f"android-{rid}"
+ d["libs"] = libs
+
+ environment = jinja2.Environment()
+ template = environment.from_string(s)
+ s = template.render(**d)
+ with open(f"./android-{rid}/sherpa-onnx.runtime.csproj", "w") as f:
+ f.write(s)
+
def process_linux(s, rid):
libs = [
"libonnxruntime.so",
@@ -101,6 +120,7 @@ def main():
process_macos(s, "arm64")
process_linux(s, "x64")
process_linux(s, "arm64")
+ process_android(s, "arm64")
process_windows(s, "x64")
process_windows(s, "x86")
process_windows(s, "arm64")
diff --git a/scripts/dotnet/run.sh b/scripts/dotnet/run.sh
index f4fe081389..91342fed9f 100755
--- a/scripts/dotnet/run.sh
+++ b/scripts/dotnet/run.sh
@@ -24,7 +24,9 @@ export src_dir
mkdir -p $src_dir
pushd $src_dir
-mkdir -p linux-x64 linux-arm64 macos-x64 macos-arm64 windows-x64 windows-x86 windows-arm64
+RIDS=(linux-x64 linux-arm64 android-arm64 macos-x64 macos-arm64 windows-x64 windows-x86 windows-arm64)
+
+mkdir -p ${RIDS[@]}
linux_x64_wheel_filename=sherpa_onnx_core-${SHERPA_ONNX_VERSION}-py3-none-manylinux2014_x86_64.whl
linux_x64_wheel=$src_dir/$linux_x64_wheel_filename
@@ -32,6 +34,9 @@ linux_x64_wheel=$src_dir/$linux_x64_wheel_filename
linux_arm64_wheel_filename=sherpa_onnx_core-${SHERPA_ONNX_VERSION}-py3-none-manylinux2014_aarch64.whl
linux_arm64_wheel=$src_dir/$linux_arm64_wheel_filename
+android_arm64_tarball_filename=sherpa-onnx-v$SHERPA_ONNX_VERSION-android.tar.bz2
+android_arm64_tarball=$src_dir/$android_arm64_tarball_filename
+
macos_x64_wheel_filename=sherpa_onnx_core-${SHERPA_ONNX_VERSION}-py3-none-macosx_10_15_x86_64.whl
macos_x64_wheel=$src_dir/$macos_x64_wheel_filename
@@ -83,6 +88,26 @@ if [ ! -f $src_dir/linux-arm64/libsherpa-onnx-c-api.so ]; then
cd ..
fi
+if [ ! -f $src_dir/android-arm64/libsherpa-onnx-c-api.so ]; then
+ echo "---android arm64---"
+ cd android-arm64
+ mkdir -p tarball
+ cd tarball
+ if [ -f $android_arm64_tarball ]; then
+ cp -v $android_arm64_tarball .
+ else
+ curl -OL "https://github.com/k2-fsa/sherpa-onnx/releases/download/v$SHERPA_ONNX_VERSION/$android_arm64_tarball_filename"
+ fi
+ tar xjf $android_arm64_tarball_filename
+ cp -v jniLibs/arm64-v8a/lib{onnxruntime,sherpa-onnx-c-api}.so ../
+
+ cd ..
+
+ rm -rf tarball
+ ls -lh
+ cd ..
+fi
+
if [ ! -f $src_dir/macos-x64/libsherpa-onnx-c-api.dylib ]; then
echo "--- macOS x86_64---"
cd macos-x64
@@ -182,46 +207,18 @@ fi
popd
-mkdir -p macos-x64 macos-arm64 linux-x64 linux-arm64 windows-x64 windows-x86 windows-arm64 all
+mkdir -p ${RIDS[@]} all
cp ./*.cs all
./generate.py
-pushd linux-x64
-dotnet build -c Release
-dotnet pack -c Release -o ../packages
-popd
-
-pushd linux-arm64
-dotnet build -c Release
-dotnet pack -c Release -o ../packages
-popd
-
-pushd macos-x64
-dotnet build -c Release
-dotnet pack -c Release -o ../packages
-popd
-
-pushd macos-arm64
-dotnet build -c Release
-dotnet pack -c Release -o ../packages
-popd
-
-pushd windows-x64
-dotnet build -c Release
-dotnet pack -c Release -o ../packages
-popd
-
-pushd windows-x86
-dotnet build -c Release
-dotnet pack -c Release -o ../packages
-popd
-
-pushd windows-arm64
-dotnet build -c Release
-dotnet pack -c Release -o ../packages
-popd
+for rid in "${RIDS[@]}"; do
+ pushd "$rid"
+ dotnet build -c Release
+ dotnet pack -c Release -o ../packages
+ popd
+done
pushd all
dotnet build -c Release
diff --git a/scripts/dotnet/sherpa-onnx.csproj.in b/scripts/dotnet/sherpa-onnx.csproj.in
index d81a883e5a..8fed0cbe3d 100644
--- a/scripts/dotnet/sherpa-onnx.csproj.in
+++ b/scripts/dotnet/sherpa-onnx.csproj.in
@@ -4,8 +4,8 @@
README.md
Library
10.0
- net8.0;net7.0;net6.0;net45;net40;net35;net20;netstandard2.0
- linux-x64;linux-arm64;osx-x64;osx-arm64;win-x64;win-x86;win-arm64
+ net10.0;net8.0;net7.0;net6.0;net45;net40;net35;net20;netstandard2.0
+ linux-x64;linux-arm64;android-arm64;osx-x64;osx-arm64;win-x64;win-x86;win-arm64
true
sherpa-onnx
{{ version }}
@@ -50,6 +50,7 @@
+
diff --git a/scripts/dotnet/sherpa-onnx.csproj.runtime.in b/scripts/dotnet/sherpa-onnx.csproj.runtime.in
index f21c3da37a..acb75364a7 100644
--- a/scripts/dotnet/sherpa-onnx.csproj.runtime.in
+++ b/scripts/dotnet/sherpa-onnx.csproj.runtime.in
@@ -3,7 +3,7 @@
Apache-2.0
README.md
Library
- net8.0;net7.0;net6.0;net45;net40;net35;net20;netstandard2.0
+ net10.0;net8.0;net7.0;net6.0;net45;net40;net35;net20;netstandard2.0
{{ dotnet_rid }}
sherpa-onnx
{{ version }}