Skip to content

Commit 5e0f4ea

Browse files
authored
Refactor flutter to support Android (k2-fsa#1072)
1 parent 163100c commit 5e0f4ea

File tree

110 files changed

+4547
-32
lines changed

Some content is hidden

Large Commits have some content hidden by default. Use the searchbox below for content that may be hidden.

110 files changed

+4547
-32
lines changed

.github/workflows/test-dart.yaml

+20-4
Original file line numberDiff line numberDiff line change
@@ -8,13 +8,15 @@ on:
88
- '.github/workflows/test-dart.yaml'
99
- '.github/scripts/test-dart.sh'
1010
- 'dart-api-examples/**'
11+
- 'flutter/**'
1112
pull_request:
1213
branches:
1314
- master
1415
paths:
1516
- '.github/workflows/test-dart.yaml'
1617
- '.github/scripts/test-dart.sh'
1718
- 'dart-api-examples/**'
19+
- 'flutter/**'
1820

1921
workflow_dispatch:
2022

@@ -29,7 +31,7 @@ jobs:
2931
strategy:
3032
fail-fast: false
3133
matrix:
32-
os: [ubuntu-latest]
34+
os: [ubuntu-latest, macos-latest] #, windows-latest]
3335

3436
steps:
3537
- uses: actions/checkout@v4
@@ -75,16 +77,29 @@ jobs:
7577
-DSHERPA_ONNX_ENABLE_BINARY=OFF \
7678
-DCMAKE_INSTALL_PREFIX=./install \
7779
..
78-
make -j install
80+
81+
cmake --build . --target install --config Release
7982
8083
- name: Copy libs
8184
shell: bash
8285
run: |
83-
cp -v build/install/lib/lib* ./sherpa-onnx/flutter/linux/
86+
if [[ ${{ matrix.os }} == ubuntu-latest ]]; then
87+
os=linux
88+
elif [[ ${{ matrix.os }} == macos-latest ]]; then
89+
os=macos
90+
elif [[ ${{ matrix.os }} == windows-latest ]]; then
91+
os=windows
92+
fi
93+
94+
if [[ $os == windows ]]; then
95+
cp -fv build/install/lib/*.dll ./flutter/sherpa_onnx_$os/$os
96+
else
97+
cp -fv build/install/lib/lib* ./flutter/sherpa_onnx_$os/$os
98+
fi
8499
85100
echo "--------------------"
86101
87-
ls -lh ./sherpa-onnx/flutter/linux/
102+
ls -lh ./flutter/sherpa_onnx_$os/$os
88103
89104
- name: Run tests
90105
shell: bash
@@ -93,5 +108,6 @@ jobs:
93108
cp scripts/dart/non-streaming-asr-pubspec.yaml dart-api-examples/non-streaming-asr/pubspec.yaml
94109
cp scripts/dart/streaming-asr-pubspec.yaml dart-api-examples/streaming-asr/pubspec.yaml
95110
cp scripts/dart/tts-pubspec.yaml dart-api-examples/tts/pubspec.yaml
111+
cp scripts/dart/sherpa-onnx-pubspec.yaml flutter/sherpa_onnx/pubspec.yaml
96112
97113
.github/scripts/test-dart.sh

build-android-arm64-v8a.sh

+10-2
Original file line numberDiff line numberDiff line change
@@ -67,6 +67,14 @@ if [ -z $SHERPA_ONNX_ENABLE_BINARY ]; then
6767
SHERPA_ONNX_ENABLE_BINARY=OFF
6868
fi
6969

70+
if [ -z $SHERPA_ONNX_ENABLE_C_API ]; then
71+
SHERPA_ONNX_ENABLE_C_API=OFF
72+
fi
73+
74+
if [ -z $SHERPA_ONNX_ENABLE_JNI ]; then
75+
SHERPA_ONNX_ENABLE_JNI=ON
76+
fi
77+
7078
cmake -DCMAKE_TOOLCHAIN_FILE="$ANDROID_NDK/build/cmake/android.toolchain.cmake" \
7179
-DSHERPA_ONNX_ENABLE_TTS=$SHERPA_ONNX_ENABLE_TTS \
7280
-DSHERPA_ONNX_ENABLE_BINARY=$SHERPA_ONNX_ENABLE_BINARY \
@@ -80,8 +88,8 @@ cmake -DCMAKE_TOOLCHAIN_FILE="$ANDROID_NDK/build/cmake/android.toolchain.cmake"
8088
-DSHERPA_ONNX_ENABLE_TESTS=OFF \
8189
-DSHERPA_ONNX_ENABLE_CHECK=OFF \
8290
-DSHERPA_ONNX_ENABLE_PORTAUDIO=OFF \
83-
-DSHERPA_ONNX_ENABLE_JNI=ON \
84-
-DSHERPA_ONNX_ENABLE_C_API=OFF \
91+
-DSHERPA_ONNX_ENABLE_JNI=$SHERPA_ONNX_ENABLE_JNI \
92+
-DSHERPA_ONNX_ENABLE_C_API=$SHERPA_ONNX_ENABLE_C_API \
8593
-DCMAKE_INSTALL_PREFIX=./install \
8694
-DANDROID_ABI="arm64-v8a" \
8795
-DANDROID_PLATFORM=android-21 ..

build-android-armv7-eabi.sh

+10-2
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,14 @@ if [ -z $SHERPA_ONNX_ENABLE_BINARY ]; then
6868
SHERPA_ONNX_ENABLE_BINARY=OFF
6969
fi
7070

71+
if [ -z $SHERPA_ONNX_ENABLE_C_API ]; then
72+
SHERPA_ONNX_ENABLE_C_API=OFF
73+
fi
74+
75+
if [ -z $SHERPA_ONNX_ENABLE_JNI ]; then
76+
SHERPA_ONNX_ENABLE_JNI=ON
77+
fi
78+
7179
cmake -DCMAKE_TOOLCHAIN_FILE="$ANDROID_NDK/build/cmake/android.toolchain.cmake" \
7280
-DSHERPA_ONNX_ENABLE_TTS=$SHERPA_ONNX_ENABLE_TTS \
7381
-DSHERPA_ONNX_ENABLE_BINARY=$SHERPA_ONNX_ENABLE_BINARY \
@@ -81,8 +89,8 @@ cmake -DCMAKE_TOOLCHAIN_FILE="$ANDROID_NDK/build/cmake/android.toolchain.cmake"
8189
-DSHERPA_ONNX_ENABLE_TESTS=OFF \
8290
-DSHERPA_ONNX_ENABLE_CHECK=OFF \
8391
-DSHERPA_ONNX_ENABLE_PORTAUDIO=OFF \
84-
-DSHERPA_ONNX_ENABLE_JNI=ON \
85-
-DSHERPA_ONNX_ENABLE_C_API=OFF \
92+
-DSHERPA_ONNX_ENABLE_JNI=$SHERPA_ONNX_ENABLE_JNI \
93+
-DSHERPA_ONNX_ENABLE_C_API=$SHERPA_ONNX_ENABLE_C_API \
8694
-DCMAKE_INSTALL_PREFIX=./install \
8795
-DANDROID_ABI="armeabi-v7a" -DANDROID_ARM_NEON=ON \
8896
-DANDROID_PLATFORM=android-21 ..

build-android-x86-64.sh

+10-2
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,14 @@ if [ -z $SHERPA_ONNX_ENABLE_BINARY ]; then
6868
SHERPA_ONNX_ENABLE_BINARY=OFF
6969
fi
7070

71+
if [ -z $SHERPA_ONNX_ENABLE_C_API ]; then
72+
SHERPA_ONNX_ENABLE_C_API=OFF
73+
fi
74+
75+
if [ -z $SHERPA_ONNX_ENABLE_JNI ]; then
76+
SHERPA_ONNX_ENABLE_JNI=ON
77+
fi
78+
7179
cmake -DCMAKE_TOOLCHAIN_FILE="$ANDROID_NDK/build/cmake/android.toolchain.cmake" \
7280
-DSHERPA_ONNX_ENABLE_TTS=$SHERPA_ONNX_ENABLE_TTS \
7381
-DSHERPA_ONNX_ENABLE_BINARY=$SHERPA_ONNX_ENABLE_BINARY \
@@ -81,10 +89,10 @@ cmake -DCMAKE_TOOLCHAIN_FILE="$ANDROID_NDK/build/cmake/android.toolchain.cmake"
8189
-DSHERPA_ONNX_ENABLE_TESTS=OFF \
8290
-DSHERPA_ONNX_ENABLE_CHECK=OFF \
8391
-DSHERPA_ONNX_ENABLE_PORTAUDIO=OFF \
84-
-DSHERPA_ONNX_ENABLE_JNI=ON \
92+
-DSHERPA_ONNX_ENABLE_JNI=$SHERPA_ONNX_ENABLE_JNI \
8593
-DCMAKE_INSTALL_PREFIX=./install \
8694
-DANDROID_ABI="x86_64" \
87-
-DSHERPA_ONNX_ENABLE_C_API=OFF \
95+
-DSHERPA_ONNX_ENABLE_C_API=$SHERPA_ONNX_ENABLE_C_API \
8896
-DSHERPA_ONNX_ENABLE_WEBSOCKET=OFF \
8997
-DANDROID_PLATFORM=android-21 ..
9098

build-android-x86.sh

+10-2
Original file line numberDiff line numberDiff line change
@@ -68,6 +68,14 @@ if [ -z $SHERPA_ONNX_ENABLE_BINARY ]; then
6868
SHERPA_ONNX_ENABLE_BINARY=OFF
6969
fi
7070

71+
if [ -z $SHERPA_ONNX_ENABLE_C_API ]; then
72+
SHERPA_ONNX_ENABLE_C_API=OFF
73+
fi
74+
75+
if [ -z $SHERPA_ONNX_ENABLE_JNI ]; then
76+
SHERPA_ONNX_ENABLE_JNI=ON
77+
fi
78+
7179
cmake -DCMAKE_TOOLCHAIN_FILE="$ANDROID_NDK/build/cmake/android.toolchain.cmake" \
7280
-DSHERPA_ONNX_ENABLE_TTS=$SHERPA_ONNX_ENABLE_TTS \
7381
-DSHERPA_ONNX_ENABLE_BINARY=$SHERPA_ONNX_ENABLE_BINARY \
@@ -81,10 +89,10 @@ cmake -DCMAKE_TOOLCHAIN_FILE="$ANDROID_NDK/build/cmake/android.toolchain.cmake"
8189
-DSHERPA_ONNX_ENABLE_TESTS=OFF \
8290
-DSHERPA_ONNX_ENABLE_CHECK=OFF \
8391
-DSHERPA_ONNX_ENABLE_PORTAUDIO=OFF \
84-
-DSHERPA_ONNX_ENABLE_JNI=ON \
92+
-DSHERPA_ONNX_ENABLE_JNI=$SHERPA_ONNX_ENABLE_JNI \
8593
-DCMAKE_INSTALL_PREFIX=./install \
8694
-DANDROID_ABI="x86" \
87-
-DSHERPA_ONNX_ENABLE_C_API=OFF \
95+
-DSHERPA_ONNX_ENABLE_C_API=$SHERPA_ONNX_ENABLE_C_API \
8896
-DSHERPA_ONNX_ENABLE_WEBSOCKET=OFF \
8997
-DANDROID_PLATFORM=android-21 ..
9098

dart-api-examples/vad/bin/init.dart

+8-8
Original file line numberDiff line numberDiff line change
@@ -5,14 +5,6 @@ import 'package:path/path.dart' as p;
55
import 'package:sherpa_onnx/sherpa_onnx.dart' as sherpa_onnx;
66

77
Future<void> initSherpaOnnx() async {
8-
var uri = await Isolate.resolvePackageUri(
9-
Uri.parse('package:sherpa_onnx/sherpa_onnx.dart'));
10-
11-
if (uri == null) {
12-
print('File not found');
13-
exit(1);
14-
}
15-
168
String platform = '';
179

1810
if (Platform.isMacOS) {
@@ -25,6 +17,14 @@ Future<void> initSherpaOnnx() async {
2517
throw UnsupportedError('Unknown platform: ${Platform.operatingSystem}');
2618
}
2719

20+
var uri = await Isolate.resolvePackageUri(
21+
Uri.parse('package:sherpa_onnx_$platform/any_path_is_ok_here.dart'));
22+
23+
if (uri == null) {
24+
print('File not found');
25+
exit(1);
26+
}
27+
2828
final libPath = p.join(p.dirname(p.fromUri(uri)), '..', platform);
2929
sherpa_onnx.initBindings(libPath);
3030
}

flutter-examples/.gitignore

+138
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,138 @@
1+
# Do not remove or rename entries in this file, only add new ones
2+
# See https://github.com/flutter/flutter/issues/128635 for more context.
3+
4+
# Miscellaneous
5+
*.class
6+
*.lock
7+
*.log
8+
*.pyc
9+
*.swp
10+
.DS_Store
11+
.atom/
12+
.buildlog/
13+
.history
14+
.svn/
15+
16+
# IntelliJ related
17+
*.iml
18+
*.ipr
19+
*.iws
20+
.idea/
21+
22+
# Visual Studio Code related
23+
.classpath
24+
.project
25+
.settings/
26+
.vscode/*
27+
28+
# Flutter repo-specific
29+
/bin/cache/
30+
/bin/internal/bootstrap.bat
31+
/bin/internal/bootstrap.sh
32+
/bin/mingit/
33+
/dev/benchmarks/mega_gallery/
34+
/dev/bots/.recipe_deps
35+
/dev/bots/android_tools/
36+
/dev/devicelab/ABresults*.json
37+
/dev/docs/doc/
38+
/dev/docs/api_docs.zip
39+
/dev/docs/flutter.docs.zip
40+
/dev/docs/lib/
41+
/dev/docs/pubspec.yaml
42+
/dev/integration_tests/**/xcuserdata
43+
/dev/integration_tests/**/Pods
44+
/packages/flutter/coverage/
45+
version
46+
analysis_benchmark.json
47+
48+
# packages file containing multi-root paths
49+
.packages.generated
50+
51+
# Flutter/Dart/Pub related
52+
**/doc/api/
53+
.dart_tool/
54+
.flutter-plugins
55+
.flutter-plugins-dependencies
56+
**/generated_plugin_registrant.dart
57+
.packages
58+
.pub-preload-cache/
59+
.pub-cache/
60+
.pub/
61+
build/
62+
flutter_*.png
63+
linked_*.ds
64+
unlinked.ds
65+
unlinked_spec.ds
66+
67+
# Android related
68+
**/android/**/gradle-wrapper.jar
69+
.gradle/
70+
**/android/captures/
71+
**/android/gradlew
72+
**/android/gradlew.bat
73+
**/android/local.properties
74+
**/android/**/GeneratedPluginRegistrant.java
75+
**/android/key.properties
76+
*.jks
77+
78+
# iOS/XCode related
79+
**/ios/**/*.mode1v3
80+
**/ios/**/*.mode2v3
81+
**/ios/**/*.moved-aside
82+
**/ios/**/*.pbxuser
83+
**/ios/**/*.perspectivev3
84+
**/ios/**/*sync/
85+
**/ios/**/.sconsign.dblite
86+
**/ios/**/.tags*
87+
**/ios/**/.vagrant/
88+
**/ios/**/DerivedData/
89+
**/ios/**/Icon?
90+
**/ios/**/Pods/
91+
**/ios/**/.symlinks/
92+
**/ios/**/profile
93+
**/ios/**/xcuserdata
94+
**/ios/.generated/
95+
**/ios/Flutter/.last_build_id
96+
**/ios/Flutter/App.framework
97+
**/ios/Flutter/Flutter.framework
98+
**/ios/Flutter/Flutter.podspec
99+
**/ios/Flutter/Generated.xcconfig
100+
**/ios/Flutter/ephemeral
101+
**/ios/Flutter/app.flx
102+
**/ios/Flutter/app.zip
103+
**/ios/Flutter/flutter_assets/
104+
**/ios/Flutter/flutter_export_environment.sh
105+
**/ios/ServiceDefinitions.json
106+
**/ios/Runner/GeneratedPluginRegistrant.*
107+
108+
# macOS
109+
**/Flutter/ephemeral/
110+
**/Pods/
111+
**/macos/Flutter/GeneratedPluginRegistrant.swift
112+
**/macos/Flutter/ephemeral
113+
**/xcuserdata/
114+
115+
# Windows
116+
**/windows/flutter/generated_plugin_registrant.cc
117+
**/windows/flutter/generated_plugin_registrant.h
118+
**/windows/flutter/generated_plugins.cmake
119+
120+
# Linux
121+
**/linux/flutter/generated_plugin_registrant.cc
122+
**/linux/flutter/generated_plugin_registrant.h
123+
**/linux/flutter/generated_plugins.cmake
124+
125+
# Coverage
126+
coverage/
127+
128+
# Symbols
129+
app.*.symbols
130+
131+
# Exceptions to above rules.
132+
!**/ios/**/default.mode1v3
133+
!**/ios/**/default.mode2v3
134+
!**/ios/**/default.pbxuser
135+
!**/ios/**/default.perspectivev3
136+
!/packages/flutter_tools/test/data/dart_dependencies_test/**/.packages
137+
!/dev/ci/**/Gemfile.lock
138+
!.vscode/settings.json

0 commit comments

Comments
 (0)