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

คุณรวมไลบรารี Oboe เข้ากับโปรเจ็กต์ได้ 2 วิธี

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

วิธีการเหล่านี้มีไว้สำหรับโปรเจ็กต์ที่ใช้ปลั๊กอิน Android Gradle เวอร์ชัน 4.1.0 ขึ้นไป โดยใช้การอ้างอิงเนทีฟ กับ 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 ด้วย Oboe เวอร์ชันเสถียรล่าสุด

    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

การเพิ่ม Oboe ต้องเพิ่ม 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 คุณจะลิงก์แบบคงที่กับเวอร์ชัน ของไลบรารี Oboe ที่คอมไพล์สำหรับ 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 โดยใช้โฟลเดอร์ที่มี 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 ให้สร้างและเปิดใช้งานสตรีมเสียงอย่างน้อย 1 รายการ แล้วใช้การเรียกกลับเพื่อแลกเปลี่ยนเสียงระหว่างอุปกรณ์อินพุต/เอาต์พุตเสียงกับแอปของคุณ ดูการใช้ Oboe