Android Studio не может найти заголовки Oboe, но приложение все еще работает

Я пытаюсь включить собственную библиотеку Oboe в создаваемую мной DAW. Вроде работает, приложение вроде работает нормально. Проблема в том, что Android Studio, похоже, не может найти заголовки из каталога Oboe. Это приводит к тому, что я не могу использовать многие функции 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);
}

За исключением того, что каждый раз, когда я упоминаю «гобой», текст становится красным.

При наведении курсора мыши на красный текст появляется всплывающее сообщение: «Не могу найти гобой». Что странно, потому что у проекта нет проблем с компиляцией и запуском с написанным кодом. Я думаю, это может иметь какое-то отношение к пути в Android Studio, который определен неправильно. Я попытался создать общую библиотеку, имитирующую образец кода, приведенный в репозитории oboe, и попытался реализовать ее как библиотеку вместо подкаталога в файле CMakeList, но в конце концов вернулся к ссылке на проект, импортированный git, в папке моих проектов как подкаталог.

Реализация Oboe в make-файле:

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 не может найти заголовки.

Я искал других людей с той же проблемой, но это всегда было связано с сбоем, а не с проблемой самого программного обеспечения Android Studio.

Заранее благодарю за любую помощь.

  • Расмус

person ccxi11    schedule 27.08.2019    source источник
comment
За исключением того, что каждый раз, когда я упоминаю гобой, текст становится красным. - Не путайте свои IDE (ошибочные) в попытках помочь вам с тем, что на самом деле действительно и что говорит фактический компилятор. Просто потому, что ваша IDE (ограниченная) синтаксический анализатор C ++ чего-то не понимает и помечает это красным (или чем-то еще), not означает, что это недопустимый C ++. Это просто означает, что ваша IDE ошибочна (что случается очень часто).   -  person Jesper Juhl    schedule 27.08.2019
comment
Спасибо за ваш ответ! Значит, нет очевидного способа решить эту проблему?   -  person ccxi11    schedule 27.08.2019
comment
Также при открытии кода примера из библиотеки ошибки в шапке нет.   -  person ccxi11    schedule 27.08.2019
comment
IDE несовершенны и не реализуют полные синтаксические анализаторы C ++. Так что иногда они ошибаются. Смирись с этим. Скомпилируйте свой код и получите сообщения от реального компилятора, если вам нужно что-то, чему вы можете доверять (подробнее).   -  person Jesper Juhl    schedule 27.08.2019
comment
Тогда я и сделаю это. Спасибо!   -  person ccxi11    schedule 27.08.2019
comment
@JesperJuhl Одно из основных преимуществ использования IDE по сравнению с командной строкой - это получение всех полезных вещей, таких как автозаполнение, ошибки линтера, предупреждения компилятора, ошибки компоновщика, заблаговременно, без необходимости проходить полную сборку. Если Android Studio показывает ошибки при успешной сборке, это ошибка, а не то, с чем нужно просто мириться. Вы можете легко сообщить об ошибке, перейдя в Help->Submit Feedback   -  person donturner    schedule 04.09.2019
comment
@donturner Я не согласен, но это просто факт жизни, что большинство (все?) IDE не используют полные синтаксические анализаторы C ++ для своих предупреждений пользовательского интерфейса и т. д. (что имеет смысл, поскольку это замедлит их вплоть до скорости полной сборки). Итак, чтобы получить истинное представление, вы должны запустить настоящий компилятор.   -  person Jesper Juhl    schedule 04.09.2019
comment
Спасибо за все комментарии. Это дало мне некоторое представление о том, в чем может быть проблема. Я решил это, создав новые проекты, в которых я писал в make-файл в разном порядке, создавая проект для каждой написанной мной строчки. Это привело к тому, что он внезапно не показывал никаких ошибок. Во время этого процесса я также попробовал ответить от donturner.   -  person ccxi11    schedule 06.10.2019


Ответы (1)


Со мной такое случается часто. Это расстраивает, и я никогда не могу точно определить, в чем причина (кроме очевидного «индексатор не работает»), однако некоторые вещи обычно исправляют. Вот что я пробую в порядке влияния времени на мой рабочий день:

  1. Сборка -> Обновить связанный проект C ++
  2. Закройте проект, откройте его заново
  3. Файл -> Сделать недействительными кеши и перезапустить
  4. Закройте Android Studio. Удалите «скрытую» папку кеша в ~ / Library / Caches / AndroidStudio. Снова откройте Android Studio.
  5. Проверьте наличие новой версии Android Studio, при наличии обновите текущую версию.
person donturner    schedule 04.09.2019