有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

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

好的,所以我想编译一个调频广播应用程序,我在Github上学的,在这是我第一次尝试之前,我从来没有尝试过制作一个低级语言应用程序,所以我想先编译一个已经在工作的项目并分析它,Android studio让我下载并设置它,后来我发现了这个错误:'error:Gradle:Execution failed for task':app:compiledBugndk'

com.安卓.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/安卓_packages_apps_FMRadio-cm-12.1/app/build/intermediates/ndk/debug/Android.mk APP_PLATFORM=安卓-21 NDK_OUT=/********************/********************/AndroidStudioProjects/安卓_packages_apps_FMRadio-cm-12.1/app/build/intermediates/ndk/debug/obj NDK_LIBS_OUT=/********************/********************/AndroidStudioProjects/安卓_packages_apps_FMRadio-cm-12.1/app/build/intermediates/ndk/debug/lib APP_ABI=all Error Code: 2 Output: In file included from /********************/********************/********************/安卓_packages_apps_FMRadio-cm-12.1/app/src/main/jni/fmr/common.cpp:17:0: /********************/********************/AndroidStudioProjects/安卓_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/安卓_packages_apps_FMRadio-cm-12.1/app/build/intermediates/ndk/debug/obj/local/arm64-v8a/objs/app//********************/********************/AndroidStudioProjects/安卓_packages_apps_FMRadio-cm-12.1/app/src/main/jni/fmr/common.o] Error 1`


共 (1) 个答案

  1. # 1 楼答案

    看起来这个项目不是要作为一个独立的应用程序来构建,而是作为完整固件构建的一部分(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