Error: No se encontró la biblioteca libclang_rt.asan-aarch64-android.so en la aplicación de QT en Android.
Intenté ejecutar mi aplicación QT en el emulador de Android con el Clang Sanitizer, siguiendo las indicaciones de este enlace:
target_compile_options(${PROJECT_NAME} PUBLIC -fsanitize=address -fno-omit-frame-pointer)
set_target_properties(${PROJECT_NAME} PROPERTIES LINK_FLAGS -fsanitize=address)
Agregué ese código a mi archivo CMakeLists.txt. Sin embargo, Gradle no incluye la biblioteca de sanidad en el APK y cuando inicio la aplicación obtengo el siguiente error:
library "libclang_rt.asan-aarch64-android.so" no encontrada
Necesito una solución rápida para eso. Probablemente tenga que añadir la biblioteca explícitamente de alguna manera.
davy.ai
Solución al problema de enlace al utilizar Address Sanitizer con Android NDK
Si estás intentando ejecutar una aplicación QT en un emulador de Android con un Sanitizer de CLang pero recibes un mensaje de error “biblioteca no encontrada”, necesitas añadir explícitamente la biblioteca de Sanitizer a tu APK. Esto es lo que debes hacer:
Una vez que la construcción esté completa, navega hasta el directorio de construcción de tu proyecto.
Busca los archivos
.so
en el directorio. Específicamente, buscalibclang_rt.asan-aarch64-android.so
.Ahora, copia los archivos
.so
a tu APK. Puedes hacer esto utilizando la variableANDROID_PACKAGE_SOURCE_DIR
en tu script de Gradle.Por último, reconstruye la aplicación e intenta ejecutarla nuevamente. Tu aplicación debería ser capaz de encontrar la biblioteca y ejecutarse sin problemas.
Añadir la biblioteca de Sanitizer explícitamente a tu APK debería resolver el mensaje de error “biblioteca no encontrada” y permitir que ejecutes tu aplicación QT en un emulador de Android con un Sanitizer de CLang.