Jetpack פיתוח נייטיב ל-XR
העדכון האחרון | גרסה יציבה | גרסה מועמדת להפצה | גרסת בטא | גרסת אלפא |
---|---|---|---|---|
7 במאי 2025 | - | - | - | 1.0.0-alpha04 |
הצהרת יחסי תלות
כדי להוסיף תלות ב-XR compose, צריך להוסיף את מאגר Google Maven לפרויקט. מידע נוסף זמין במאגר Maven של Google.
מוסיפים את יחסי התלות של הארטיפקטים הנדרשים בקובץ build.gradle
של האפליקציה או המודול:
מגניב
dependencies { implementation "androidx.xr.compose:compose:1.0.0-alpha04" // Use to write unit tests testImplementation "androidx.xr.compose:compose-testing:1.0.0-alpha04" }
Kotlin
dependencies { implementation("androidx.xr.compose:compose:1.0.0-alpha04") // Use to write unit tests testImplementation("androidx.xr.compose:compose-testing:1.0.0-alpha04") }
מידע נוסף על יחסי תלות זמין במאמר הוספת יחסי תלות ל-build.
משוב
המשוב שלכם עוזר לנו לשפר את Jetpack. אם נתקלתם בבעיות חדשות או שיש לכם רעיונות לשיפור הספרייה הזו, נשמח לשמוע מכם. לפני שיוצרים בעיה חדשה, כדאי לעיין בבעיות הקיימות בספרייה הזו. כדי להצביע על בעיה קיימת, לוחצים על לחצן הכוכב.
מידע נוסף זמין במסמכי התיעוד של Issue Tracker.
גירסה 1.0
גרסה 1.0.0-alpha04
7 במאי 2025
androidx.xr.compose:compose:1.0.0-alpha04
ו-androidx.xr.compose:compose-testing:1.0.0-alpha04
משוחררים. הגרסה 1.0.0-alpha04 מכילה את ההוספות האלה.
תכונות חדשות
- נוספה ממשק
CompositionLocalConsumerSubspaceModifierNode
כדי לאפשר לסוגים מותאמים אישית שלSubspaceModifier
לגשת לערכים המקומיים של הקומפוזיציה. - הוספנו ממשק API חדש של
SpatialPanel
שמתאים לסגנון ההטמעה שלAndroidView
ב-Compose, ומבטל את השימוש ב-ViewBased SpatialPanel
הקודם. - נוספו אובייקטים נלווים מסוג
VolumeConstraints.Unbounded
שמייצגים אילוצים ללא גבולות. - הוספנו את
SubspaceModifier.onPointSourceParams
כדי לאפשר מקור אודיו במיקום מרחבי. - נוספה
ApplicationSubspace
ציבורית, עםVolumeConstraints
אופציונלי להגדרת אזור תלת-ממדי שבו האפליקציה יכולה ליצור תוכן מרחבי. כברירת מחדל, אם לא יצוינו אילוצים, מרחב המשנה יוגדר לפי שדה הראייה הנוכחי שלSpatialUser
ברוחב ובגובה. המשתמשים יכולים לספק אילוצים לשימוש במקרה שלא ניתן לקבוע את שדה הראייה. אחרת, המערכת תשתמש בערכים של רוחב וגובה שדה התצוגה כברירת מחדל. - נוספה התכונה
SpatialExternalSurface
, שאפשר להשתמש בה כדי ליצור תוכן סטריאופוני. אפשר להתאים אישית אתSpatialExternalSurface
באמצעות משתני אופן פעולה (למעט אלפא) ואפקט מעומעם של קצוות. - נוספה פונקציית שינוי מרחב משני חדשה (
pointerHoverIcon
) שמאפשרת למשתמשים להגדיר את הסמל של הסמן המרחבי.
שינויים ב-API
- הסרת ההגבלה על
RequiresApi(34)
בכל החבילות של Jetpack XR. המגבלה הזו הייתה מיותרת כי Jetpack XR זמין כרגע רק במכשירים עם רמת API 34 ואילך. (Iae0f8) - כדי להשתמש בפרויקטים שפורסמו עם Kotlin 2.0, צריך להשתמש ב-KGP 2.0.0 ואילך. (Idb6b5)
- עכשיו אפשר להשתמש בלחצן 'חזרה' בחלוניות מרחביות ללא פעילויות מוטמעות. כדי שהטיפול בלחצן 'הקודם' יפעל, צריך לציין את הערך
android:enableOnBackInvokedCallback="true"
במניפסט של Android. - עכשיו אפשר להעביר שיחות למצב 'החזקה ברקע' גם במרחבים משותפים. כדי שהטיפול החוזר יפעל, צריך לציין את הערך
android:enableOnBackInvokedCallback="true"
במניפסט של Android. - עכשיו, תיבות
SpatialPanel
שמבוססות על כתיבת תוכן ותיבותSpatialPanel
שמבוססות על תצוגה יכולות להתאים את הגודל שלהן בהתאם לתוכן שלהן. - עכשיו מפתחים יכולים להגדיר ערכים מותאמים אישית של
SpatialElevationLevel
, ולא מוגבלים לרמות שהוגדרו מראש. - עכשיו אפשר להתאים אישית את רמת הגובה של האורביטר באמצעות הפרמטר
elevation
. - עכשיו אפשר להגביל את המרחב המשני לפי שדה הראייה של
SpatialUser
ברוחב ובגובה כברירת מחדל. אם לא ניתן לקבוע את שדה הראייה, המערכת משתמשת בערכים ברירת המחדל של רוחב שדה הראייה וגובה שדה הראייה. - נוספו פונקציות קריאה חוזרת חדשות
onMoveStart
ו-onMoveEnd
למערך הערכים של המשתנהMovable
. פונקציות ה-callbacksonMoveStart
ו-onMoveEnd
נקראות כשהמשתמש מתחיל ומפסיק להזיז תת-מרחב שאפשר ליצור באמצעות המשתנה הניתן לשינוי. - הפרמטר
name
הוסר מממשקי API מרחביים כמוSpatialRow
ו-SpatialPanel
. כדי לנפות באגים בעצים של קומפוזיציות מרחביות, השתמשו במקום זאת ב-SubspaceModifier.testTag
. - הוסר עומס יתר לא נתמך של
SpatialPopup
שכולל רק אתspatialElevationLevel
ו-content
. צריך להשתמש בממשק שתומך ב-onDimissRequest
. - הוסר קריאה חוזרת (callback) של
onPoseChange
מהמַעַדן Movable. במקום זאת, אתם צריכים להשתמש ב-onMove
. SubspaceModifiers
לא יפעילו יותר את ההשפעות שלהם אם הם מנותקים או בתהליך ניתוק.- ממשק ה-API הקיים של
SpatialRow
פוצל ל-SpatialRow
ול-SpatialCurvedRow
. אם השתמשתם בעבר בפרמטרcurveRadius
שלSpatialRow
, השתמשו עכשיו בפרמטרSpatialCurvedRow
במקום זאת, כי הוא מציע את אותה התנהגות. - ל-
MainPanel
ול-ActivityPanel
כבר אין יותר שורת כותרת כשהם מופעלים בתמונת מערכת עדכנית דומה. - עכשיו אפשר לערום משתני אלפא ושינוי קנה מידה, והערכים שלהם יכופלו כדי לקבל את הערך הסופי של האלפא או שינוי קנה המידה.
- הקריאה החוזרת (callback)
onPoseChange
מהמַעַדן Movable (נייד) עברה אופטימיזציה כדי לבצע תנועה חלקה יותר של תנוחות. - מעכשיו, המשתנים המשתנים והניתנים לשינוי גודל יבצעו את קריאות החזרה שלהם (callbacks) בשרשור הראשי, כדי להבטיח ששינויים במצב יגרמו ליצירה מחדש.
- הוספנו מעקב אחרי המצב לשלבים של הפריסה והמדידה כדי להבטיח ששינויים במצב ב-
SubspaceLayout
יגרמו ליצירת פריסה מחדש. - עדכונים של שרשרת המשתנים שעברו אופטימיזציה, כדי שניתן יהיה לעשות שימוש חוזר טוב יותר במשתנים קיימים.
תיקוני באגים
- הפסקת הסריקה כשמוצג
SpatialDialog
. (Ic4594) - בקשות לפריסה מחדש שנשלחות בזמן שצמתים של מודификаторים מנותקים יידחו מעכשיו.
- הוסרו שלבי פריסה מחדש שמופעל על ידי משתני Movable ו-Resizable.
- תוקנה קריסה ב-
MainPanel()
composable שהתרחשה כאשר אחד מהמאפיינים הוגדר לאפס, באופן ישיר או במהלך חישוב פריסה, למשל חישוב שלSpatialRow/SpatialColumn
. במקום זאת, החלונית תוסתר. לתשומת ליבכם: התיקון הזה מטפל באופן ספציפי בקריסות במהלך שלב הפריסה. שינוי הגודל של החלונית לאפס דרך אינטראקציה של משתמש יטופל בנפרד. בחלונית המוסתרת חסרים רכיבי ממשק משתמש. - תוקנה בעיה ב-
maintainAspectRatio
מהמַעַדן שניתן לשינוי גודל. עכשיו יחס הגובה-רוחב אמור להישמר. - תוקנה בעיה ב-Subspaces בתצוגת עץ, שבה הם היו ממוקמים בצורה שגויה בפריים יחיד.
- תוקנה בעיה שבה לפעמים לא הוחלו פינות מעוגלות כשהיה צריך.
NestedSubspaces
לא יופיע יותר בפריים אחד במיקום שגוי.
גרסה 1.0.0-alpha03
26 בפברואר 2025
הגרסאות androidx.xr.compose:compose:1.0.0-alpha03
ו-androidx.xr.compose:compose-testing:1.0.0-alpha03
פורסמו ללא שינויים משמעותיים מאז גרסת האלפא האחרונה. גרסה 1.0.0-alpha03 מכילה את ההוספות האלה
גרסה 1.0.0-alpha02
12 בפברואר 2025
androidx.xr.compose:compose:1.0.0-alpha02
ו-androidx.xr.compose:compose-testing:1.0.0-alpha02
משוחררים. הגרסה 1.0.0-alpha02 כוללת את ההוספות האלה.
תכונות חדשות
- עכשיו אפשר להקטין את התוכן של חלונית הפעילות כשמתבצעת שיחה במרחב המשותף.
- עכשיו אפשר להשתמש ב-API של
Orbiter
בהקשרים שלSubspaceComposable
, והוא יצרף את Orbiters להורה המורכב הקרוב ביותר שמבוסס עלSubspaceLayout
. - הוספנו את
LayoutCoordinatesAwareModifierNode
כדי לאפשר שימוש במשתני שינוי מותאמים אישית שמבוססים על מיקום. - נוספו ל-
SubspaceModifier.Node
שיטות מחזור חיים של צירוף/ניתוק. - הוספת
scaleWithDistance
למשתנה הקבוע שניתן להזיז. כשהאפשרותscaleWithDistance
מופעלת, רכיב המרחב המשני שהועבר יתרחב או יתכווץ. הוא גם ישמור על כל קנה מידה מפורש שהיה לו לפני ההזזה.
שינויים ב-API
- הוסר
SessionCallbackProvider
לטובתSpatialCapabilities
.
שינויים אחרים
- הפחתת
minSDK
ל-24. כל ממשקי ה-API של Jetpack XR עדיין דורשים API 34 בסביבת זמן הריצה. - ה-constructors של
Orbiter
, EdgeOffset.inner
, EdgeOffset.outer
ו-EdgeOffset.overlap
כבר לא הם שיטות@Composable
, כך שאפשר להשתמש בהם בהקשרים שלא ניתן לשלב. - עדכון רמות הגובה המרחביות בהתאם למפרט העדכני ביותר של חוויית המשתמש.
- מטמיעים את הממשק
SubspaceSemanticsInfo
ב-MeasurableLayout
. - השם של
SubspaceModifierElement
השתנה ל-SubspaceModifierNodeElement
.
תיקוני באגים
- תיקונים לשיפור היציבות של ההזמנות ב-
SubspaceModifier
.SubspaceModifier
אמור לפעול בצורה מהימנה יותר. עכשיו אפשר להשתמש במודיפיקטור של הזזה, שינוי המיקום, סיבוב, שינוי קנה המידה והגודל בכל סדר.
גרסה 1.0.0-alpha01
12 בדצמבר 2024
androidx.xr.compose:compose-*1.0.0-alpha01
משוחרר.
התכונות של הגרסה הראשונית
גרסה ראשונית למפתחים של Jetpack Compose ל-XR. אתם יכולים להשתמש במושגים מוכרים של Compose, כמו שורות ועמודות, כדי ליצור פריסות של ממשק משתמש מרחבי ב-XR, בין שאתם מעבירים אפליקציה קיימת 2D ל-XR ובין שאתם יוצרים אפליקציית XR חדשה מאפס. הספרייה הזו מספקת רכיבים שאפשר ליצור מהם מרחבים משניים ומרחבים תלת-ממדיים, כמו לוחות תלת-ממדיים ורכיבי 'מסלול', שמאפשרים למקם את ממשק המשתמש הקיים שלכם ב-Compose 2D או מבוסס-Views בפריסה תלת-ממדית. הוא כולל את הרכיב Volume subspace composable, שמאפשר למקם ישויות של SceneCore, כמו מודלים תלת-ממדיים, ביחס לממשק המשתמש. מידע נוסף זמין במדריך למפתחים:
Subspace
: אפשר למקם את הרכיב הזה בכל מקום בהיררכיית ממשק המשתמש של האפליקציה, וכך לשמור על פריסות לממשק משתמש דו-ממדי ומרחבי בלי לאבד את ההקשר בין הקבצים. כך קל יותר לשתף דברים כמו ארכיטקטורת אפליקציה קיימת בין XR לבין גורמי צורה אחרים, בלי שתצטרכו להעביר את המצב דרך כל עץ ממשק המשתמש או לתכנן מחדש את הארכיטקטורה של האפליקציה.SpatialPanel: חלונית מרחבית היא תת-מרחב שאפשר ליצור ממנו רכיבים, ומאפשרת להציג תוכן של אפליקציה. לדוגמה, אפשר להציג בחלונית מרחבית הפעלת וידאו, תמונות סטילס או כל תוכן אחר.
Orbiter: Orbiter הוא רכיב של ממשק משתמש מרחבי. הוא מיועד להתחבר ללוח מרחבי תואם, ומכיל פריטים של ניווט ופעולות לפי הקשר שקשורים ללוח המרחבי הזה. לדוגמה, אם יצרתם לוח מרחבי כדי להציג תוכן וידאו, תוכלו להוסיף לחצני בקרה על הפעלת הסרטון בתוך כלי ניווט.
נפח: מיקום של ישויות SceneCore, כמו מודלים תלת-ממדיים, ביחס לממשק המשתמש.
פריסה מרחבית: אפשר ליצור כמה לוחות מרחבים ולהציב אותם בפריסה מרחבית באמצעות
SpatialRow
,SpatialColumn
,SpatialBox
ו-SpatialLayoutSpacer
. משתמשים בסמליSubspaceModifier
כדי להתאים אישית את הפריסה.רכיבי ממשק משתמש מרחבי: אפשר לעשות שימוש חוזר ברכיבים האלה בממשק המשתמש הדו-מימדי, והמאפיינים המרחביים שלהם יהיו גלויים רק כשהיכולות המרחביות מופעלות.
SpatialDialog
: החלונית תזוז מעט לאחור ב-z-depth כדי להציג תיבת דו-שיח מוגבהת.SpatialPopUp
: החלונית תזוז מעט לאחור ב-z-depth כדי להציג חלון קופץ מוגבהSpatialElevation
: אפשר להגדיר אתSpatialElevationLevel
כך שיוסיף גובה.
SpatialCapabilities: יכולות המרחב יכולות להשתנות כאשר המשתמשים יוצרים אינטראקציה עם האפליקציה או עם המערכת, או אפילו על ידי האפליקציה עצמה – לדוגמה, מעבר למרחב הבית או למרחב המלא. כדי למנוע בעיות, האפליקציה צריכה לבדוק את
LocalSpatialCapabilities.current
כדי לקבוע אילו ממשקי API נתמכים בסביבה הנוכחית.isSpatialUiEnabled
: רכיבי ממשק משתמש מרחבי (למשל, SpatialPanel)isContent3dEnabled
: אובייקטים תלת-ממדייםisAppEnvironmentEnabled
: הסביבהisPassthroughControlEnabled
: האם האפליקציה יכולה לשלוט במצב העברה או לאisSpatialAudioEnabled
: אודיו מרחבי
בעיות מוכרות
- נכון לעכשיו, נדרש minSDK של 30 כדי להשתמש ב-Jetpack Compose for XR. כפתרון עקיף, אפשר להוסיף את רשומת המניפסט הבאה
<uses-sdk tools:overrideLibrary="androidx.xr.scenecore, androidx.xr.compose"/>
כדי שתוכלו לבנות ולהריץ עם minSDK של 23. - אפליקציות Jetpack XR מחייבות כרגע לבקש הרשאה
android.permission.SCENE_UNDERSTANDING
ב-AndroidManifest. - כשאפליקציה מופעלת ישירות במרחב המלא באמצעות המאפיין
PROPERTY_XR_ACTIVITY_START_MODE
במניפסט שלה, הפעילויות או האפליקציות נפתחות בהתחלה במרחב הבית לפני שהן עוברות למרחב המלא. - קובצי glTF ב-Volume Composables עשויים להבהב בהתחלה במיקום שגוי.
- שימוש ב-SpatialDialog בחלונית שנדחקה באופן משמעותי ידחוף את התוכן לכיוון הלא נכון.