Android Studio 找不到 Oboe headers,但应用程序仍在运行

Android Studio cannot find Oboe headers, but app still runs

我正在尝试将双簧管本机库合并到我正在制作的 DAW 中。它似乎在工作,该应用程序似乎可以正常运行。问题是,Android Studio 似乎无法从双簧管目录中找到 headers。这导致我无法使用 Android Studio 中的许多功能,例如预测等。 看起来像这样(无法上传图片):

#include <jni.h>
#include <string>
#include <android/log.h>
#include <oboe/Oboe.h>

using namespace std;

extern "C" JNIEXPORT void JNICALL
Java_com_ralleq_nsynth_MainActivity_buildAudioStream(JNIEnv *env, jclass /* this */) {

    oboe::AudioStreamBuilder builder;
    oboe::AudioStream *stream = nullptr;
    oboe::Result result = builder.openStream(&stream);

    __android_log_print(ANDROID_LOG_VERBOSE, "NATIVE", "Didn't crash", 0);
}

除非我每次引用 "oboe",否则文本会变红。

将鼠标悬停在红色文本上会显示一个弹出窗口:“找不到 'oboe'”。这很奇怪,因为该项目在编译和 运行 编写代码时没有问题。 我认为这可能与 Android Studio 中未正确定义的路径有关。我尝试创建一个共享库来模仿双簧管存储库中给出的示例代码,并尝试将其实现为库而不是 CMakeList 文件中的子目录,但最终返回到引用我的 git-imported 项目项目文件夹作为子目录。

Oboe在makefile中的实现:

set(OBOE_DIR /AndroidStudioProjects/oboe)
add_subdirectory(${OBOE_DIR} ./oboe)
include_directories(${OBOE_DIR} ./include)

target_link_libraries( # Specifies the target library.
        native-lib
        oboe
        log
        # Links the target library to the log library
        # included in the NDK.
        ${log-lib})

我注意到,在我刷新 C++ 项目时添加了对库的引用,但我似乎无法访问它们。 我就是不明白,怎么 Android Studio 找不到 headers.

我一直在四处寻找有同样问题的其他人,但它一直是关于崩溃而不是 Android Studio 软件本身的问题。

在此先感谢您的帮助。

我经常遇到这种情况。这令人沮丧,我永远无法弄清楚到底是什么原因(除了明显的 "the indexer is borked"),但是,通常有一些事情可以解决它。以下是我尝试的方法,按照对我工作日的时间影响排序:

  1. 构建 -> 刷新链接的 C++ 项目
  2. 关闭项目,重新打开它
  3. 文件 -> 使缓存无效并重新启动
  4. 关闭Android 工作室。删除 ~/Library/Caches/AndroidStudio 中的 "hidden" 缓存文件夹。重新打开 Android Studio。
  5. 检查 Android Studio 的新版本,如果可用更新当前版本。

您的 gradle 脚本中可能缺少预制件声明

buildFeatures {
        viewBinding true
        prefab true
    }

或Gradle属性

android.useAndroidX=true
android.enableJetifier=true
org.gradle.jvmargs=-Xmx2048m -Dfile.encoding=UTF-8
kotlin.code.style=official
android.prefabVersion=1.0.+
# Workaround bug in AGP where the prefab dependency is being resolved from a
# non-Gradle thread when enableParallelJsonGen is enabled.
# https://issuetracker.google.com/149575364
android.enableParallelJsonGen=false
android.buildFeatures.prefab = true