Fangjun Kuang
Committed by GitHub

Provide sherpa-onnx.aar for Android (#1615)

正在显示 44 个修改的文件 包含 694 行增加3 行删除
@@ -32,7 +32,7 @@ concurrency: @@ -32,7 +32,7 @@ concurrency:
32 32
33 jobs: 33 jobs:
34 build-android-libs: 34 build-android-libs:
35 - name: Android for ${{ matrix.os }} 35 + name: Android libs
36 runs-on: ${{ matrix.os }} 36 runs-on: ${{ matrix.os }}
37 strategy: 37 strategy:
38 fail-fast: false 38 fail-fast: false
@@ -44,6 +44,11 @@ jobs: @@ -44,6 +44,11 @@ jobs:
44 with: 44 with:
45 fetch-depth: 0 45 fetch-depth: 0
46 46
  47 + - name: ccache
  48 + uses: hendrikmuhs/ccache-action@v1.2
  49 + with:
  50 + key: ${{ matrix.os }}-android-jni
  51 +
47 - name: Display NDK HOME 52 - name: Display NDK HOME
48 shell: bash 53 shell: bash
49 run: | 54 run: |
@@ -53,6 +58,9 @@ jobs: @@ -53,6 +58,9 @@ jobs:
53 - name: build android arm64-v8a 58 - name: build android arm64-v8a
54 shell: bash 59 shell: bash
55 run: | 60 run: |
  61 + export CMAKE_CXX_COMPILER_LAUNCHER=ccache
  62 + export PATH="/usr/lib/ccache:/usr/local/opt/ccache/libexec:$PATH"
  63 +
56 export ANDROID_NDK=$ANDROID_NDK_LATEST_HOME 64 export ANDROID_NDK=$ANDROID_NDK_LATEST_HOME
57 ./build-android-arm64-v8a.sh 65 ./build-android-arm64-v8a.sh
58 mkdir -p jniLibs/arm64-v8a/ 66 mkdir -p jniLibs/arm64-v8a/
@@ -62,6 +70,9 @@ jobs: @@ -62,6 +70,9 @@ jobs:
62 - name: build android armv7-eabi 70 - name: build android armv7-eabi
63 shell: bash 71 shell: bash
64 run: | 72 run: |
  73 + export CMAKE_CXX_COMPILER_LAUNCHER=ccache
  74 + export PATH="/usr/lib/ccache:/usr/local/opt/ccache/libexec:$PATH"
  75 +
65 export ANDROID_NDK=$ANDROID_NDK_LATEST_HOME 76 export ANDROID_NDK=$ANDROID_NDK_LATEST_HOME
66 ./build-android-armv7-eabi.sh 77 ./build-android-armv7-eabi.sh
67 mkdir -p ./jniLibs/armeabi-v7a/ 78 mkdir -p ./jniLibs/armeabi-v7a/
@@ -71,6 +82,9 @@ jobs: @@ -71,6 +82,9 @@ jobs:
71 - name: build android x86_64 82 - name: build android x86_64
72 shell: bash 83 shell: bash
73 run: | 84 run: |
  85 + export CMAKE_CXX_COMPILER_LAUNCHER=ccache
  86 + export PATH="/usr/lib/ccache:/usr/local/opt/ccache/libexec:$PATH"
  87 +
74 export ANDROID_NDK=$ANDROID_NDK_LATEST_HOME 88 export ANDROID_NDK=$ANDROID_NDK_LATEST_HOME
75 ./build-android-x86-64.sh 89 ./build-android-x86-64.sh
76 mkdir -p ./jniLibs/x86_64 90 mkdir -p ./jniLibs/x86_64
@@ -80,6 +94,9 @@ jobs: @@ -80,6 +94,9 @@ jobs:
80 - name: build android x86 94 - name: build android x86
81 shell: bash 95 shell: bash
82 run: | 96 run: |
  97 + export CMAKE_CXX_COMPILER_LAUNCHER=ccache
  98 + export PATH="/usr/lib/ccache:/usr/local/opt/ccache/libexec:$PATH"
  99 +
83 export ANDROID_NDK=$ANDROID_NDK_LATEST_HOME 100 export ANDROID_NDK=$ANDROID_NDK_LATEST_HOME
84 ./build-android-x86.sh 101 ./build-android-x86.sh
85 mkdir -p ./jniLibs/x86 102 mkdir -p ./jniLibs/x86
@@ -143,3 +160,129 @@ jobs: @@ -143,3 +160,129 @@ jobs:
143 file_glob: true 160 file_glob: true
144 overwrite: true 161 overwrite: true
145 file: sherpa-onnx-*-android.tar.bz2 162 file: sherpa-onnx-*-android.tar.bz2
  163 +
  164 + build-android-aar:
  165 + needs: [build-android-libs]
  166 + name: Android AAR
  167 + runs-on: ${{ matrix.os }}
  168 + strategy:
  169 + fail-fast: false
  170 + matrix:
  171 + os: [ubuntu-latest]
  172 +
  173 + steps:
  174 + - uses: actions/checkout@v4
  175 + with:
  176 + fetch-depth: 0
  177 +
  178 + # https://github.com/actions/setup-java
  179 + - uses: actions/setup-java@v4
  180 + with:
  181 + distribution: 'temurin' # See 'Supported distributions' for available options
  182 + java-version: '21'
  183 +
  184 + - name: Display NDK HOME
  185 + shell: bash
  186 + run: |
  187 + echo "ANDROID_NDK_LATEST_HOME: ${ANDROID_NDK_LATEST_HOME}"
  188 + ls -lh ${ANDROID_NDK_LATEST_HOME}
  189 +
  190 + - name: Retrieve artifact
  191 + uses: actions/download-artifact@v4
  192 + with:
  193 + name: sherpa-onnx-android-libs
  194 + path: /tmp/jniLibs
  195 +
  196 + - name: Show jni libs
  197 + shell: bash
  198 + run: |
  199 + ls -lh /tmp/jniLibs
  200 +
  201 + # drwxr-xr-x 2 runner docker 4.0K Dec 12 06:56 arm64-v8a
  202 + # drwxr-xr-x 2 runner docker 4.0K Dec 12 06:56 armeabi-v7a
  203 + # drwxr-xr-x 2 runner docker 4.0K Dec 12 06:56 x86
  204 + # drwxr-xr-x 2 runner docker 4.0K Dec 12 06:56 x86_64
  205 + #
  206 + - name: Copy libs
  207 + shell: bash
  208 + run: |
  209 + for arch in arm64-v8a armeabi-v7a x86 x86_64; do
  210 + cp -v /tmp/jniLibs/$arch/* android/SherpaOnnxAar/sherpa_onnx/src/main/jniLibs/$arch/
  211 + done
  212 +
  213 + - name: Check libs
  214 + shell: bash
  215 + run: |
  216 + ls -lh android/SherpaOnnxAar/sherpa_onnx/src/main/jniLibs/*
  217 +
  218 + - name: Build aar
  219 + shell: bash
  220 + run: |
  221 + cd android/SherpaOnnxAar
  222 +
  223 + ./gradlew :sherpa_onnx:assembleRelease
  224 +
  225 + - name: Display aar
  226 + shell: bash
  227 + run: |
  228 + cd android/SherpaOnnxAar
  229 +
  230 + ls -lh ./sherpa_onnx/build/outputs/aar/sherpa_onnx-release.aar
  231 + cp ./sherpa_onnx/build/outputs/aar/sherpa_onnx-release.aar ../../
  232 +
  233 +
  234 + - name: Rename aar
  235 + shell: bash
  236 + run: |
  237 + SHERPA_ONNX_VERSION=$(grep "SHERPA_ONNX_VERSION" ./CMakeLists.txt | cut -d " " -f 2 | cut -d '"' -f 2)
  238 + echo "SHERPA_ONNX_VERSION=$SHERPA_ONNX_VERSION" >> "$GITHUB_ENV"
  239 +
  240 + mv sherpa_onnx-release.aar sherpa-onnx-${SHERPA_ONNX_VERSION}.aar
  241 +
  242 + - uses: actions/upload-artifact@v4
  243 + with:
  244 + name: sherpa-onnx-android-aar
  245 + path: ./*.aar
  246 +
  247 + # https://huggingface.co/docs/hub/spaces-github-actions
  248 + - name: Publish to huggingface
  249 + if: (github.repository_owner == 'csukuangfj' || github.repository_owner == 'k2-fsa') && (github.event_name == 'push' || github.event_name == 'workflow_dispatch')
  250 + env:
  251 + HF_TOKEN: ${{ secrets.HF_TOKEN }}
  252 + uses: nick-fields/retry@v3
  253 + with:
  254 + max_attempts: 20
  255 + timeout_seconds: 200
  256 + shell: bash
  257 + command: |
  258 + git config --global user.email "csukuangfj@gmail.com"
  259 + git config --global user.name "Fangjun Kuang"
  260 + du -h -d1 .
  261 + ls -lh
  262 +
  263 + rm -rf huggingface
  264 + export GIT_CLONE_PROTECTION_ACTIVE=false
  265 + GIT_LFS_SKIP_SMUDGE=1 git clone https://csukuangfj:$HF_TOKEN@huggingface.co/csukuangfj/sherpa-onnx-libs huggingface
  266 +
  267 + cd huggingface
  268 + dst=android/aar
  269 + mkdir -p $dst
  270 +
  271 + cp -v ../*.aar $dst
  272 +
  273 + git status
  274 + git lfs track "*.aar"
  275 +
  276 + git add .
  277 +
  278 + git commit -m "upload sherpa-onnx-${SHERPA_ONNX_VERSION}.aar"
  279 +
  280 + git push https://csukuangfj:$HF_TOKEN@huggingface.co/csukuangfj/sherpa-onnx-libs main
  281 +
  282 + - name: Release android aar
  283 + if: (github.repository_owner == 'csukuangfj' || github.repository_owner == 'k2-fsa') && github.event_name == 'push' && contains(github.ref, 'refs/tags/')
  284 + uses: svenstaro/upload-release-action@v2
  285 + with:
  286 + file_glob: true
  287 + overwrite: true
  288 + file: ./*.aar
  1 +*.iml
  2 +.gradle
  3 +/local.properties
  4 +/.idea/caches
  5 +/.idea/libraries
  6 +/.idea/modules.xml
  7 +/.idea/workspace.xml
  8 +/.idea/navEditor.xml
  9 +/.idea/assetWizardSettings.xml
  10 +.DS_Store
  11 +/build
  12 +/captures
  13 +.externalNativeBuild
  14 +.cxx
  15 +local.properties
  1 +# Usage of this project
  2 +
  3 +```
  4 +git clone https://github.com/k2-fsa/sherpa-onnx
  5 +cd sherpa-onnx
  6 +
  7 +wget https://github.com/k2-fsa/sherpa-onnx/releases/download/v1.10.34/sherpa-onnx-v1.10.34-android.tar.bz2
  8 +tar xvf sherpa-onnx-v1.10.34-android.tar.bz2
  9 +
  10 +cp -v jniLibs/arm64-v8a/* android/SherpaOnnxAar/sherpa_onnx/src/main/jniLibs/arm64-v8a/
  11 +cp -v jniLibs/armeabi-v7a/* android/SherpaOnnxAar/sherpa_onnx/src/main/jniLibs/armeabi-v7a/
  12 +cp -v jniLibs/x86/* android/SherpaOnnxAar/sherpa_onnx/src/main/jniLibs/x86/
  13 +cp -v jniLibs/x86_64/* android/SherpaOnnxAar/sherpa_onnx/src/main/jniLibs/x86_64/
  14 +
  15 +cd android/SherpaOnnxAar
  16 +
  17 +./gradlew :sherpa_onnx:assembleRelease
  18 +ls -lh ./sherpa_onnx/build/outputs/aar/sherpa_onnx-release.aar
  19 +cp ./sherpa_onnx/build/outputs/aar/sherpa_onnx-release.aar ../../sherpa-onnx-1.10.34.aar
  20 +```
  1 +// Top-level build file where you can add configuration options common to all sub-projects/modules.
  2 +plugins {
  3 + alias(libs.plugins.android.application) apply false
  4 + alias(libs.plugins.jetbrains.kotlin.android) apply false
  5 + alias(libs.plugins.android.library) apply false
  6 +}
  1 +# Project-wide Gradle settings.
  2 +# IDE (e.g. Android Studio) users:
  3 +# Gradle settings configured through the IDE *will override*
  4 +# any settings specified in this file.
  5 +# For more details on how to configure your build environment visit
  6 +# http://www.gradle.org/docs/current/userguide/build_environment.html
  7 +# Specifies the JVM arguments used for the daemon process.
  8 +# The setting is particularly useful for tweaking memory settings.
  9 +org.gradle.jvmargs=-Xmx2048m -Dfile.encoding=UTF-8
  10 +# When configured, Gradle will run in incubating parallel mode.
  11 +# This option should only be used with decoupled projects. For more details, visit
  12 +# https://developer.android.com/r/tools/gradle-multi-project-decoupled-projects
  13 +# org.gradle.parallel=true
  14 +# AndroidX package structure to make it clearer which packages are bundled with the
  15 +# Android operating system, and which are packaged with your app's APK
  16 +# https://developer.android.com/topic/libraries/support-library/androidx-rn
  17 +android.useAndroidX=true
  18 +# Kotlin code style for this project: "official" or "obsolete":
  19 +kotlin.code.style=official
  20 +# Enables namespacing of each library's R class so that its R class includes only the
  21 +# resources declared in the library itself and none from the library's dependencies,
  22 +# thereby reducing the size of the R class for that library
  23 +android.nonTransitiveRClass=true
  1 +[versions]
  2 +agp = "8.4.0"
  3 +kotlin = "1.7.20"
  4 +coreKtx = "1.15.0"
  5 +junit = "4.13.2"
  6 +junitVersion = "1.2.1"
  7 +espressoCore = "3.6.1"
  8 +appcompat = "1.7.0"
  9 +material = "1.12.0"
  10 +
  11 +[libraries]
  12 +androidx-core-ktx = { group = "androidx.core", name = "core-ktx", version.ref = "coreKtx" }
  13 +junit = { group = "junit", name = "junit", version.ref = "junit" }
  14 +androidx-junit = { group = "androidx.test.ext", name = "junit", version.ref = "junitVersion" }
  15 +androidx-espresso-core = { group = "androidx.test.espresso", name = "espresso-core", version.ref = "espressoCore" }
  16 +androidx-appcompat = { group = "androidx.appcompat", name = "appcompat", version.ref = "appcompat" }
  17 +material = { group = "com.google.android.material", name = "material", version.ref = "material" }
  18 +
  19 +[plugins]
  20 +android-application = { id = "com.android.application", version.ref = "agp" }
  21 +jetbrains-kotlin-android = { id = "org.jetbrains.kotlin.android", version.ref = "kotlin" }
  22 +android-library = { id = "com.android.library", version.ref = "agp" }
  23 +
  1 +#Thu Dec 12 14:02:30 CST 2024
  2 +distributionBase=GRADLE_USER_HOME
  3 +distributionPath=wrapper/dists
  4 +distributionUrl=https\://services.gradle.org/distributions/gradle-8.6-bin.zip
  5 +zipStoreBase=GRADLE_USER_HOME
  6 +zipStorePath=wrapper/dists
  1 +#!/usr/bin/env sh
  2 +
  3 +#
  4 +# Copyright 2015 the original author or authors.
  5 +#
  6 +# Licensed under the Apache License, Version 2.0 (the "License");
  7 +# you may not use this file except in compliance with the License.
  8 +# You may obtain a copy of the License at
  9 +#
  10 +# https://www.apache.org/licenses/LICENSE-2.0
  11 +#
  12 +# Unless required by applicable law or agreed to in writing, software
  13 +# distributed under the License is distributed on an "AS IS" BASIS,
  14 +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  15 +# See the License for the specific language governing permissions and
  16 +# limitations under the License.
  17 +#
  18 +
  19 +##############################################################################
  20 +##
  21 +## Gradle start up script for UN*X
  22 +##
  23 +##############################################################################
  24 +
  25 +# Attempt to set APP_HOME
  26 +# Resolve links: $0 may be a link
  27 +PRG="$0"
  28 +# Need this for relative symlinks.
  29 +while [ -h "$PRG" ] ; do
  30 + ls=`ls -ld "$PRG"`
  31 + link=`expr "$ls" : '.*-> \(.*\)$'`
  32 + if expr "$link" : '/.*' > /dev/null; then
  33 + PRG="$link"
  34 + else
  35 + PRG=`dirname "$PRG"`"/$link"
  36 + fi
  37 +done
  38 +SAVED="`pwd`"
  39 +cd "`dirname \"$PRG\"`/" >/dev/null
  40 +APP_HOME="`pwd -P`"
  41 +cd "$SAVED" >/dev/null
  42 +
  43 +APP_NAME="Gradle"
  44 +APP_BASE_NAME=`basename "$0"`
  45 +
  46 +# Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
  47 +DEFAULT_JVM_OPTS='"-Xmx64m" "-Xms64m"'
  48 +
  49 +# Use the maximum available, or set MAX_FD != -1 to use that value.
  50 +MAX_FD="maximum"
  51 +
  52 +warn () {
  53 + echo "$*"
  54 +}
  55 +
  56 +die () {
  57 + echo
  58 + echo "$*"
  59 + echo
  60 + exit 1
  61 +}
  62 +
  63 +# OS specific support (must be 'true' or 'false').
  64 +cygwin=false
  65 +msys=false
  66 +darwin=false
  67 +nonstop=false
  68 +case "`uname`" in
  69 + CYGWIN* )
  70 + cygwin=true
  71 + ;;
  72 + Darwin* )
  73 + darwin=true
  74 + ;;
  75 + MINGW* )
  76 + msys=true
  77 + ;;
  78 + NONSTOP* )
  79 + nonstop=true
  80 + ;;
  81 +esac
  82 +
  83 +CLASSPATH=$APP_HOME/gradle/wrapper/gradle-wrapper.jar
  84 +
  85 +
  86 +# Determine the Java command to use to start the JVM.
  87 +if [ -n "$JAVA_HOME" ] ; then
  88 + if [ -x "$JAVA_HOME/jre/sh/java" ] ; then
  89 + # IBM's JDK on AIX uses strange locations for the executables
  90 + JAVACMD="$JAVA_HOME/jre/sh/java"
  91 + else
  92 + JAVACMD="$JAVA_HOME/bin/java"
  93 + fi
  94 + if [ ! -x "$JAVACMD" ] ; then
  95 + die "ERROR: JAVA_HOME is set to an invalid directory: $JAVA_HOME
  96 +
  97 +Please set the JAVA_HOME variable in your environment to match the
  98 +location of your Java installation."
  99 + fi
  100 +else
  101 + JAVACMD="java"
  102 + which java >/dev/null 2>&1 || die "ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
  103 +
  104 +Please set the JAVA_HOME variable in your environment to match the
  105 +location of your Java installation."
  106 +fi
  107 +
  108 +# Increase the maximum file descriptors if we can.
  109 +if [ "$cygwin" = "false" -a "$darwin" = "false" -a "$nonstop" = "false" ] ; then
  110 + MAX_FD_LIMIT=`ulimit -H -n`
  111 + if [ $? -eq 0 ] ; then
  112 + if [ "$MAX_FD" = "maximum" -o "$MAX_FD" = "max" ] ; then
  113 + MAX_FD="$MAX_FD_LIMIT"
  114 + fi
  115 + ulimit -n $MAX_FD
  116 + if [ $? -ne 0 ] ; then
  117 + warn "Could not set maximum file descriptor limit: $MAX_FD"
  118 + fi
  119 + else
  120 + warn "Could not query maximum file descriptor limit: $MAX_FD_LIMIT"
  121 + fi
  122 +fi
  123 +
  124 +# For Darwin, add options to specify how the application appears in the dock
  125 +if $darwin; then
  126 + GRADLE_OPTS="$GRADLE_OPTS \"-Xdock:name=$APP_NAME\" \"-Xdock:icon=$APP_HOME/media/gradle.icns\""
  127 +fi
  128 +
  129 +# For Cygwin or MSYS, switch paths to Windows format before running java
  130 +if [ "$cygwin" = "true" -o "$msys" = "true" ] ; then
  131 + APP_HOME=`cygpath --path --mixed "$APP_HOME"`
  132 + CLASSPATH=`cygpath --path --mixed "$CLASSPATH"`
  133 +
  134 + JAVACMD=`cygpath --unix "$JAVACMD"`
  135 +
  136 + # We build the pattern for arguments to be converted via cygpath
  137 + ROOTDIRSRAW=`find -L / -maxdepth 1 -mindepth 1 -type d 2>/dev/null`
  138 + SEP=""
  139 + for dir in $ROOTDIRSRAW ; do
  140 + ROOTDIRS="$ROOTDIRS$SEP$dir"
  141 + SEP="|"
  142 + done
  143 + OURCYGPATTERN="(^($ROOTDIRS))"
  144 + # Add a user-defined pattern to the cygpath arguments
  145 + if [ "$GRADLE_CYGPATTERN" != "" ] ; then
  146 + OURCYGPATTERN="$OURCYGPATTERN|($GRADLE_CYGPATTERN)"
  147 + fi
  148 + # Now convert the arguments - kludge to limit ourselves to /bin/sh
  149 + i=0
  150 + for arg in "$@" ; do
  151 + CHECK=`echo "$arg"|egrep -c "$OURCYGPATTERN" -`
  152 + CHECK2=`echo "$arg"|egrep -c "^-"` ### Determine if an option
  153 +
  154 + if [ $CHECK -ne 0 ] && [ $CHECK2 -eq 0 ] ; then ### Added a condition
  155 + eval `echo args$i`=`cygpath --path --ignore --mixed "$arg"`
  156 + else
  157 + eval `echo args$i`="\"$arg\""
  158 + fi
  159 + i=`expr $i + 1`
  160 + done
  161 + case $i in
  162 + 0) set -- ;;
  163 + 1) set -- "$args0" ;;
  164 + 2) set -- "$args0" "$args1" ;;
  165 + 3) set -- "$args0" "$args1" "$args2" ;;
  166 + 4) set -- "$args0" "$args1" "$args2" "$args3" ;;
  167 + 5) set -- "$args0" "$args1" "$args2" "$args3" "$args4" ;;
  168 + 6) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" ;;
  169 + 7) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" ;;
  170 + 8) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" ;;
  171 + 9) set -- "$args0" "$args1" "$args2" "$args3" "$args4" "$args5" "$args6" "$args7" "$args8" ;;
  172 + esac
  173 +fi
  174 +
  175 +# Escape application args
  176 +save () {
  177 + for i do printf %s\\n "$i" | sed "s/'/'\\\\''/g;1s/^/'/;\$s/\$/' \\\\/" ; done
  178 + echo " "
  179 +}
  180 +APP_ARGS=`save "$@"`
  181 +
  182 +# Collect all arguments for the java command, following the shell quoting and substitution rules
  183 +eval set -- $DEFAULT_JVM_OPTS $JAVA_OPTS $GRADLE_OPTS "\"-Dorg.gradle.appname=$APP_BASE_NAME\"" -classpath "\"$CLASSPATH\"" org.gradle.wrapper.GradleWrapperMain "$APP_ARGS"
  184 +
  185 +exec "$JAVACMD" "$@"
  1 +@rem
  2 +@rem Copyright 2015 the original author or authors.
  3 +@rem
  4 +@rem Licensed under the Apache License, Version 2.0 (the "License");
  5 +@rem you may not use this file except in compliance with the License.
  6 +@rem You may obtain a copy of the License at
  7 +@rem
  8 +@rem https://www.apache.org/licenses/LICENSE-2.0
  9 +@rem
  10 +@rem Unless required by applicable law or agreed to in writing, software
  11 +@rem distributed under the License is distributed on an "AS IS" BASIS,
  12 +@rem WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
  13 +@rem See the License for the specific language governing permissions and
  14 +@rem limitations under the License.
  15 +@rem
  16 +
  17 +@if "%DEBUG%" == "" @echo off
  18 +@rem ##########################################################################
  19 +@rem
  20 +@rem Gradle startup script for Windows
  21 +@rem
  22 +@rem ##########################################################################
  23 +
  24 +@rem Set local scope for the variables with windows NT shell
  25 +if "%OS%"=="Windows_NT" setlocal
  26 +
  27 +set DIRNAME=%~dp0
  28 +if "%DIRNAME%" == "" set DIRNAME=.
  29 +set APP_BASE_NAME=%~n0
  30 +set APP_HOME=%DIRNAME%
  31 +
  32 +@rem Resolve any "." and ".." in APP_HOME to make it shorter.
  33 +for %%i in ("%APP_HOME%") do set APP_HOME=%%~fi
  34 +
  35 +@rem Add default JVM options here. You can also use JAVA_OPTS and GRADLE_OPTS to pass JVM options to this script.
  36 +set DEFAULT_JVM_OPTS="-Xmx64m" "-Xms64m"
  37 +
  38 +@rem Find java.exe
  39 +if defined JAVA_HOME goto findJavaFromJavaHome
  40 +
  41 +set JAVA_EXE=java.exe
  42 +%JAVA_EXE% -version >NUL 2>&1
  43 +if "%ERRORLEVEL%" == "0" goto execute
  44 +
  45 +echo.
  46 +echo ERROR: JAVA_HOME is not set and no 'java' command could be found in your PATH.
  47 +echo.
  48 +echo Please set the JAVA_HOME variable in your environment to match the
  49 +echo location of your Java installation.
  50 +
  51 +goto fail
  52 +
  53 +:findJavaFromJavaHome
  54 +set JAVA_HOME=%JAVA_HOME:"=%
  55 +set JAVA_EXE=%JAVA_HOME%/bin/java.exe
  56 +
  57 +if exist "%JAVA_EXE%" goto execute
  58 +
  59 +echo.
  60 +echo ERROR: JAVA_HOME is set to an invalid directory: %JAVA_HOME%
  61 +echo.
  62 +echo Please set the JAVA_HOME variable in your environment to match the
  63 +echo location of your Java installation.
  64 +
  65 +goto fail
  66 +
  67 +:execute
  68 +@rem Setup the command line
  69 +
  70 +set CLASSPATH=%APP_HOME%\gradle\wrapper\gradle-wrapper.jar
  71 +
  72 +
  73 +@rem Execute Gradle
  74 +"%JAVA_EXE%" %DEFAULT_JVM_OPTS% %JAVA_OPTS% %GRADLE_OPTS% "-Dorg.gradle.appname=%APP_BASE_NAME%" -classpath "%CLASSPATH%" org.gradle.wrapper.GradleWrapperMain %*
  75 +
  76 +:end
  77 +@rem End local scope for the variables with windows NT shell
  78 +if "%ERRORLEVEL%"=="0" goto mainEnd
  79 +
  80 +:fail
  81 +rem Set variable GRADLE_EXIT_CONSOLE if you need the _script_ return code instead of
  82 +rem the _cmd.exe /c_ return code!
  83 +if not "" == "%GRADLE_EXIT_CONSOLE%" exit 1
  84 +exit /b 1
  85 +
  86 +:mainEnd
  87 +if "%OS%"=="Windows_NT" endlocal
  88 +
  89 +:omega
  1 +pluginManagement {
  2 + repositories {
  3 + google {
  4 + content {
  5 + includeGroupByRegex("com\\.android.*")
  6 + includeGroupByRegex("com\\.google.*")
  7 + includeGroupByRegex("androidx.*")
  8 + }
  9 + }
  10 + mavenCentral()
  11 + gradlePluginPortal()
  12 + }
  13 +}
  14 +dependencyResolutionManagement {
  15 + repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
  16 + repositories {
  17 + google()
  18 + mavenCentral()
  19 + }
  20 +}
  21 +
  22 +rootProject.name = "SherpaOnnxAar"
  23 +include(":sherpa_onnx")
  1 +plugins {
  2 + alias(libs.plugins.android.library)
  3 + alias(libs.plugins.jetbrains.kotlin.android)
  4 +}
  5 +
  6 +android {
  7 + namespace = "com.k2fsa.sherpa.onnx"
  8 + compileSdk = 34
  9 +
  10 + defaultConfig {
  11 + minSdk = 21
  12 +
  13 + testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
  14 + consumerProguardFiles("consumer-rules.pro")
  15 + }
  16 +
  17 + buildTypes {
  18 + release {
  19 + isMinifyEnabled = false
  20 + proguardFiles(
  21 + getDefaultProguardFile("proguard-android-optimize.txt"),
  22 + "proguard-rules.pro"
  23 + )
  24 + }
  25 + }
  26 + compileOptions {
  27 + sourceCompatibility = JavaVersion.VERSION_1_8
  28 + targetCompatibility = JavaVersion.VERSION_1_8
  29 + }
  30 + kotlinOptions {
  31 + jvmTarget = "1.8"
  32 + }
  33 +}
  34 +
  35 +dependencies {
  36 +
  37 + implementation(libs.androidx.core.ktx)
  38 + implementation(libs.androidx.appcompat)
  39 + implementation(libs.material)
  40 + testImplementation(libs.junit)
  41 + androidTestImplementation(libs.androidx.junit)
  42 + androidTestImplementation(libs.androidx.espresso.core)
  43 +}
  1 +# Add project specific ProGuard rules here.
  2 +# You can control the set of applied configuration files using the
  3 +# proguardFiles setting in build.gradle.
  4 +#
  5 +# For more details, see
  6 +# http://developer.android.com/guide/developing/tools/proguard.html
  7 +
  8 +# If your project uses WebView with JS, uncomment the following
  9 +# and specify the fully qualified class name to the JavaScript interface
  10 +# class:
  11 +#-keepclassmembers class fqcn.of.javascript.interface.for.webview {
  12 +# public *;
  13 +#}
  14 +
  15 +# Uncomment this to preserve the line number information for
  16 +# debugging stack traces.
  17 +#-keepattributes SourceFile,LineNumberTable
  18 +
  19 +# If you keep the line number information, uncomment this to
  20 +# hide the original source file name.
  21 +#-renamesourcefileattribute SourceFile
  1 +package com.k2fsa.sherpa.onnx
  2 +
  3 +import androidx.test.platform.app.InstrumentationRegistry
  4 +import androidx.test.ext.junit.runners.AndroidJUnit4
  5 +
  6 +import org.junit.Test
  7 +import org.junit.runner.RunWith
  8 +
  9 +import org.junit.Assert.*
  10 +
  11 +/**
  12 + * Instrumented test, which will execute on an Android device.
  13 + *
  14 + * See [testing documentation](http://d.android.com/tools/testing).
  15 + */
  16 +@RunWith(AndroidJUnit4::class)
  17 +class ExampleInstrumentedTest {
  18 + @Test
  19 + fun useAppContext() {
  20 + // Context of the app under test.
  21 + val appContext = InstrumentationRegistry.getInstrumentation().targetContext
  22 + assertEquals("com.k2fsa.sherpa.onnx.test", appContext.packageName)
  23 + }
  24 +}
  1 +<?xml version="1.0" encoding="utf-8"?>
  2 +<manifest xmlns:android="http://schemas.android.com/apk/res/android">
  3 +
  4 +</manifest>
  1 +../../../../../../../../../../sherpa-onnx/kotlin-api/AudioTagging.kt
  1 +../../../../../../../../../../sherpa-onnx/kotlin-api/FeatureConfig.kt
  1 +../../../../../../../../../../sherpa-onnx/kotlin-api/KeywordSpotter.kt
  1 +../../../../../../../../../../sherpa-onnx/kotlin-api/OfflinePunctuation.kt
  1 +../../../../../../../../../../sherpa-onnx/kotlin-api/OfflineRecognizer.kt
  1 +../../../../../../../../../../sherpa-onnx/kotlin-api/OfflineSpeakerDiarization.kt
  1 +../../../../../../../../../../sherpa-onnx/kotlin-api/OfflineStream.kt
  1 +../../../../../../../../../../sherpa-onnx/kotlin-api/OnlineRecognizer.kt
  1 +../../../../../../../../../../sherpa-onnx/kotlin-api/OnlineStream.kt
  1 +../../../../../../../../../../sherpa-onnx/kotlin-api/Speaker.kt
  1 +../../../../../../../../../../sherpa-onnx/kotlin-api/SpeakerEmbeddingExtractorConfig.kt
  1 +../../../../../../../../../../sherpa-onnx/kotlin-api/SpokenLanguageIdentification.kt
  1 +../../../../../../../../../../sherpa-onnx/kotlin-api/Tts.kt
  1 +../../../../../../../../../../sherpa-onnx/kotlin-api/Vad.kt
  1 +../../../../../../../../../../sherpa-onnx/kotlin-api/WaveReader.kt
  1 +package com.k2fsa.sherpa.onnx
  2 +
  3 +import org.junit.Test
  4 +
  5 +import org.junit.Assert.*
  6 +
  7 +/**
  8 + * Example local unit test, which will execute on the development machine (host).
  9 + *
  10 + * See [testing documentation](http://d.android.com/tools/testing).
  11 + */
  12 +class ExampleUnitTest {
  13 + @Test
  14 + fun addition_isCorrect() {
  15 + assertEquals(4, 2 + 2)
  16 + }
  17 +}
  1 +../../../../../../../../../../sherpa-onnx/kotlin-api/Tts.kt
1 -../../../../../../../../../../../SherpaOnnxTts/app/src/main/java/com/k2fsa/sherpa/onnx/Tts.kt  
  1 +../../../../../../../../../../../../sherpa-onnx/kotlin-api/Tts.kt
  1 +jdk:
  2 + - openjdk17
  3 +
  4 +before_install:
  5 + - wget https://github.com/k2-fsa/sherpa-onnx/releases/download/v1.10.34/sherpa-onnx-1.10.34.aar
  6 +
  7 +install:
  8 + - FILE="-Dfile=sherpa-onnx-1.10.34.aar"
  9 + - mvn install:install-file $FILE -DgroupId=com.k2fsa.sherpa.onnx -DartifactId=sherpa-onnx -Dversion=1.10.34 -Dpackaging=aar -DgeneratePom=true
1 -../android/SherpaOnnxTts/app/src/main/java/com/k2fsa/sherpa/onnx/Tts.kt  
  1 +../sherpa-onnx/kotlin-api/Tts.kt
@@ -3,6 +3,10 @@ @@ -3,6 +3,10 @@
3 set -ex 3 set -ex
4 4
5 sed -i.bak 's/1\.10\.33/1\.10\.34/g' ./build-ios-shared.sh 5 sed -i.bak 's/1\.10\.33/1\.10\.34/g' ./build-ios-shared.sh
  6 +sed -i.bak 's/1\.10\.33/1\.10\.34/g' ./pom.xml
  7 +sed -i.bak 's/1\.10\.33/1\.10\.34/g' ./jitpack.yml
  8 +sed -i.bak 's/1\.10\.33/1\.10\.34/g' ./android/SherpaOnnxAar/README.md
  9 +
6 find flutter -name *.yaml -type f -exec sed -i.bak 's/1\.10\.33/1\.10\.34/g' {} \; 10 find flutter -name *.yaml -type f -exec sed -i.bak 's/1\.10\.33/1\.10\.34/g' {} \;
7 find dart-api-examples -name *.yaml -type f -exec sed -i.bak 's/1\.10\.33/1\.10\.34/g' {} \; 11 find dart-api-examples -name *.yaml -type f -exec sed -i.bak 's/1\.10\.33/1\.10\.34/g' {} \;
8 find flutter-examples -name *.yaml -type f -exec sed -i.bak 's/1\.10\.33/1\.10\.34/g' {} \; 12 find flutter-examples -name *.yaml -type f -exec sed -i.bak 's/1\.10\.33/1\.10\.34/g' {} \;
  1 +<?xml version="1.0" encoding="UTF-8"?>
  2 +<project xsi:schemaLocation="http://maven.apache.org/POM/4.0.0 https://maven.apache.org/xsd/maven-4.0.0.xsd" xmlns="http://maven.apache.org/POM/4.0.0"
  3 + xmlns:xsi="http://www.w3.org/2001/XMLSchema-instance">
  4 + <modelVersion>4.0.0</modelVersion>
  5 + <groupId>com.k2fsa.sherpa.onnx</groupId>
  6 + <artifactId>sherpa-onnx-android</artifactId>
  7 + <version>1.10.34</version>
  8 + <url>https://github.com/k2-fsa/sherpa-onnx</url>
  9 + <packaging>pom</packaging>
  10 + <description>First Android Library</description>
  11 +
  12 + <licenses>
  13 + <license>
  14 + <name>The Apache Software License, Version 2.0</name>
  15 + <url>http://www.apache.org/licenses/LICENSE-2.0.txt</url>
  16 + <distribution>repo</distribution>
  17 + </license>
  18 + </licenses>
  19 +</project>