在 NDK 中增加日志,需要以下步骤
第一步:在 CMakeLists.txt 中配置
查找日志库
find_library(
log-lib
log
)
链接库
target_link_libraries(
native-lib
${log-lib}
)
第二步:使用
在 c++ 中增加日志
#define TAG "zinc"
#define LOGI(...) __android_log_print(ANDROID_LOG_INFO, TAG, __VA_ARGS__)
使用
LOGI("JNI native.");
问题
正常情况下不会有问题,但如果有多个 cpp 文件,然后生成多个 so 库(即使用 add_library 进行添加),就会有如下的错误产生
undefined reference to `__android_log_print'
解决方式
将多个 cpp 文件生成为一个 so 库就可以了
修改之前
add_library (
native-lib-a
SHARED
a.cpp
)
add_library (
native-lib-b
SHARED
b.cpp
)
target_link_libraries(
native-lib-a
native-lib-b
${log-lib}
)
修改之后
第一种:
add_library(
native-lib
SHARED
a.cpp
b.cpp
c.cpp
)
target_link_libraries(
native-lib
${log-lib}
)
第二种:
add_library (
native-lib-a
SHARED
a.cpp
)
add_library (
native-lib-b
SHARED
b.cpp
)
target_link_libraries(
native-lib-a
${log-lib}
)
target_link_libraries(
native-lib-b
${log-lib}
)