mirror of
https://github.com/saymrwulf/onnxruntime.git
synced 2026-05-14 20:48:00 +00:00
Update Android build instructions to provide more information. Add info on testing directly on Android Update build.py to better support using Ninja generator to build Android on Windows.
81 lines
No EOL
3.1 KiB
Markdown
81 lines
No EOL
3.1 KiB
Markdown
# Testing Android Changes using the Emulator
|
|
|
|
See [BUILD.md](../Build.md#Android) for Android build instructions and information on the locations of the various files referred to here.
|
|
|
|
## Install the emulator
|
|
|
|
If using Android Studio this is included in the base install.
|
|
|
|
If using sdkmanager install the emulator by running
|
|
- `sdkmanager[.bat] --install "emulator"`
|
|
|
|
The emulator will emulate the Android device not its processor, so you need to build onnxruntime
|
|
with an ABI that's valid for the host machine, and install a system image that matches.
|
|
For example you can emulate a Pixel 3 device on an Intel 64-bit host, but it will require a binary built against x86_64
|
|
rather than the arm64-v8a ABI of the real device.
|
|
|
|
e.g. on Intel 64-bit you would build with `--android_abi x86_64` to create onnxruntime libraries/executables that can be run on the Android emulator
|
|
|
|
## Create the device to emulate
|
|
|
|
### Android Studio
|
|
|
|
Tools->AVD Manager->Create Virtual Device...
|
|
|
|
Once created the emulator can be started using the 'play' button in AVD Manager.
|
|
|
|
### sdkmanager
|
|
|
|
First install a system image. Use `sdkmanager --list` to see the available system images.
|
|
|
|
e.g. `sdkmanager --install "system-images;android-27;default;x86_64`
|
|
|
|
Create the virtual device using avdmanager[.bat] (which should be in the same directory as sdkmanager[.bat]).
|
|
|
|
e.g. `avdmanager create avd -n android27_emulator -k "system-images;android-27;default;x86_64"`
|
|
|
|
Run the emulator
|
|
e.g. `.../Android/emulator/emulator -avd android27_emulator -partition-size 2048 -no-snapshot -no-audio`
|
|
|
|
## Testing running a model on the emulator directly
|
|
|
|
Use ADB to copy files and execute commands
|
|
|
|
https://developer.android.com/studio/command-line/adb
|
|
|
|
ADB is located in the 'platform-tools' folder of the SDK directory.
|
|
|
|
Copy onnx_test_runner and the directory of the model to test (in ONNX test directory format) to /data/local/tmp.
|
|
|
|
```
|
|
adb push <onnxruntime repo>/build/<platform>/<config>/onnx_test_runner /data/local/tmp/
|
|
adb push <onnxruntime repo>/build/<platform>/<config>/testdata/transform/gemm_activation_fusion /data/local/tmp/
|
|
```
|
|
|
|
e.g. on Windows that might be
|
|
```
|
|
<Android SDK path>\platform-tools\adb.exe push <onnxruntime repo>\build\Windows\Debug\onnx_test_runner /data/local/tmp/testdata
|
|
<Android SDK path>\platform-tools\adb.exe push <onnxruntime repo>\build\Windows\Debug\testdata\transform\gemm_activation_fusion /data/local/tmp/
|
|
```
|
|
|
|
You may need to change permissions to make onnx_test_runner executable:
|
|
`<Android SDK path>\platform-tools\adb.exe shell chmod +x /data/local/tmp/onnx_test_runner`
|
|
|
|
Run onnx_test_runner with the model directory:
|
|
`<Android SDK path>\platform-tools\adb.exe shell 'cd /data/local/tmp && ./onnx_test_runner gemm_activation_fusion'`
|
|
|
|
The output should look something like this:
|
|
|
|
```
|
|
D:\Android\platform-tools> .\adb.exe shell 'cd /data/local/tmp && ./onnx_test_runner gemm_activation_fusion'
|
|
result:
|
|
Models: 1
|
|
Total test cases: 1
|
|
Succeeded: 1
|
|
Not implemented: 0
|
|
Failed: 0
|
|
Stats by Operator type:
|
|
Not implemented(0):
|
|
Failed:
|
|
Failed Test Cases:
|
|
``` |