NDK <utils log.h=""> no such file or directory

时间:2015-09-01 22:15:39

标签: java android c++ eclipse android-ndk

Ok so I want to compile an FM Radio app i picked up on Github, I have never tried making a Low level language app before this is my first attempt, so I though of first compiling an already working project and analysing it, Android studio asked me to download ND set it up afterwards I developed this error:`Error:Gradle: Execution failed for task ':app:compileDebugNdk'.

com.android.ide.common.internal.LoggedErrorException: Failed to run command: /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 Error Code: 2 Output: In file included from /********************/********************/********************/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: fatal error: utils/Log.h: No such file or directory #include ^ compilation terminated. make: *** [/********************/********************/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] Error 1`

1 个答案:

答案 0 :(得分:4)

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

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

如果您 真的 想要坚持这个项目,我建议您先从文件jni/fmr/fmr.h

中进行一些更改

1:将<utils/log.h>更改为<android/log.h>

当你重新编译时,它可能会抱怨它无法找到的所有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