עדכון הגדרות ה-build של Oboe

יש שתי דרכים לשלב את ספריית Oboe בפרויקט.

שילוב של Oboe עם Gradle ו-CMake

ההוראות האלה מיועדות לפרויקטים שמשתמשים בגרסה 4.1.0 ואילך של Android Gradle plugin באמצעות native dependencies עם CMake.

אם הפרויקט שלכם משתמש בפלאגין Android Gradle בגרסה 4.0 או בגרסה ndk-build במקום ב-CMake, התהליך שונה מעט. איך משתמשים בתלות מקורית

עדכון הקובץ build.gradle

כדי להוסיף את Oboe לאפליקציה כשמשתמשים בגרסה 4.1.0 של Android Gradle Plugin או בגרסה מתקדמת יותר, צריך להוסיף את השורות הבאות לקובץ 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, צריך לבצע שתי תוספות לקובץ CMakeLists.txt של האפליקציה.

  1. מוסיפים את הפקודה find_package הבאה:

    find_package (oboe REQUIRED CONFIG)
    
  2. מוסיפים את oboe::oboe לרשימת הספריות שמועברות לפקודה target_link_libraries שמשויכת לקובץ הניתן להפעלה הראשי.

שילוב עם SDK בשביל משחק Android

  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, צריך ליצור ולהפעיל זרם אודיו אחד או יותר, ולהשתמש בפונקציות קריאה חוזרת כדי להעביר אודיו בין מכשירי קלט/פלט האודיו לבין האפליקציה. מידע נוסף זמין במאמר בנושא שימוש ב-Oboe.