build-apk.sh 2.4 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778
  1. #!/usr/bin/env bash
  2. # Please set the environment variable ANDROID_NDK
  3. # before running this script
  4. # Inside the $ANDROID_NDK directory, you can find a binary ndk-build
  5. # and some other files like the file "build/cmake/android.toolchain.cmake"
  6. set -e
  7. log() {
  8. # This function is from espnet
  9. local fname=${BASH_SOURCE[1]##*/}
  10. echo -e "$(date '+%Y-%m-%d %H:%M:%S') (${fname}:${BASH_LINENO[0]}:${FUNCNAME[1]}) $*"
  11. }
  12. SHERPA_NCNN_VERSION=$(grep "SHERPA_NCNN_VERSION" ./CMakeLists.txt | cut -d " " -f 2 | cut -d '"' -f 2)
  13. log "Building APK for sherpa-ncnn v${SHERPA_NCNN_VERSION}"
  14. log "====================arm64-v8a================="
  15. ./build-android-arm64-v8a.sh
  16. log "====================armv7-eabi================"
  17. ./build-android-armv7-eabi.sh
  18. log "====================x86-64===================="
  19. ./build-android-x86-64.sh
  20. log "====================x86===================="
  21. ./build-android-x86.sh
  22. # Download the model
  23. # see https://k2-fsa.github.io/sherpa/ncnn/pretrained_models/zipformer-transucer-models.html#csukuangfj-sherpa-ncnn-streaming-zipformer-bilingual-zh-en-2023-02-13-bilingual-chinese-english
  24. repo_url=https://huggingface.co/csukuangfj/sherpa-ncnn-streaming-zipformer-bilingual-zh-en-2023-02-13
  25. log "Start testing ${repo_url}"
  26. repo=$(basename $repo_url)
  27. log "Download pretrained model and test-data from $repo_url"
  28. GIT_LFS_SKIP_SMUDGE=1 git clone $repo_url
  29. pushd $repo
  30. git lfs pull --include "*.bin"
  31. # remove .git to save spaces
  32. rm -rf .git
  33. rm -rfv test_wavs
  34. rm -v export-for-ncnn-bilingual.sh
  35. rm README.md
  36. ls -lh
  37. popd
  38. mv -v $repo ./android/SherpaNcnn/app/src/main/assets/
  39. tree ./android/SherpaNcnn/app/src/main/assets/
  40. mkdir -p apks
  41. for arch in arm64-v8a armeabi-v7a x86_64 x86; do
  42. log "------------------------------------------------------------"
  43. log "build apk for $arch"
  44. log "------------------------------------------------------------"
  45. src_arch=$arch
  46. if [ $arch == "armeabi-v7a" ]; then
  47. src_arch=armv7-eabi
  48. elif [ $arch == "x86_64" ]; then
  49. src_arch=x86-64
  50. fi
  51. ls -lh ./build-android-$src_arch/install/lib/*.so
  52. cp -v ./build-android-$src_arch/install/lib/*.so ./android/SherpaNcnn/app/src/main/jniLibs/$arch/
  53. pushd ./android/SherpaNcnn
  54. ./gradlew build
  55. popd
  56. mv android/SherpaNcnn/app/build/outputs/apk/debug/app-debug.apk ./apks/sherpa-ncnn-${SHERPA_NCNN_VERSION}-cpu-$arch-bilingual-en-zh.apk
  57. ls -lh apks
  58. rm -v ./android/SherpaNcnn/app/src/main/jniLibs/$arch/*.so
  59. done
  60. ls -lh apks/