1

我正在尝试将 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 中未正确定义的路径有关。我尝试创建一个共享库,模仿双簧管存储库中给出的示例代码,并尝试将其实现为库而不是 CMakeList 文件中的子目录,但最终返回到在我的项目文件夹中引用 git 导入的项目作为子目录。

在makefile中Oboe的实现:

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 软件本身的问题。

提前感谢您的帮助。

  • 拉斯穆斯
4

2 回答 2

2

这经常发生在我身上。这令人沮丧,我永远无法确切地弄清楚原因是什么(除了明显的“索引器坏了”),但是,通常有一些事情可以解决它。这是我尝试的,按时间对我工作日的影响:

  1. 构建 -> 刷新链接的 C++ 项目
  2. 关闭项目,重新打开
  3. 文件 -> 使缓存无效并重新启动
  4. 关闭安卓工作室。删除 ~/Library/Caches/AndroidStudio 中的“隐藏”缓存文件夹。重新打开 Android Studio。
  5. 检查 Android Studio 的新版本,如果可用,更新当前版本。
于 2019-09-04T14:05:19.373 回答
0

可能缺少 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
于 2021-09-10T05:18:21.713 回答