יש שתי דרכים לשלב את ספריית 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 של האפליקציה.
מוסיפים את יחסי התלות
oboeלקטעdependencies. במקרה הצורך, מחליפים את1.5.0בגרסה היציבה העדכנית ביותר של Oboe:dependencies { implementation 'com.google.oboe:oboe:1.5.0' }מפעילים את האפשרות
prefabבקטעbuildFeatures.android { buildFeatures { prefab true } }מגדירים את האפליקציה כך שתשתמש ב-STL המשותף:
android { defaultConfig { externalNativeBuild { cmake { arguments "-DANDROID_STL=c++_shared" } } } }
עדכון הקובץ CMakeLists.txt
כדי להוסיף את Oboe, צריך לבצע שתי תוספות לקובץ CMakeLists.txt של האפליקציה.
מוסיפים את הפקודה
find_packageהבאה:find_package (oboe REQUIRED CONFIG)מוסיפים את
oboe::oboeלרשימת הספריות שמועברות לפקודהtarget_link_librariesשמשויכת לקובץ הניתן להפעלה הראשי.
שילוב עם SDK בשביל משחק Android
מורידים את הספרייה ומכניסים אותה למערכת בקרת הגרסאות.
מבצעים את השינויים הבאים בהגדרות הבנייה של הפרויקט.
ספרייה סטטית
כשמשלבים את Android Game SDK, מבצעים קישור סטטי לגרסה של ספריית Oboe שעברה קומפילציה עבור שילוב נתון של ABI, רמת API, NDK ו-STL:
- מוסיפים את
gamesdk/includeלנתיבי ההכללה של הקומפיילר. מוסיפים נתיב מהצורה הבאה לנתיבי הספרייה של ה-linker:
gamesdk/libs/architecture_APIapiLevel_NDKndkVersion_stlVersion_Release
לדוגמה:
gamesdk/libs/arm64-v8a_API24_NDK18_cpp_static_Releaseמוסיפים את
-loboe_staticלפקודת ה-linker.
אין צורך לארוז את הספרייה המשותפת liboboe.so, מה שאומר שקישור סטטי מאפשר לכם להקטין משמעותית את נפח הקוד.
ספרייה משותפת
אם השילוב של ABI, רמת API, NDK ו-STL שנדרש לספרייה סטטית לא זמין בהגדרות שלכם, אתם יכולים לקשר לספרייה המשותפת במקום זאת:
מבצעים את שלבים 1 ו-2 מהקטע הקודם (על הספרייה הסטטית) כדי לעדכן את נתיבי ההכללה של הקומפיילר, ומשתמשים בקובץ הכותרת המתאים.
מוסיפים נתיב מהצורה הבאה לנתיבי הספרייה של ה-linker:
gamesdk/libs/architectureAPIapiLevelNDKndkVersion_stlVersion_Release/lib/oboe
Add
-loboe -lOpenSLESto 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:
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")קוראים לפונקציה
add_gamesdk_targetעם התיקייה שמכילה את gamesdk:// Use a relative or absolute path.
add_gamesdk_target(PACKAGE_DIR path/to/gamesdk)ב-
target_link_librariesשל הספרייה המקורית, מוסיפים אתoboeכתלות:// The casing of OpenSLES is important.
target_link_libraries(native-lib oboe OpenSLES ...)
לשימוש מתקדם ב-CMake, אפשר לעיין בקובץ המקור gamesdk.cmake.
השלבים הבאים: שימוש ב-Oboe
כדי להפעיל או להקליט אודיו באמצעות Oboe, צריך ליצור ולהפעיל זרם אודיו אחד או יותר, ולהשתמש בפונקציות קריאה חוזרת כדי להעביר אודיו בין מכשירי קלט/פלט האודיו לבין האפליקציה. מידע נוסף זמין במאמר בנושא שימוש ב-Oboe.