-
Notifications
You must be signed in to change notification settings - Fork 3.7k
Description
Describe the issue
When I try to build an onnxruntime aar package with Qnn support for Android device, the build script throw an error.
I can locate the error is caused by CMakeLists.txt,onnxruntime_unittest.cmake
The CMakeLists.txt should set a Variable named QNN_LIB_FILES for unittest, which will not set when build for android, and this will cause the error.
Besides, the QNN_ARCH_ABI in CMakeLists.txt line 884 is strange. I didn't found the arch support in the newest Qnn library.
When skip the unittest, the --build_java is available.
Patch file:
diff --git a/cmake/onnxruntime_unittests.cmake b/cmake/onnxruntime_unittests.cmake
index b23365e..58e60af 100644
--- a/cmake/onnxruntime_unittests.cmake
+++ b/cmake/onnxruntime_unittests.cmake
@@ -1612,7 +1612,7 @@ if (NOT CMAKE_SYSTEM_NAME STREQUAL "Emscripten")
endif()
if (NOT onnxruntime_ENABLE_TRAINING_TORCH_INTEROP)
- if (onnxruntime_BUILD_JAVA AND NOT onnxruntime_ENABLE_STATIC_ANALYSIS)
+ if (onnxruntime_BUILD_JAVA AND NOT onnxruntime_ENABLE_STATIC_ANALYSIS AND NOT CMAKE_SYSTEM_NAME STREQUAL "Android")
block()
message(STATUS "Enabling Java tests")Configuration below:
ORT_VERSION: 1.23.2
QNN_VERSION: 2.40.0.251030
NDK_VERSION: 27.0.12077973
ANDROID_API: 27
JAVA_HOME: /lib/jvm/java-17-openjdk-amd64
Cross compile environment:
OS: Ubuntu 25.10 x86_64
Kernel: Linux 6.17.0-8-generic
Urgency
No response
Target platform
arm64-v8a
Build script
./build.sh \
--android \
--android_sdk_path $(ANDROID_HOME) \
--android_ndk_path $(ANDROID_HOME)/ndk/$(NDK_VERSION) \
--android_abi arm64-v8a \
--android_api $(ANDROID_API) \
--cmake_generator Ninja \
--use_qnn static_lib \
--qnn_home $(QNN_SDK_DIR)/qairt/$(QNN_VERSION) \
--config Release \
--parallel \
--skip_tests \
--build_shared_lib \
--build_dir $(BUILD_DIR) \
--build_javaFull build scripts can be found in https://github.com/zhao-leo/onnxruntime_qnn_android_build
Error / output
[1606/1617] Linking CXX static library libonnxruntime_providers_qnn.a
FAILED: libonnxruntime_providers_qnn.a
: && /usr/bin/cmake -E rm -f libonnxruntime_providers_qnn.a && /home/april/Android/Sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/linux-x86_64/bin/llvm-ar qc libonnxruntime_providers_qnn.a CMakeFiles/onnxruntime_providers_qnn.dir/home/april/Desktop/onnxruntime_qnn_android_build/onnxruntime/onnxruntime/core/providers/qnn/builder/onnx_ctx_model_helper.cc.o CMakeFiles/onnxruntime_providers_qnn.dir/home/april/Desktop/onnxruntime_qnn_android_build/onnxruntime/onnxruntime/core/providers/qnn/builder/op_builder_factory.cc.o CMakeFiles/onnxruntime_providers_qnn.dir/home/april/Desktop/onnxruntime_qnn_android_build/onnxruntime/onnxruntime/core/providers/qnn/builder/opbuilder/argmax_min_op_builder.cc.o CMakeFiles/onnxruntime_providers_qnn.dir/home/april/Desktop/onnxruntime_qnn_android_build/onnxruntime/onnxruntime/core/providers/qnn/builder/opbuilder/base_op_builder.cc.o CMakeFiles/onnxruntime_providers_qnn.dir/home/april/Desktop/onnxruntime_qnn_android_build/onnxruntime/onnxruntime/core/providers/qnn/builder/opbuilder/batch_norm_op_builder.cc.o CMakeFiles/onnxruntime_providers_qnn.dir/home/april/Desktop/onnxruntime_qnn_android_build/onnxruntime/onnxruntime/core/providers/qnn/builder/opbuilder/cast_op_builder.cc.o CMakeFiles/onnxruntime_providers_qnn.dir/home/april/Desktop/onnxruntime_qnn_android_build/onnxruntime/onnxruntime/core/providers/qnn/builder/opbuilder/clip_op_builder.cc.o CMakeFiles/onnxruntime_providers_qnn.dir/home/april/Desktop/onnxruntime_qnn_android_build/onnxruntime/onnxruntime/core/providers/qnn/builder/opbuilder/conv_op_builder.cc.o CMakeFiles/onnxruntime_providers_qnn.dir/home/april/Desktop/onnxruntime_qnn_android_build/onnxruntime/onnxruntime/core/providers/qnn/builder/opbuilder/cumsum_op_builder.cc.o CMakeFiles/onnxruntime_providers_qnn.dir/home/april/Desktop/onnxruntime_qnn_android_build/onnxruntime/onnxruntime/core/providers/qnn/builder/opbuilder/einsum_op_builder.cc.o CMakeFiles/onnxruntime_providers_qnn.dir/home/april/Desktop/onnxruntime_qnn_android_build/onnxruntime/onnxruntime/core/providers/qnn/builder/opbuilder/expand_op_builder.cc.o CMakeFiles/onnxruntime_providers_qnn.dir/home/april/Desktop/onnxruntime_qnn_android_build/onnxruntime/onnxruntime/core/providers/qnn/builder/opbuilder/gather_op_builder.cc.o CMakeFiles/onnxruntime_providers_qnn.dir/home/april/Desktop/onnxruntime_qnn_android_build/onnxruntime/onnxruntime/core/providers/qnn/builder/opbuilder/gemm_op_builder.cc.o CMakeFiles/onnxruntime_providers_qnn.dir/home/april/Desktop/onnxruntime_qnn_android_build/onnxruntime/onnxruntime/core/providers/qnn/builder/opbuilder/instance_norm_op_builder.cc.o CMakeFiles/onnxruntime_providers_qnn.dir/home/april/Desktop/onnxruntime_qnn_android_build/onnxruntime/onnxruntime/core/providers/qnn/builder/opbuilder/layer_norm_op_builder.cc.o CMakeFiles/onnxruntime_providers_qnn.dir/home/april/Desktop/onnxruntime_qnn_android_build/onnxruntime/onnxruntime/core/providers/qnn/builder/opbuilder/lrn_op_builder.cc.o CMakeFiles/onnxruntime_providers_qnn.dir/home/april/Desktop/onnxruntime_qnn_android_build/onnxruntime/onnxruntime/core/providers/qnn/builder/opbuilder/lstm_op_builder.cc.o CMakeFiles/onnxruntime_providers_qnn.dir/home/april/Desktop/onnxruntime_qnn_android_build/onnxruntime/onnxruntime/core/providers/qnn/builder/opbuilder/matmul_op_builder.cc.o CMakeFiles/onnxruntime_providers_qnn.dir/home/april/Desktop/onnxruntime_qnn_android_build/onnxruntime/onnxruntime/core/providers/qnn/builder/opbuilder/mean_op_builder.cc.o CMakeFiles/onnxruntime_providers_qnn.dir/home/april/Desktop/onnxruntime_qnn_android_build/onnxruntime/onnxruntime/core/providers/qnn/builder/opbuilder/pad_op_builder.cc.o CMakeFiles/onnxruntime_providers_qnn.dir/home/april/Desktop/onnxruntime_qnn_android_build/onnxruntime/onnxruntime/core/providers/qnn/builder/opbuilder/pool_op_builder.cc.o CMakeFiles/onnxruntime_providers_qnn.dir/home/april/Desktop/onnxruntime_qnn_android_build/onnxruntime/onnxruntime/core/providers/qnn/builder/opbuilder/reciprocal_op_builder.cc.o CMakeFiles/onnxruntime_providers_qnn.dir/home/april/Desktop/onnxruntime_qnn_android_build/onnxruntime/onnxruntime/core/providers/qnn/builder/opbuilder/reduce_op_builder.cc.o CMakeFiles/onnxruntime_providers_qnn.dir/home/april/Desktop/onnxruntime_qnn_android_build/onnxruntime/onnxruntime/core/providers/qnn/builder/opbuilder/reshape_op_builder.cc.o CMakeFiles/onnxruntime_providers_qnn.dir/home/april/Desktop/onnxruntime_qnn_android_build/onnxruntime/onnxruntime/core/providers/qnn/builder/opbuilder/resize_op_builder.cc.o CMakeFiles/onnxruntime_providers_qnn.dir/home/april/Desktop/onnxruntime_qnn_android_build/onnxruntime/onnxruntime/core/providers/qnn/builder/opbuilder/simple_op_builder.cc.o CMakeFiles/onnxruntime_providers_qnn.dir/home/april/Desktop/onnxruntime_qnn_android_build/onnxruntime/onnxruntime/core/providers/qnn/builder/opbuilder/slice_op_builder.cc.o CMakeFiles/onnxruntime_providers_qnn.dir/home/april/Desktop/onnxruntime_qnn_android_build/onnxruntime/onnxruntime/core/providers/qnn/builder/opbuilder/softmax_op_builder.cc.o CMakeFiles/onnxruntime_providers_qnn.dir/home/april/Desktop/onnxruntime_qnn_android_build/onnxruntime/onnxruntime/core/providers/qnn/builder/opbuilder/split_op_builder.cc.o CMakeFiles/onnxruntime_providers_qnn.dir/home/april/Desktop/onnxruntime_qnn_android_build/onnxruntime/onnxruntime/core/providers/qnn/builder/opbuilder/tile_op_builder.cc.o CMakeFiles/onnxruntime_providers_qnn.dir/home/april/Desktop/onnxruntime_qnn_android_build/onnxruntime/onnxruntime/core/providers/qnn/builder/opbuilder/topk.cc.o CMakeFiles/onnxruntime_providers_qnn.dir/home/april/Desktop/onnxruntime_qnn_android_build/onnxruntime/onnxruntime/core/providers/qnn/builder/opbuilder/transpose_op_builder.cc.o CMakeFiles/onnxruntime_providers_qnn.dir/home/april/Desktop/onnxruntime_qnn_android_build/onnxruntime/onnxruntime/core/providers/qnn/builder/opbuilder/upsample_op_builder.cc.o CMakeFiles/onnxruntime_providers_qnn.dir/home/april/Desktop/onnxruntime_qnn_android_build/onnxruntime/onnxruntime/core/providers/qnn/builder/qnn_backend_manager.cc.o CMakeFiles/onnxruntime_providers_qnn.dir/home/april/Desktop/onnxruntime_qnn_android_build/onnxruntime/onnxruntime/core/providers/qnn/builder/qnn_context_mem_handle_manager.cc.o CMakeFiles/onnxruntime_providers_qnn.dir/home/april/Desktop/onnxruntime_qnn_android_build/onnxruntime/onnxruntime/core/providers/qnn/builder/qnn_def.cc.o CMakeFiles/onnxruntime_providers_qnn.dir/home/april/Desktop/onnxruntime_qnn_android_build/onnxruntime/onnxruntime/core/providers/qnn/builder/qnn_model.cc.o CMakeFiles/onnxruntime_providers_qnn.dir/home/april/Desktop/onnxruntime_qnn_android_build/onnxruntime/onnxruntime/core/providers/qnn/builder/qnn_model_wrapper.cc.o CMakeFiles/onnxruntime_providers_qnn.dir/home/april/Desktop/onnxruntime_qnn_android_build/onnxruntime/onnxruntime/core/providers/qnn/builder/qnn_node_group/channel_shuffle_fusion.cc.o CMakeFiles/onnxruntime_providers_qnn.dir/home/april/Desktop/onnxruntime_qnn_android_build/onnxruntime/onnxruntime/core/providers/qnn/builder/qnn_node_group/dq_q_fusion.cc.o CMakeFiles/onnxruntime_providers_qnn.dir/home/april/Desktop/onnxruntime_qnn_android_build/onnxruntime/onnxruntime/core/providers/qnn/builder/qnn_node_group/hardsigmoid_mul_fusion.cc.o CMakeFiles/onnxruntime_providers_qnn.dir/home/april/Desktop/onnxruntime_qnn_android_build/onnxruntime/onnxruntime/core/providers/qnn/builder/qnn_node_group/lpbqgemm_fusion.cc.o CMakeFiles/onnxruntime_providers_qnn.dir/home/april/Desktop/onnxruntime_qnn_android_build/onnxruntime/onnxruntime/core/providers/qnn/builder/qnn_node_group/lpbqmatmul_fusion.cc.o CMakeFiles/onnxruntime_providers_qnn.dir/home/april/Desktop/onnxruntime_qnn_android_build/onnxruntime/onnxruntime/core/providers/qnn/builder/qnn_node_group/qnn_node_group.cc.o CMakeFiles/onnxruntime_providers_qnn.dir/home/april/Desktop/onnxruntime_qnn_android_build/onnxruntime/onnxruntime/core/providers/qnn/builder/qnn_node_group/reshape_gemm_fusion.cc.o CMakeFiles/onnxruntime_providers_qnn.dir/home/april/Desktop/onnxruntime_qnn_android_build/onnxruntime/onnxruntime/core/providers/qnn/builder/qnn_node_group/scale_softmax_fusion.cc.o CMakeFiles/onnxruntime_providers_qnn.dir/home/april/Desktop/onnxruntime_qnn_android_build/onnxruntime/onnxruntime/core/providers/qnn/builder/qnn_node_group/udo_fusion.cc.o CMakeFiles/onnxruntime_providers_qnn.dir/home/april/Desktop/onnxruntime_qnn_android_build/onnxruntime/onnxruntime/core/providers/qnn/builder/qnn_node_group/utils.cc.o CMakeFiles/onnxruntime_providers_qnn.dir/home/april/Desktop/onnxruntime_qnn_android_build/onnxruntime/onnxruntime/core/providers/qnn/builder/qnn_quant_params_wrapper.cc.o CMakeFiles/onnxruntime_providers_qnn.dir/home/april/Desktop/onnxruntime_qnn_android_build/onnxruntime/onnxruntime/core/providers/qnn/builder/qnn_utils.cc.o CMakeFiles/onnxruntime_providers_qnn.dir/home/april/Desktop/onnxruntime_qnn_android_build/onnxruntime/onnxruntime/core/providers/qnn/ort_api.cc.o CMakeFiles/onnxruntime_providers_qnn.dir/home/april/Desktop/onnxruntime_qnn_android_build/onnxruntime/onnxruntime/core/providers/qnn/qnn_allocator.cc.o CMakeFiles/onnxruntime_providers_qnn.dir/home/april/Desktop/onnxruntime_qnn_android_build/onnxruntime/onnxruntime/core/providers/qnn/qnn_execution_provider.cc.o CMakeFiles/onnxruntime_providers_qnn.dir/home/april/Desktop/onnxruntime_qnn_android_build/onnxruntime/onnxruntime/core/providers/qnn/qnn_provider_factory.cc.o CMakeFiles/onnxruntime_providers_qnn.dir/home/april/Desktop/onnxruntime_qnn_android_build/onnxruntime/onnxruntime/core/providers/qnn/qnn_telemetry.cc.o CMakeFiles/onnxruntime_providers_qnn.dir/home/april/Desktop/onnxruntime_qnn_android_build/onnxruntime/onnxruntime/core/providers/qnn/rpcmem_library.cc.o && /home/april/Android/Sdk/ndk/27.0.12077973/toolchains/llvm/prebuilt/linux-x86_64/bin/llvm-ranlib libonnxruntime_providers_qnn.a && cd /home/april/Desktop/onnxruntime_qnn_android_build/onnxruntime/build/android/arm64-v8a/Release && /usr/bin/cmake -E copy /home/april/Desktop/onnxruntime_qnn_android_build/qnn_sdk/qairt/2.40.0.251030/LICENSE.pdf /home/april/Desktop/onnxruntime_qnn_android_build/onnxruntime/build/android/arm64-v8a/Release/Qualcomm_LICENSE.pdf && cd /home/april/Desktop/onnxruntime_qnn_android_build/onnxruntime/build/android/arm64-v8a/Release && /usr/bin/cmake -E copy /home/april/Desktop/onnxruntime_qnn_android_build/onnxruntime/build/android/arm64-v8a/Release/java/native-test
CMake Error: cmake version 3.31.6
Usage: /usr/bin/cmake -E <command> [arguments...]
Available commands:
capabilities - Report capabilities built into cmake in JSON format
cat [--] <files>... - concat the files and print them to the standard output
chdir dir cmd [args...] - run command in a given directory
compare_files [--ignore-eol] file1 file2
- check if file1 is same as file2
copy <file>... destination - copy files to destination (either file or directory)
copy_directory <dir>... destination - copy content of <dir>... directories to 'destination' directory
copy_directory_if_different <dir>... destination - copy changed content of <dir>... directories to 'destination' directory
copy_if_different <file>... destination - copy files if it has changed
echo [<string>...] - displays arguments as text
echo_append [<string>...] - displays arguments as text but no new line
env [--unset=NAME ...] [NAME=VALUE ...] [--] <command> [<arg>...]
- run command in a modified environment
environment - display the current environment
make_directory <dir>... - create parent and <dir> directories
md5sum <file>... - create MD5 checksum of files
sha1sum <file>... - create SHA1 checksum of files
sha224sum <file>... - create SHA224 checksum of files
sha256sum <file>... - create SHA256 checksum of files
sha384sum <file>... - create SHA384 checksum of files
sha512sum <file>... - create SHA512 checksum of files
remove [-f] <file>... - remove the file(s), use -f to force it (deprecated: use rm instead)
remove_directory <dir>... - remove directories and their contents (deprecated: use rm instead)
rename oldname newname - rename a file or directory (on one volume)
rm [-rRf] [--] <file/dir>... - remove files or directories, use -f to force it, r or R to remove directories and their contents recursively
sleep <number>... - sleep for given number of seconds
tar [cxt][vf][zjJ] file.tar [file/dir1 file/dir2 ...]
- create or extract a tar or zip archive
time command [args...] - run command and display elapsed time
touch <file>... - touch a <file>.
touch_nocreate <file>... - touch a <file> but do not create it.
create_symlink old new - create a symbolic link new -> old
create_hardlink old new - create a hard link new -> old
true - do nothing with an exit code of 0
false - do nothing with an exit code of 1
[1607/1617] Linking CXX static library libonnxruntime_providers.a
ninja: build stopped: subcommand failed.
Traceback (most recent call last):
File "/home/april/Desktop/onnxruntime_qnn_android_build/onnxruntime/tools/ci_build/build.py", line 2670, in <module>
sys.exit(main())
~~~~^^
File "/home/april/Desktop/onnxruntime_qnn_android_build/onnxruntime/tools/ci_build/build.py", line 2571, in main
build_targets(args, cmake_path, build_dir, configs, num_parallel_jobs, args.target)
~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^
File "/home/april/Desktop/onnxruntime_qnn_android_build/onnxruntime/tools/ci_build/build.py", line 1363, in build_targets
run_subprocess(cmd_args, env=env)
~~~~~~~~~~~~~~^^^^^^^^^^^^^^^^^^^
File "/home/april/Desktop/onnxruntime_qnn_android_build/onnxruntime/tools/ci_build/build.py", line 148, in run_subprocess
return run(*args, cwd=cwd, capture_stdout=capture_stdout, shell=shell, env=my_env)
File "/home/april/Desktop/onnxruntime_qnn_android_build/onnxruntime/tools/python/util/run.py", line 50, in run
completed_process = subprocess.run(
cmd,
...<6 lines>...
shell=shell,
)
File "/usr/lib/python3.13/subprocess.py", line 577, in run
raise CalledProcessError(retcode, process.args,
output=stdout, stderr=stderr)
subprocess.CalledProcessError: Command '['/usr/bin/cmake', '--build', 'build/android/arm64-v8a/Release', '--config', 'Release', '--', '-j20']' returned non-zero exit status 1.
make: *** [Makefile:67: build] Error 1
Visual Studio Version
None
GCC / Compiler Version
Clang 18.0.1