อัปเดตการตั้งค่าบิลด์สำหรับ Oboe

มี 2 วิธีในการรวมไลบรารีโอโบไว้ในโครงการของคุณ

ผสานรวมโอโบกับ Gradle และ CMake

วิธีการเหล่านี้มีไว้สำหรับโปรเจ็กต์ที่ใช้ปลั๊กอิน Android Gradle เวอร์ชัน 4.1.0 ขึ้นไป โดยใช้ทรัพยากร Dependency ของระบบ กับ CMake

หากโปรเจ็กต์ใช้ปลั๊กอิน Android Gradle เวอร์ชัน 4.0 หรือ ndk-build แทนที่จะใช้ CMake กระบวนการจะแตกต่างออกไปเล็กน้อย ดูการใช้ทรัพยากร Dependency แบบเนทีฟ

อัปเดตbuild.gradle

วิธีเพิ่ม Oboe ลงในแอปโดยใช้ปลั๊กอิน Android Gradle เวอร์ชัน 4.1.0 หรือ เพิ่มรายการต่อไปนี้ลงในไฟล์ build.gradle ของแอป

  1. เพิ่มการอ้างอิง oboe ในส่วน dependencies หากจำเป็น แทนที่ 1.5.0 ด้วยเวอร์ชันเสถียรล่าสุด ของโอโบ:

    dependencies {
        implementation 'com.google.oboe:oboe:1.5.0'
    }
    
  2. เปิดใช้ตัวเลือก prefab ในส่วน buildFeatures

    android {
        buildFeatures {
            prefab true
        }
    }
    
  3. กำหนดค่าแอปให้ใช้ STL ที่แชร์

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

อัปเดต CMakeLists.txt

การเพิ่มโอโบต้องมีการเพิ่ม 2 รายการลงในไฟล์ 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 ที่กำหนด ชุดค่าผสม:

  1. เพิ่ม gamesdk/include ลงในเส้นทางการรวมของคอมไพเลอร์
  2. เพิ่มเส้นทางของแบบฟอร์มต่อไปนี้ในเส้นทางไลบรารี Linker ของคุณ

    gamesdk/libs/architecture_APIapiLevel_NDKndkVersion_stlVersion_Release
    

    ตัวอย่างเช่น gamesdk/libs/arm64-v8a_API24_NDK18_cpp_static_Release

  3. เพิ่ม -loboe_static ลงในคำสั่ง Linker

คุณไม่จำเป็นต้องรวมไลบรารีที่ใช้ร่วมกันของ liboboe.so ซึ่งหมายถึงแบบคงที่ การลิงก์จะให้พื้นที่ของโค้ดน้อยกว่ามาก

คลังที่ใช้ร่วมกัน

หากต้องมีชุดค่าผสม ABI, ระดับ API, NDK และ STL สำหรับไลบรารีแบบคงที่ ใช้ไม่ได้กับการตั้งค่าของคุณ คุณสามารถลิงก์กับไลบรารีที่ใช้ร่วมกันได้ แทน:

  1. ทำตามขั้นตอนที่ 1 และ 2 จากส่วนก่อนหน้า (เกี่ยวกับไลบรารีแบบคงที่) เพื่อ อัปเดตเส้นทางที่รวมของคอมไพเลอร์และใช้ไฟล์ส่วนหัวที่เหมาะสม

  2. เพิ่มเส้นทางของแบบฟอร์มต่อไปนี้ในเส้นทางไลบรารี Linker ของคุณ

    gamesdk/libs/architectureAPIapiLevelNDKndkVersion_stlVersion_Release/lib/oboe

  3. Add -loboe -lOpenSLES to your linker command.

Using CMake (static library only)

If you're using CMake, see the gamesdk/samples/bouncyball/app/CMakeLists.txt file in the downloaded SDK for an example CMake configuration. It includes a utility file called gamesdk/samples/gamesdk.cmake, which performs final checks, adds the proper compiler include paths, and generates a target that you can use to link the library.

To use the gamesdk.cmake utility:

  1. Include this file in your 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 ที่มีโฟลเดอร์ที่มี Game SDK:

    // Use a relative or absolute path.
    add_gamesdk_target(PACKAGE_DIR path/to/gamesdk)
    
  3. ในtarget_link_librariesสำหรับไลบรารีเนทีฟ ให้เพิ่ม oboe เป็นทรัพยากร Dependency:

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

สำหรับการใช้งานขั้นสูงของ CMake โปรดดู gamesdk.cmake ไฟล์ต้นฉบับ

ขั้นตอนถัดไป: การใช้โอโบ

หากต้องการเปิดหรือบันทึกเสียงด้วยโอโบ ให้สร้างและเปิดใช้งานเสียงอย่างน้อย 1 รายการ สตรีม และใช้ Callback เพื่อแลกเปลี่ยนเสียงระหว่างอินพุต/เอาต์พุตเสียง อุปกรณ์ และแอปของคุณ ดูการใช้ โอโบ