【发布时间】:2018-08-13 08:21:17
【问题描述】:
我正在尝试在 Android Studio 中向我的 C++ 项目添加跟踪,我只是按照文档中的示例在我的应用中创建一个小型分析库:https://developer.android.com/ndk/reference/group/tracing
我在 Android Studio 中的“#include”行中收到“未使用的导入语句”消息以及 error: use of undeclared identifier 'ATrace_beginSection' 编译错误。我的库的 CMakeLists.txt 文件是:
project(profiling)
if(ANDROID)
include_directories(${ANDROID_SYSROOT}/usr/include)
message(STATUS "Including ${ANDROID_SYSROOT}/usr/include")
endif()
set(profiling_SRCS
profiling.cpp
)
set(profiling_HEADERS
profiling.h
)
add_library(profiling STATIC ${profiling_SRCS} ${profiling_HEADERS})
我已经检查了上面的“消息”条目的 cmake 日志,ANDROID_SYSROOT 确实指向了正确的位置。该库显示在 Android Studio 的 app->cpp 部分中,CMakeLists.txt 文件显示在外部构建文件部分中,我尝试过重新同步 Gradle,我尝试过清理和重建,没有骰子。我的 build.gradle 中的 targetSdkVersion 设置为 27。
我错过了什么?
【问题讨论】:
-
我尝试过的其他没有用的方法:
-
** 使用 target_include_directories 命令,而不是 include_directories。这些都没有改变 $INCLUDE_DIRECTORIES (我之前和之后都用消息打印了它)。我还使用
set(CMAKE_C_FLAGS "-I${ANDROID_SYSROOT}/usr/include ${CMAKE_C_FLAGS}" )在一瞬间**检查了$ INCLUDES。这 确实 更新了 CFLAGS 但更新后的值仍然没有进入 android_gradle_build.JSON 。 (抱歉重复发布,评论编辑显然有 5 分钟超时) -
嘎啊。问题是 build.gradle 中的 minSdkVersion 设置 - trace.h 在顶部有这个
#if __ANDROID_API__ >= 23。不管它值多少钱,我也不需要在这个库的 CmakeLists.txt 中包含 ${ANDROID_SYSROOT}/usr/include ......希望这会在未来对其他人有所帮助。
标签: android cmake android-ndk