Skip to content

Latest commit

 

History

History
81 lines (54 loc) · 3.13 KB

Android_testing.md

File metadata and controls

81 lines (54 loc) · 3.13 KB

Testing Android Changes using the Emulator

See 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: