提问人:jcday 提问时间:7/26/2023 最后编辑:jcday 更新时间:7/27/2023 访问量:12
如何让 Android Studio 构建原生库的调试版本?
How do I get Android Studio to build a debug version of my native library?
问:
我已将库从 Visual Studio 转换为 Android Studio,并将其从 Visual Studio 的解决方案文件移动到 CMake 的 CMakeLists.txt 文件。目前为止,一切都好。转换后的构建系统可以工作,但据我所知,它只构建了一个发布版本。
(当我在 C++ 代码中设置断点时,它会忽略它。当我在 Java 中设置断点时,代码会正确停止,但是当我到达 C++ 代码时,我只得到汇编,而不是 C++ 源代码。
当我选择在Android Studio中以调试模式运行程序时,我需要CMake构建库的调试版本,并为发布模式构建一个符号剥离版本。我相信它目前正在做后者(尽管如果有人能证实这一点会很棒),但我需要知道如何哄骗它也做前者。
在 StackOverflow 上提出了一个相关的问题,但这似乎是关于包含发布与调试库而不是构建一个。
以下是 CMakeLists.txt 的相关部分:
set(ALL_FILES
${no_group_source_files}
${Header_Files__AppCommonsrc}
${Header_Files__commonsrc}
${Source_Files__AppCommonsrc}
${Source_Files__commonsrc}
)
add_library(
NativeTools
SHARED
${ALL_FILES} )
find_library(
log-lib
log )
set(MY_DEBUG_OPTIONS "-g2;-gdwarf-2;-O0;-fno-rtti;-fno-omit-frame-pointer;-mthumb;-fexceptions;-mfloat-abi=softfp;-fno-short-enums")
set(MY_RELEASE_OPTIONS "-gline-tables-only;-O3;-fno-rtti;-fomit-frame-pointer;-fdata-sections;-mthumb;-fexceptions;-fno-short-enums")
target_compile_options(${PROJECT_NAME} PUBLIC "$<$<CONFIG:DEBUG>:${MY_DEBUG_OPTIONS}>")
target_compile_options(${PROJECT_NAME} PUBLIC "$<$<CONFIG:RELEASE>:${MY_RELEASE_OPTIONS}>")
if("${ANDROID_ABI}" STREQUAL "armeabi-v7a")
set(ADDITIONAL_LIBRARY_DEPENDENCIES
"../common/openssl/Android/openssl/libcrypto.a;"
"../common/openssl/Android/openssl/libssl.a"
)
elseif("${ANDROID_ABI}" STREQUAL "arm64-v8a")
set(ADDITIONAL_LIBRARY_DEPENDENCIES
"../common/openssl/Android64/openssl/libcrypto.a;"
"../common/openssl/Android64/openssl/libssl.a"
)
elseif("${ANDROID_ABI}" STREQUAL "x86_64")
set(ADDITIONAL_LIBRARY_DEPENDENCIES
"../common/openssl/Androidx64/openssl/libcrypto.a;"
"../common/openssl/Androidx64/openssl/libssl.a"
)
elseif("${ANDROID_ABI}" STREQUAL "x86")
set(ADDITIONAL_LIBRARY_DEPENDENCIES
"../common/openssl/Androidx86/openssl/libcrypto.a;"
"../common/openssl/Androidx86/openssl/libssl.a"
)
endif()
target_link_libraries(${PROJECT_NAME} PUBLIC "${ADDITIONAL_LIBRARY_DEPENDENCIES}" ${log-lib})
答: 暂无答案
评论