NDK <Utils/Log.h> 没有这样的文件或目录

Posted

技术标签:

【中文标题】NDK <Utils/Log.h> 没有这样的文件或目录【英文标题】:NDK <Utils/Log.h> no such file or directory 【发布时间】:2015-11-27 06:52:50 【问题描述】:

好的,所以我想编译一个我在Github 上找到的 FM Radio 应用程序,在我第一次尝试之前,我从未尝试过制作一个低级语言应用程序,所以我想先编译一个已经工作的项目并分析它,android Studio 让我下载 ND 设置它之后我开发了这个错误:`Error:Gradle: Execution failed for task ':app:compileDebugNdk'。

com.android.ide.common.internal.LoggedErrorException:无法运行命令: /Applications/adt-bundle-mac-x86_64-20140702/ndk/ndk-build NDK_PROJECT_PATH=null APP_BUILD_SCRIPT=/********************/***** ******************/AndroidStudioProjects/android_packages_apps_FMRadio-cm-12.1/app/build/intermediates/ndk/debug/Android.mk APP_PLATFORM=android-21 NDK_OUT=/***** ******************/********************/AndroidStudioProjects/android_packages_apps_FMRadio-cm-12.1/app/build/intermediates /ndk/debug/obj NDK_LIBS_OUT=/********************/******************** /AndroidStudioProjects/android_packages_apps_FMRadio-cm-12.1/app/build/intermediates/ndk/debug/lib APP_ABI=all 错误代码: 2 输出: 在 /********************/************************/*** 中包含的文件中*****************/android_packages_apps_FMRadio-cm-12.1/app/src/main/jni/fmr/common.cpp:17:0: /************************/********************/AndroidStudioProjects/android_packages_apps_FMRadio-cm-12.1 /app/src/main/jni/fmr/fmr.h:21:23:致命错误:utils/Log.h:没有这样的文件或目录 #包括 ^ 编译终止。 制作:*** [/********************/************************/AndroidStudioProjects /android_packages_apps_FMRadio-cm-12.1/app/build/intermediates/ndk/debug/obj/local/arm64-v8a/objs/app//******************** /************************/AndroidStudioProjects/android_packages_apps_FMRadio-cm-12.1/app/src/main/jni/fmr/common.o] 错误1`

【问题讨论】:

【参考方案1】:

看起来该项目并不是要构建为独立应用程序,而是作为完整固件构建的一部分(Cyanogen Mod 的一部分)。该错误基本上表示找不到文件utils/log.h。该文件不属于此项目,也不属于 Android NDK。

为了避免必须设置一个您很可能不会使用的完整环境,我建议选择另一个项目开始。

如果你真的想要坚持这个项目,我建议你从jni/fmr/fmr.h文件中的一些更改开始

1:将&lt;utils/log.h&gt;更改为&lt;android/log.h&gt;

当你重新编译时,它可能会抱怨它找不到的所有 ALOG* 定义。

2:替换此部分:

#undef FM_LIB_USE_XLOG

#ifdef FM_LIB_USE_XLOG
#include <cutils/xlog.h>
#undef LOGV
#define LOGV(...) XLOGV(__VA_ARGS__)
#undef LOGD
#define LOGD(...) XLOGD(__VA_ARGS__)
#undef LOGI
#define LOGI(...) XLOGI(__VA_ARGS__)
#undef LOGW
#define LOGW(...) XLOGW(__VA_ARGS__)
#undef LOGE
#define LOGE(...) XLOGE(__VA_ARGS__)
#else
#undef LOGV
#define LOGV(...) ALOGV(__VA_ARGS__)
#undef LOGD
#define LOGD(...) ALOGD(__VA_ARGS__)
#undef LOGI
#define LOGI(...) ALOGI(__VA_ARGS__)
#undef LOGW
#define LOGW(...) ALOGW(__VA_ARGS__)
#undef LOGE
#define LOGE(...) ALOGE(__VA_ARGS__)
#endif

这部分:

#define LOGV(...)  __android_log_print(ANDROID_LOG_VERBOSE,LOG_TAG,__VA_ARGS__)
#define LOGD(...)  __android_log_print(ANDROID_LOG_DEBUG,LOG_TAG,__VA_ARGS__)
#define LOGI(...)  __android_log_print(ANDROID_LOG_INFO,LOG_TAG,__VA_ARGS__)
#define LOGW(...)  __android_log_print(ANDROID_LOG_WARN,LOG_TAG,__VA_ARGS__)
#define LOGE(...)  __android_log_print(ANDROID_LOG_ERROR,LOG_TAG,__VA_ARGS__)

这应该让你开始。

编辑:

我想我找到了引用的utils/log.h(但可能不是来自正确的项目): https://github.com/CyanogenMod/android_frameworks_ex/blob/cm-12.0/framesequence/jni/utils/log.h

【讨论】:

非常感谢,虽然没用,但你很有帮助。

以上是关于NDK <Utils/Log.h> 没有这样的文件或目录的主要内容,如果未能解决你的问题,请参考以下文章

android log在不同层使用不同方法

Android驱动编写LED-NDK程序

android 使用NDK api调用AssetManager

NDK:动态注册方法

NDK:动态注册方法

Android ndk 加载简单的gif 图像