更新 Oboe 的构建设置

有两种方法可以将 Oboe 库集成到您的项目中。

使用 Gradle 和 CMake 集成 Oboe

这些说明适用于使用 Android Gradle 插件版本 4.1.0 或更高版本,并结合 CMake 使用原生依赖项的项目。

如果您的项目使用的是 Android Gradle 插件版本 4.0 或 ndk-build 而不是 CMake,则过程会略有不同。请参阅使用原生依赖项

更新 build.gradle

要在使用 Android Gradle 插件版本 4.1.0 或更高版本时将 Oboe 添加到您的应用中,请对您应用的 build.gradle 文件进行以下添加。

  1. oboe 依赖项添加到 dependencies 部分。如有必要,将 1.5.0 替换为 Oboe 的最新稳定版本

    dependencies {
        implementation 'com.google.oboe:oboe:1.5.0'
    }
    
  2. buildFeatures 部分启用 prefab 选项。

    android {
        buildFeatures {
            prefab true
        }
    }
    
  3. 配置您的应用以使用共享 STL

    android {
        defaultConfig {
            externalNativeBuild {
                cmake {
                    arguments "-DANDROID_STL=c++_shared"
                }
            }
        }
    }
    

更新 CMakeLists.txt

添加 Oboe 需要对您应用的 CMakeLists.txt 文件进行两项添加。

  1. 添加以下 find_package 命令

    find_package (oboe REQUIRED CONFIG)
    
  2. oboe::oboe 添加到传递给与您的主可执行文件关联的 target_link_libraries 命令的库列表中。

与 Android Game SDK 集成

  1. 下载库并将其签入您的源代码管理系统。

  2. 对您项目的构建设置进行以下更改。

静态库

当您与 Android Game SDK 集成时,您将静态链接到为给定 ABI、API 级别、NDK 和 STL 组合编译的 Oboe 库版本

  1. gamesdk/include 添加到您的编译器包含路径中。
  2. 在您的链接器库路径中添加以下形式的路径

    gamesdk/libs/architecture_APIapiLevel_NDKndkVersion_stlVersion_Release
    

    例如:gamesdk/libs/arm64-v8a_API24_NDK18_cpp_static_Release

  3. -loboe_static 添加到您的链接器命令中。

您不需要捆绑 liboboe.so 共享库,这意味着静态链接会大大减小代码占用空间。

共享库

如果您的设置没有静态库所需的 ABI、API 级别、NDK 和 STL 组合,您可以改为链接共享库

  1. 按照上一节(关于静态库)中的步骤 1 和 2 更新您的编译器包含路径,并使用适当的头文件。

  2. 在您的链接器库路径中添加以下形式的路径

    gamesdk/libs/architectureAPIapiLevelNDKndkVersion_stlVersion_Release/lib/oboe

  3. -loboe -lOpenSLES 添加到您的链接器命令中。

使用 CMake(仅限静态库)

如果您使用的是 CMake,请参阅下载的 SDK 中的 gamesdk/samples/bouncyball/app/CMakeLists.txt 文件,了解 CMake 配置示例。它包含一个名为 gamesdk/samples/gamesdk.cmake 的实用文件,该文件执行最终检查,添加适当的编译器包含路径,并生成一个可用于链接库的目标。

要使用 gamesdk.cmake 实用程序

  1. 在您的 CMakeLists.txt 中包含此文件

    // Use a relative or absolute path. For example, /home/yourusername/gamesdk
    // or C:\Android\gamesdk.
    include("path/to/gamesdk/samples/gamesdk.cmake")
    
  2. 调用 add_gamesdk_target 函数,并传入包含 gamesdk 的文件夹

    // Use a relative or absolute path.
    add_gamesdk_target(PACKAGE_DIR path/to/gamesdk)
    
  3. 在您的原生库的 target_link_libraries 中,添加 oboe 作为依赖项

    // The casing of OpenSLES is important.
    target_link_libraries(native-lib oboe OpenSLES ...) 
    

有关 CMake 的高级用法,请参阅 gamesdk.cmake 源文件。

后续步骤:使用 Oboe

要使用 Oboe 播放或录制音频,请创建并激活一个或多个音频流,并使用回调在您的音频输入/输出设备和您的应用之间交换音频。请参阅使用 Oboe