diff --git a/android_openssl.cmake b/android_openssl.cmake
index fb2254a..9f8a20b 100644
--- a/android_openssl.cmake
+++ b/android_openssl.cmake
@@ -1,26 +1,51 @@
-function(add_android_openssl_libraries)
-  if(CMAKE_BUILD_TYPE STREQUAL "Debug")
-    set(ssl_root_path ${CMAKE_CURRENT_FUNCTION_LIST_DIR}/no-asm)
-  else()
-    set(ssl_root_path ${CMAKE_CURRENT_FUNCTION_LIST_DIR})
-  endif()
-
-  if(Qt6_VERSION VERSION_GREATER_EQUAL 6.5.0)
-    if(NOT OPENSSL_ROOT_DIR)
-      set(OPENSSL_ROOT_DIR ${SSL_ROOT_PATH}/ssl_3/${CMAKE_ANDROID_ARCH_ABI})
+if(NOT TARGET OpenSSL::Crypto OR NOT TARGET OpenSSL::SSL)
+    if(CMAKE_BUILD_TYPE STREQUAL "Debug")
+        set(ssl_root_path ${CMAKE_CURRENT_LIST_DIR}/no-asm)
+    else()
+        set(ssl_root_path ${CMAKE_CURRENT_LIST_DIR})
     endif()
-    list(APPEND android_extra_libs
-         ${ssl_root_path}/ssl_3/${CMAKE_ANDROID_ARCH_ABI}/libcrypto_3.so
-         ${ssl_root_path}/ssl_3/${CMAKE_ANDROID_ARCH_ABI}/libssl_3.so)
-  else()
-    if(NOT OPENSSL_ROOT_DIR)
-      set(OPENSSL_ROOT_DIR ${SSL_ROOT_PATH}/ssl_1.1/${CMAKE_ANDROID_ARCH_ABI})
+
+    if(Qt6_VERSION VERSION_GREATER_EQUAL 6.5.0)
+        set(ssl_version_dir ssl_3)
+        set(libcrypto libcrypto_3.so)
+        set(libssl libssl_3.so)
+    else()
+        set(ssl_version_dir ssl_1.1)
+        set(libcrypto libcrypto_1_1.so)
+        set(libssl libssl_1_1.so)
     endif()
-    list(APPEND android_extra_libs
-         ${ssl_root_path}/ssl_1.1/${CMAKE_ANDROID_ARCH_ABI}/libcrypto_1_1.so
-         ${ssl_root_path}/ssl_1.1/${CMAKE_ANDROID_ARCH_ABI}/libssl_1_1.so)
-  endif()
 
-  set_target_properties(${ARGN} PROPERTIES QT_ANDROID_EXTRA_LIBS
-                                           "${android_extra_libs}")
+    set(OPENSSL_LIB_DIR ${ssl_root_path}/${ssl_version_dir}/${CMAKE_ANDROID_ARCH_ABI})
+    set(OPENSSL_INCLUDE_DIR ${ssl_root_path}/${ssl_version_dir}/include)
+
+    add_library(OpenSSL::Crypto SHARED IMPORTED)
+    set_target_properties(OpenSSL::Crypto PROPERTIES
+        IMPORTED_LOCATION "${OPENSSL_LIB_DIR}/${libcrypto}"
+        INTERFACE_INCLUDE_DIRECTORIES "${OPENSSL_INCLUDE_DIR}"
+    )
+
+    add_library(OpenSSL::SSL SHARED IMPORTED)
+    set_target_properties(OpenSSL::SSL PROPERTIES
+        IMPORTED_LOCATION "${OPENSSL_LIB_DIR}/${libssl}"
+        INTERFACE_INCLUDE_DIRECTORIES "${OPENSSL_INCLUDE_DIR}"
+    )
+
+    set(_OPENSSL_EXTRA_LIBS_PATHS
+        "${OPENSSL_LIB_DIR}/${libcrypto}"
+        "${OPENSSL_LIB_DIR}/${libssl}"
+        CACHE INTERNAL "Android OpenSSL libraries for QT_ANDROID_EXTRA_LIBS"
+    )
+endif()
+
+function(add_android_openssl_libraries)
+    foreach(TARGET_NAME ${ARGN})
+        if(TARGET ${TARGET_NAME})
+            set_property(TARGET ${TARGET_NAME} APPEND PROPERTY
+                QT_ANDROID_EXTRA_LIBS ${_OPENSSL_EXTRA_LIBS_PATHS}
+            )
+            target_link_libraries(${TARGET_NAME} PUBLIC OpenSSL::SSL OpenSSL::Crypto)
+        else()
+            message(WARNING "add_android_openssl_libraries(): target '${TARGET_NAME}' does not exist.")
+        endif()
+    endforeach()
 endfunction()