Jetpack SceneCore
| העדכון האחרון | גרסה יציבה | גרסה מועמדת להפצה | גרסת בטא | גרסת אלפא |
|---|---|---|---|---|
| 21 באוקטובר 2026 | 1.0.0 | - | - | 1.1.0-alpha01 |
הצהרה על יחסי תלות
כדי להוסיף תלות ב-XR SceneCore, צריך להוסיף את מאגר Google Maven לפרויקט. מידע נוסף זמין במאמר מאגר ה-Maven של Google.
אתם יכולים להוסיף את יחסי התלות של הארטיפקטים שאתם צריכים בקובץ build.gradle של האפליקציה או המודול:
מגניב
dependencies { implementation "androidx.xr.scenecore:scenecore:1.1.0-alpha01" // Use to write unit tests testImplementation "androidx.xr.scenecore:scenecore-testing:1.1.0-alpha01" }
Kotlin
dependencies { implementation("androidx.xr.scenecore:scenecore:1.1.0-alpha01") // Use to write unit tests testImplementation("androidx.xr.scenecore:scenecore-testing:1.1.0-alpha01") }
מידע נוסף זמין במאמר הוספת יחסי תלות ב-build.
משוב
המשוב שלכם עוזר לנו לשפר את Jetpack. נשמח לדעת אם גיליתם בעיות חדשות או אם יש לכם רעיונות איך לשפר את הספרייה הזו. כדאי לעיין בבעיות הידועות בספרייה הזו לפני שמדווחים על בעיה. כדי להוסיף הצבעה בדיווח על בעיה קיימת, לוחצים על כפתור הכוכב.
מידע נוסף זמין במאמרי העזרה בנושא Issue Tracker.
גרסה 1.1
גרסה 1.1.0-alpha01
21 באוקטובר 2026
androidx.xr.scenecore:scenecore-*:1.1.0-alpha01 מופץ. גרסה 1.1.0-alpha01 מכילה את השמירות האלה.
שינויים ב-API
- נוספו ממשקי API לעדכון רשת דינמית (
MeshBuffer.createDynamic,MeshBuffer.updateVertexData,MeshBuffer.updateIndexDataו-constructor דינמי שלCustomMesh.BuilderFromMeshData) כדי לתמוך בעדכון נתוני קודקוד ואינדקס בזמן הריצה. (Ia1ecb) - הוספנו שיטות עזר של
VertexLayout.getBufferIndexכדי לאחזר בקלות את אינדקס המאגר שלVertexAttributeאוVertexBufferLayoutנתונים. (I1a9e3) - הפכתי את
CustomMesh.boundsלמשתנה כדי שיהיה אפשר לעדכן את התיבה התוחמת באופן דינמי בזמן הריצה. (Ib0397) - קידום של ממשקי Animation API ב-
glTF(GltfAnimation, GltfModelEntity.getAnimationsו-GltfModelEntity.stopAllAnimations) לציבוריים/יציבים, תוך שמירה עלGltfAnimation.loop setter כניסיוני, ועלGltfAnimationStartOptionsו-start(options) כניסיוניים וכאלה שהוצאו משימוש. (Iacdae) - הוספנו את
stopAllAnimations()ל-GltfModelEntity, הפכנו אתGltfAnimation.start()ללא פרמטרים, הוספנו את המאפייניםloopו-speedל-GltfAnimation, והוצאנו משימוש אתGltfAnimationStartOptions,start(options)ו-seekTo(Duration). (I53105) - עדכנו את ממשקי ה-API של
GltfModelEntityכדי לתעד אתIllegalStateException(במיוחד אתEntity.DisposedException) כשמתבצעת קריאה לישויות שהוסרו. I65a76f
תיקוני באגים
- התלות
androidx.lifecycle:lifecycle-runtimeעודכנה לגרסה 2.10.0. הגרסה הזו נדרשת כדי להריץ בדיקות lint של זמן ריצה של מחזור חיים בחבילה עם AGP בגרסה 9.5.0-alpha04 ואילך. (I99bfd, b/556807521) - שיפור של kdocs שקשורים ל-
AudioOutputProviderכדי להדגיש שלא צריך להשתמש בהם שוב עם כמה מכונות שלExoPlayer(I6b18e) - הוסרו יחסי תלות מיותרים ב-
impressממודולים שונים של XR. I84636c
גירסה 1.0
גרסה 1.0.0
21 באוקטובר 2026
androidx.xr.scenecore:scenecore-*:1.0.0 מופץ. גרסה 1.0.0 מכילה את השמירות האלה.
התכונות העיקריות בגרסה 1.0.0:
- Jetpack XR SceneCore עכשיו יציב! SceneCore מאפשר לכם למקם ולסדר תוכן תלת-ממדי, שמוגדר על ידי ישויות, ביחס לתוכן אחר ולסביבה שלכם. בעזרת SceneCore, אתם יכולים ליצור, למקם ולשנות לוחות דו-ממדיים ומודלים תלת-ממדיים בסצנות של מציאות וירטואלית ומציאות משולבת, לציין סביבות מרחביות ומקורות אודיו מרחביים ולעגן תוכן וירטואלי בעולם האמיתי.
- מידע נוסף זמין בדף הסקירה הכללית ובמאמרי העזרה של ה-API.
גרסה 1.0.0-rc02
7 באוקטובר 2026
androidx.xr.scenecore:scenecore-*:1.0.0-rc02 מופץ. גרסה 1.0.0-rc02 מכילה את השמירות האלה.
תיקוני באגים
- תוקנה דליפת זיכרון פוטנציאלית על ידי הסרת
perceptionRuntimeCacheב-SessionExtושינוי הקוד כדי לאחזר אתPerceptionRuntimeישירות מהמופע שלSession. (Ie35b1) - תוקנה דליפת הקשר פוטנציאלית באמצעות
applicationContextעבור נקודות אחיזה מקוריות שלOpenXRכדי להבטיח שזמן הריצה המקורי לא מכיל הפניות להקשר שלActivity. (Ie35b1) - תוקנו מרוצי תהליכים ב-
XrInstanceManagerעל ידי הוספת נעילת סנכרון ואתחול מתאימה. (Ie35b1) - תוקן
ReferenceCleanerכדי לתמוך בביטול הרישום של פעולות ניקוי, והובטח שפעולות הניקוי שלEntityיופעלו באופן מפורש במהלךdispose(), כדי למנוע הפעלה כפולה במהלך איסוף הזבל. (Ie35b1) - תוקנה דליפת זיכרון ב-
Sceneעל ידי הסרת ה-sceneCacheב-SessionExtושינוי מבנה הקוד שלSceneכדי לאחזר את המכונה ישירות מ-sessionConnectors. (Ie35b1)
גרסה 1.0.0-rc01
9 בספטמבר 2026
androidx.xr.scenecore:scenecore-*:1.0.0-rc01 מופץ. גרסה 1.0.0-rc01 מכילה את השמירות האלה.
שינויים ב-API
- הספרייה
xr:scenecore:scenecore-openxrנוספה. (Ic49f2) - הסרנו כמה ממשקי API שהוצאו משימוש לפני ההשקה של הגרסה היציבה 1.0.0.
תיקוני באגים
- תוקן באג של דליפת זיכרון שבו המערכת יכולה לשמור את ההפניה לפעילות כשהפעילות נמחקת. (I6dcd7)
שינויים בהתנהגות
- הוסר פלט logcat מ-SceneCore. (I10c3c)
גרסה 1.0.0-beta02
12 באוגוסט 2026
androidx.xr.scenecore:scenecore-*:1.0.0-beta02 מופץ. גרסה 1.0.0-beta02 מכילה את השמירות האלה.
תיקוני באגים
toMoveEvent()תחזיר את הערךnullאם ישות האם עברה איסוף זבל. (Ia7a1b)
גרסה 1.0.0-beta01
15 ביולי 2026
androidx.xr.scenecore:scenecore-*:1.0.0-beta01 מופץ. גרסה 1.0.0-beta01 מכילה את השמירות האלה.
שינויים ב-API
- ממשקי ה-API של
GltfAnimationו-SpatialGltfModelAnimationסומנו כניסיוניים. חלק מהמאפיינים הפכו לפונקציות getter. (I8d689, b/524771027) - הסרנו את ה-factory method הציבורי
MovableComponent.createTrackingMovable. (I00912, b/477169015) - הפונקציה Session.create הומרה לפונקציית השהיה. (I5d27f)
ActivitySpaceו-AnchorSpaceמרחיבים עכשיו מחלקה נפוצה שלSpaceEntityשמכילה התנהגות נפוצה של ישויות שהמיקומים שלהן נשלטים על ידי המערכת (I506ec, b/513619219)- השם של
AnchorEntityהשתנה ל-AnchorSpace(Ifa95e, b/513619219) -
SoundEffectPoolComponentTester, ממשק API ציבורי לבדיקה. (I87df7, b/498104417) - הוספנו פרמטר
cornerRadiusאופציונלי ל-constructor שלSurfaceEntity.Shape.Quadוהגדרנו את המאפייןcornerRadiusכגלוי לכולם. מפתחים יכולים עכשיו לציין רדיוס פינה כשהם יוצרים צורת Quad כדי לעבד אזורי ציור ב-SurfaceEntityעם פינות מעוגלות, ולשאול לגבי הרדיוס של צורות Quad קיימות. thought (Ia7809, b/474681085) - מספק עומסי יתר של ממשקי API ציבוריים לבדיקה
SpatialAudioTrackBuilderTester, SpatialAudioTrackTesterו-SceneCoreTestRule.getTester. (I378c6, b/496333938) - הוספת שינויים מיוחדים של
toString()לכמה סוגים של ARCore. הסוגים האלה נועדו לספק למפתחים מידע נוסף למטרות ניפוי באגים, ולא נועדו לשימוש בסביבת ייצור או באפליקציות שנשלחו.
גרסה 1.0.0-alpha16
17 ביוני 2026
androidx.xr.scenecore:scenecore-*:1.0.0-alpha16 מופץ. גרסה 1.0.0-alpha16 מכילה את השמירות האלה.
שינויים ב-API
- נוספו עומסי יתר של
addVertexData,setIndexDataו-addSubsetל-CustomMesh.BuilderFromMeshDataול-CustomMesh.BuilderFromMeshBuffer. עומסי היתר האלה מאפשרים למפתחים להעביר נתונים גולמיים ופרמטרים ישירות (למשל,ByteBuffer, offset, size, topology, indexOffset, indexCount) בלי צורך לעטוף אותם באובייקטים מתווכים כמוByteBufferRegionאוMeshSubset. (I84d5c) - השמות של
Scene.requestFullSpaceMode()ו-Scene.requestHomeSpaceMode()השתנו ל-requestFullSpace()ו-requestHomeSpace(), בהתאמה. שיטות אחרות ומאמרי עזרה אחרים שמתייחסים ל "מצב מרחב הבית" ול "מצב מרחב מלא" עודכנו באופן דומה. (I45751) - מספק ממשקי API ציבוריים לבדיקה
PanelEntityTesterו-MainPanelEntityTester(I961e4) - הוספת המאפיין
pointSourceParamsאלSoundEffectPoolComponent(I4a750) - מספק ממשק API ציבורי לבדיקה
MovableComponentTester(I0c972) - מספק ממשק API ציבורי לבדיקה
PointerCaptureComponentTester(Ic0d4f) - API ציבורי לבדיקה
ActivityPanelEntityTester(I837c4) - מספק ממשק API ציבורי לבדיקה
ResizableComponentTester(I0a3a4) - מספק ממשק API ציבורי לבדיקה
BoundsComponentTester.(Iefd53) - מספק API ציבורי לבדיקה
SpatialMediaPlayerTester(Ia3e09) - API ציבורי לבדיקה
SpatialEnvironmentTester(Icf60f) - מספק ממשקי API ציבוריים לבדיקה:
GltfModelTesterו-SceneCoreTestRule.getGltfModelTester. (I33fcb) -
InteractableComponentTester, ממשק API ציבורי לבדיקה. (Ia7096) -
SurfaceEntityTester, ממשק API ציבורי לבדיקה. (Ic0740) - מספק ממשקי API ציבוריים לבדיקה:
GltfModelEntityTester, TestGltfModelNodeו-TestGltfAnimation. (I72c4d) - מספק ממשקי API ציבוריים לבדיקה:
SceneTesterו-SceneCoreTestRule.sceneTester. (Ib4ec5) - מספק ממשקי API ציבוריים לבדיקה:
PerceptionSpaceTesterו-SceneCoreTestRule.perceptionSpaceTester. (Icf739) -
MeshEntityTester, ממשק API ציבורי לבדיקה. (I63801) - מספק עומסי יתר ציבוריים של ממשקי ה-API לבדיקה
ImageBasedLightingAssetTesterו-SceneCoreTestRule.getTester. (I57ec4) - API ציבורי לבדיקה
TextureTester(Ia865b) - API ציבורי לבדיקה
PositionalAudioComponentTester(Icd96e) - מספק ממשק API ציבורי לבדיקה
SpatialSoundPoolTester(Ia3531) - API ציבורי לבדיקה
SoundEffectPoolTester(If349a) - מספק ממשקי API ציבוריים לבדיקה:
ActivitySpaceTesterו-SceneCoreTestRule.activitySpaceTester. (I2d5c2) - מספק ממשק API ציבורי לבדיקה
SpatialWindowTester(I41837) - מספק API לבדיקות ציבוריות
AnchorEntityTester(I68404) - מספק את ממשק ה-API הציבורי לבדיקה
SceneCoreTestRule. (Ic72d3) - הוספנו את המחלקה
PixelDensityוחשפנו אותה דרךScene#virtualPixelDensityכדי לספק יחס פיקסלים למטר שמבוסס על חומרה, לצורך מיפוי מדויק של ממדים פיזיים ב-ActivitySpace. (I0e3ac) - הוספנו ממשקי API ציבוריים ליצירה ולעיבוד של רשתות בהתאמה אישית. (I7ad2f)
- ה-API של
VertexLayoutעודכן כך שישתמש ברשימה שלVertexBufferLayout, כאשר כלVertexBufferLayoutמתאר את המאפיינים בתוך מאגר קודקודים יחיד. כך אפשר לסדר את נתוני הקודקודים בצורה גמישה יותר, כולל מאפיינים משולבים עם צעדים והיסטים בהתאמה אישית. (Ic426b) - מספק
MovableComponent.createTrackingMovableכדי להפוך את ARCore Trackable לתנוחה שקשורה ל-Activity Space. (I12249) - ערך ברירת המחדל של ההורה ב-
Entity.createעודכן ל-null. (Ic3145) Entityעודכן למחלקה במקום לממשק, ועכשיו הוא המחלקה הבסיסית לכל סוגי הישויות. כחלק מהשינוי הזה,BaseEntityהוסר. (I7fbc9)-
GltfModel,ExrImageו-ImageBasedLightingAssetמטמיעים עכשיו אתAutoCloseableכדי לאפשר ניהול משאבים אידיומטי באמצעות הבלוקuseשל Kotlin. (I1ac79) - הוספנו את המחלקה
ImageBasedLightingAssetכדי להחליף אתExrImageלהגדרת תאורת סביבה מרחבית. השדהExrImageהוצא משימוש והוסר מה-API הציבורי. המאפייןSpatialEnvironmentPreferenceעודכן לשימוש ב-ImageBasedLightingAsset. (I6c92a) - שינינו את השם של הפרמטר
skyboxב-SpatialEnvironmentל-imageBasedLightingAssetכדי לשקף טוב יותר את המטרה שלו, והבהרנו שצריך לכלול טקסטורות חזותיות של תיבת שמיים בפרמטר הגיאומטריה. (I24d4a) - ישויות מרחביות משתמשות עכשיו בצפיפות מכשיר יציבה לחישובים של פיקסלים למטר ברמות API 1 ו-2 של Spatial API, כדי להבטיח גודל עקבי ללא קשר לשינויים בצפיפות התצוגה של המערכת. (I37051)
גרסה 1.0.0-alpha15
19 במאי 2026
androidx.xr.scenecore:scenecore-*:1.0.0-alpha15 מופץ. גרסה 1.0.0-alpha15 מכילה את השמירות האלה.
שינויים ב-API
- ה-API הציבורי
Entity.dispose()הוסר. במקום להפעיל אתdispose()במופעים של Entity, אפליקציות יכולות להגדיר אתparentל-nullולנקות את כל ההפניות החזקות למופעים האלה כדי לאפשר את הניקוי שלהם. (I396c9) - השיטות של
SoundEffectPoolמסוגset/clearOnLoadCompleteListenerנמחקו. במקום זאת, אתם צריכים להשתמש ב-add/removeLoadCompleteListener. (Iae78d) - השדה
set/clearSpatialVisibilityChangedListenerשל הסצנה הוחלף בשדהadd/removeSpatialVisibilityChangedListener. (I67dff) - כל השיטות של SceneCore
add/removeOnFooListenerשונו ל-add/removeFooListener, והוסרOnמהשם. (Ibe50b) - השיטות
AnchorEntity.setOnOriginChangedListenerו-AnchorEntity.setOnStateChangedListenerהוחלפו בשיטותadd/removeFooListener, כדי לתמוך בכמה מאזינים בו-זמנית. (I13749) - השם של
AnchorEntity.State.TIMEDOUTשונה ל-State.TIMED_OUT. (Id2b8d) - שינינו את המבנה של Component API כדי לשפר את הבטיחות ואת יכולת ההרחבה.
Componentהיא עכשיו מחלקה מופשטת. השיטותonAttach()ו-onDetach()הן עכשיוprotectedכדי למנוע שיחות ישירות. כדי לנהל את מחזורי החיים של הרכיבים, צריך להשתמש ב-Entity.addComponent()וב-Entity.removeComponent(). (Id04e8) - הקבועים
PlaneSemanticTypePlaneOrientationשל SceneCore הועברו מ-Ints לסוגים בהתאמה אישית. הקבועים שלANYיוסרו, והלקוחות יצטרכו למנות במפורש את כל הקבועים הרצויים, או להשתמש בקבועי ה-Set החדשים של.ALLשלא ניתנים לשינוי. השיטהAnchorEntityמקבלת עכשיו קבוצה של הסוגים האלה, במקום ערך יחיד. (Ib1033) - הוספנו תמיכה באנימציה שלדית (skinning) ל-Custom Mesh API הניסיוני. מפתחים יכולים עכשיו להוסיף אנימציה לרשתות בהתאמה אישית על ידי ציון
boneCountבזמן יצירתMeshEntityועדכון האנימציה בזמן אמת באמצעותMeshEntity.setBoneTransforms(). (Id8ba2, b/496692490) - השקנו את ה-API הניסיוני
CustomMesh. מפתחים יכולים עכשיו ליצור ולעבד גיאומטריה תלת-ממדית בסצנות שלהם באופן פרוגרמטי באמצעותCustomMesh,MeshBufferו-MeshEntity. (I94617) - בוצעה הסרה של
androidx.xr.scenecore.SpatializerConstants.SourceType.SOURCE_TYPE_SOUND_FIELD. במקומה צריך להשתמש במדיניותSourceType.SOUND_FIELD. (Ia68b9) - הוספת רכיבי אודיו מרחבי:
PositionalAudioComponent, SoundEffectPoolComponentו-SoundFieldAudioComponent(Ieda89) - הפונקציה
AnchorEntity.getAnchorהוחלפה ב-AnchorEntity.anchorועכשיו היא תחזירAnchorכשה-AnchorEntityנוצר מ-Anchorשל ARCore (I5c7c8) - ערך ברירת המחדל של הפרמטר
parentבשיטות המפעלActivityPanelEntity,GltfModelEntity,GroupEntity,PanelEntityו-SurfaceEntityהשתנה מ-ActivitySpaceל-null. כדי לצרף ישות לתרשים הסצנה ולהפוך אותה לגלויה, המפתחים צריכים עכשיו להגדיר באופן מפורש את ההורה שלה במהלך יצירת המופע או באמצעותEntity.parent = ...(Ie7cc1)
תיקוני באגים
- עכשיו
SceneCoreמחזיר באופן אוטומטי מופעים שלEntityכשהם הופכים לנגישים באופן מדומה, כך שהמפתחים לא צריכים להפעיל באופן מפורש אתdispose()כדי לפנות משאבים. כדי לוודא שמופע של [Entity] יוחזר כראוי, המפתחים צריכים:- מנתקים אותו מהתרשים של הסצנה על ידי הגדרת
parentל-null. - לוותר על כל ההפניות החזקות למופע בקוד שלהם.
- הערה לגבי סוגי ישויות מיוחדים: בישויות שלא יכולות להיות הורה (כמו
AnchorEntity), המפתחים צריכים לשמור על הפניה חזקה כל עוד המכונה בשימוש. אם כל ההפניות ישוחררו, המופעים האלה יהפכו לנגישים באופן זמני ויוחזרו באופן אוטומטי. (I83fe4)
- מנתקים אותו מהתרשים של הסצנה על ידי הגדרת
- צמצום כללי השמירה של Proguard לכל הספריות של
SceneCore. (I98447)
בעיות מוכרות
- אם מצרפים
PositionalAudioComponentל-Entityעם מופעExoPlayerלא פעיל, תתרחש קריסה. אל תפעילו אתsetPointSourceParamsואל תחברו או תנתקו את רכיבי האודיו המרחבי בזמן ש-ExoPlayer מושהה. נפתור את הבעיה הזו במהדורה הבאה.
גרסה 1.0.0-alpha14
6 במאי 2026
androidx.xr.scenecore:scenecore-*:1.0.0-alpha14 מופץ. גרסה 1.0.0-alpha14 מכילה את השמירות האלה.
שינויים ב-API
-
TrackingStateו-VpsAvailabilityResultהועברו אלandroidx.xr.arcore package, והסוגים ב-androidx.xr.runtimeהוצאו משימוש. (Ic7930, b/480462213) - השם של
Plane.Typeשונה ל-PlaneType. (I8c90c, b/482675376) - השם של
Plane.Labelשונה ל-PlaneLabel. (Ic6b67, b/482675376) - השדה
androidx.xr.runtime.FieldOfViewהוצא משימוש. במקומה צריך להשתמש במדיניותandroidx.xr.runtime.math.FieldOfView. (Ia01a0, b/480233045) - השם של
Matrix4.poseהשתנה לשםMatrix4.toPose(). המאפיין pose יצא משימוש. (I329b4, b/493383490) - שינינו את השם של
HandJointTypeערכי enum. (Ifbc83, b/482670596) - חשיפת
Component.onAttachו-onDetachכ-API ציבורי כדי לאפשר הטמעותComponentבהתאמה אישית. (I0ca1f) - הוספת רכיבי אודיו מרחבי (I39ddd, b/489421980, b/436642086, b/436642499)
- הסרת הישות מהאוסף
PointSourceParams. במקום זאת, הישות תשמש ישירות עםSpatialAudioTrack, SpatialSoundPoolו-SpatialMediaPlayer(Ib3685, b/489421980, b/436634048) - השם של
DeviceTrackingMode.LAST_KNOWNשונה ל-SPATIAL_LAST_KNOWN(עם חלופה שהוצאה משימוש), נוסףINERTIAL_LAST_KNOWNלמעקב 3DoF ונוסףTRACKING_DEGRADEDל-TrackingState. (Ie661c, b/445466590) - הוצא משימוש:
GroupEntity. כדי ליצור ישות עם הפונקציונליות הבסיסית של ישות בלבד, צריך להפעיל אתEntity.create, שתחזיר ממשק של ישות. (I4c450, b/473867483) - נוסף
XrLogAPI. מגדירים אתXrLog.isEnabledל-trueכדי להפעיל את הרישום ביומן ב-JetpackXR, ומשתמשים ב-XrLog.Levelכדי להגדיר את רמת הרישום ביומן. (I76a1f, b/463460895, b/487378441)
תיקוני באגים
- עכשיו ברירת המחדל של
Scene.keyEntityהיאmainPanelEntity. (I6a3ef)
גרסה 1.0.0-alpha13
25 במרץ 2026
androidx.xr.scenecore:scenecore-*:1.0.0-alpha13 מופץ. גרסה 1.0.0-alpha13 מכילה את השמירות האלה.
שינויים ב-API
- הסרת הסימון
unscaledGravityAlignedActivitySpaceמהמכשירSession.create. האובייקטActivitySpaceתמיד מוצג עכשיו בגודל המקורי שלו ומיושר לפי כוח הכבידה. (If6f11, b/458173423) - הסרנו את הפונקציות
setMaterialOverrideו-clearMaterialOverrideשהוצאו משימוש מ-GltfModelEntity, ועכשיו הן נקראות ב-GltfModelNodeהנפרד. (I2e5d2) - הוספנו את
transformPixelCoordinatesToLocalPositionואתtransformNormalizedCoordinatesToLocalPositionל-PanelEntityוהסרנו methods ניסיוניות מקבילות שהחזירו תנוחות במקום מיקומים שלVector3. (Ib6960, b/460123106, b/458333591) - הוספנו ממשקי API של
GltfAnimationלשליטה באנימציות glTF ב-SceneCore. (I2c172, b/466065486, b/465819070, b/465818617) - השם של
ScenePose.activitySpacePoseשונה ל-ScenePose.poseInActivitySpace(I8f175, b/427822261) - נוסף יישום של זמן ריצה מוטל של Scenecore (I9c4ab, b/476440158)
- כשמשנים את הגודל של הישות בחלונית הראשית, יכול להיות שהיא תעבור לנקודת המוצא
ActivitySpace. אין פתרון עקיף, חוץ מלהחזיר את החלונית למיקום המקורי שלה באופן ידני או באמצעות תוכנה. הבאג הזה יתוקן בגרסה עתידית. (b/489427007). - במקרים מסוימים, יכול להיות שהאפשרות
MovableComponentלא תופיע עבורSurfaceEntityוסוגי ישויות אחרים שאינם לוח. הגדרה מפורשת שלMovableComponent.sizeתגרום להצגת האפשרות. הבאג הזה יתוקן בגרסה עתידית (b/490983469).
גרסה 1.0.0-alpha12
25 בפברואר 2026
androidx.xr.scenecore:scenecore-*:1.0.0-alpha12 מופץ. גרסה 1.0.0-alpha12 מכילה את השמירות האלה.
בעיות מוכרות
- יכול להיות שאחרי כמה שניות, ישויות מעוגנות יקפצו מהמיקום המעוגן שלהן לנקודת המוצא של מרחב הפעילות.
- יכול להיות שאפליקציות יקרסו כשיוצרים מופעים של
SurfaceEntity. הבעיה הזו נפתרה בגרסהandroidx.xr.scenecore:scenecore-*:1.0.0-alpha13ובגרסאות הבאות. צריך לעדכן את האפליקציות המושפעות לגרסאות העדכניות.
שינויים ב-API
- השמות של
ActivitySpace.addOnSpaceUpdatedListenerו-ActivitySpace.removeOnSpaceUpdatedListenerהשתנו ל-addOnOriginChangedListenerו-removeOnOriginChangedListener. השם שלAnchorEntity.setOnSpaceUpdatedListenerהשתנה לשםsetOnOriginChangedListener. (I5d8fb) - הוספנו את מאפיין השם הציבורי אל
FakeEntityוהפכנו את התצוגה לציבורית ב-FakePanelEntity. (Ifa1f9)
תיקוני באגים
- תיקון של חישובי צפיפות הפיקסלים בתמונות מערכת חדשות יותר (I57d04)
גרסה 1.0.0-alpha11
28 בינואר 2026
androidx.xr.scenecore:scenecore-*:1.0.0-alpha11 מופץ. גרסה 1.0.0-alpha11 מכילה את השמירות האלה.
שינויים ב-API
- שינוי השם של
PerceivedResolutionResult.InvalidCameraViewל-PerceivedResolutionResult.InvalidRenderViewpointכי ממשקי ה-API שלgetPerceivedResolutionמסתמכים עכשיו על ה-API שלRenderViewpointב-ARCore במקום עלCameraViewScenePose. השם הזה משקף טוב יותר את ההטמעה החדשה. (I8c967, b/446989745, b/419311998) - ה-methods
PanelEntity/SurfaceEntity.getPerceivedResolutionמקבלות עכשיוRenderViewpointשסופק על ידי המפתח כארגומנט. בעבר, זמן הריצה בחר באופן שרירותי את ה-RenderViewpointששימש לחישוב הרזולוציה הנתפסת. (I8c967, b/446989745, b/419311998) - בוצעה הסרה של
SpatialUser,ScenePose.Headו-ScenePose.CameraView. הפונקציונליות של ממשקי ה-API האלה נכללת בממשקי ה-API שלArDeviceו-RenderViewpointב-ARCore for Jetpack XR. כדי לקבלScenePoseשמתאים לראש או לעין שמאל או ימין של המשתמש, המפתחים יכולים להשתמש ב-PerceptionSpace.getScenePoseFromPerceptionPoseעם התנוחה המתאימה שמתקבלת באמצעות ממשקי ה-API של ARCore. (I2f69c, b/446989745)
גרסה 1.0.0-alpha10
3 בדצמבר 2025
androidx.xr.scenecore:scenecore-*:1.0.0-alpha10 מופץ. גרסה 1.0.0-alpha10 מכילה את השמירות האלה.
שינויים ב-API
- הוספנו את
transformPixelCoordinatesToPoseואתtransformNormalizedCoordinatesToPoseאלPanelEntity(I462b3) - הוספנו מחלקת עזר, Utils, ל-
SceneCoreRuntime על סמך הלוגיקה ב-SceneCore(I570b9)
תיקוני באגים
- תוקנה קריסה פוטנציאלית שיכולה להתרחש כשסשן נהרס ומתקבל
SpatialModeChangeEvent(If44e8) - תוקן באג שעלול לגרום להשלכת
IllegalStateExceptionכשיוצאים מפעילות או נכנסים אליה מחדש. (Ibff1c)
גרסה 1.0.0-alpha09
19 בנובמבר 2025
androidx.xr.scenecore:scenecore-*:1.0.0-alpha09 מופץ. גרסה 1.0.0-alpha09 מכילה את השמירות האלה.
תכונות חדשות
- מוסיף API לאחזור
ScenePoseשמייצג את הקומפוזיציה של תנוחת המקור של מרחב התפיסה ותנוחה ביחס למקור של מרחב התפיסה. (I5b50a) - נוספה הפונקציה
getGravityAlignedPose. התנוחה המיושרת לכוח הכבידה מתעלמת מהעלרוד והגלגול של הסיבוב. (I5ae21) - סוגי הקבועים של
AnchorEntity.Stateהשתנו מ-Ints לסוגי משנה של State. (Ib0c49) - הוספנו את
getChildren()לממשק Entity. מחזור החיים שלMainPanelEntityעודכן. (Ia69d6)
שינויים ב-API
PointerCaptureComponent.PointerCaptureStateסוגי קבועים השתנו מ-Ints לסוגי משנה שלPointerCaptureState. (Ic888a)- השדה
Scene.spatialCapabilitiesהוא עכשיו מסוגSet<SpatialCapability>במקום שדה Int. השם של הקבועים שלSpatialCapabilityהשתנה. (I9c109) - השמות של סוגי הקבועים של
SurfaceEntityהשתנו, והם הפכו מ-Ints לסוגי משנה שלSurfaceEntity. (I419ed) - השמות של סוגי הקבועים של
SpatializerConstantהשתנו, והם הפכו מ-Ints לסוגי משנה שלSpatializerConstant. (Ia0e18) - השמות של סוגי הקבועים של
TextureSamplerהשתנו, והם הפכו מ-Ints לסוגי משנה שלTextureSampler. (I44078) SpatialVisibilityסוגי קבועים השתנו מ-Ints לסוגי משנה שלSpatialVisibility. (I70739)- השמות של סוגי הקבועים של
ResizeEvent.ResizeStateהשתנו, והם הפכו מ-Ints לסוגי משנה שלResizeState. (I384d5) - שמותיהם של
InputEventסוגי קבועים שונו והם הועברו מ-Ints כדי לרשת מהסוג המקיף שלהם. (I82817) GltfModelEntity.AnimationStateסוגי קבועים השתנו מ-Ints לסוגי משנה שלAnimationState. (I24f4e)- השמות של סוגי הקבועים של
AlphaModeהשתנו, והם הפכו מ-Ints לסוגי משנה שלAlphaMode. (I27b56) Spaceסוגי קבועים השתנו מ-Ints לסוגי משנה של Space. (I9255b)- הפונקציה
ScenePose.hitTestופונקציות קשורות מחזירות עכשיו את הערךnullאם לא נמצאה חיתוך, במקוםHitTestResultעם ערך null שלhitPosition. השדהHitTestResult.hitPositionלא יכול להיות ריק יותר. (I1400a) - האזכורים של
ActivityPoseשונו ל-ScenePose. (I7fe43)
גרסה 1.0.0-alpha08
22 באוקטובר 2025
androidx.xr.scenecore:scenecore-*:1.0.0-alpha08 מופץ. גרסה 1.0.0-alpha08 מכילה את השמירות האלה.
שינויים ב-API
- השם של
ActivityPanelEntity.moveActivityשונה ל-transferActivity(I273c5, b/430332856)
תיקוני באגים
-
:xr:scenecore:scenecore-spatial-renderingו-:xr:scenecore:scenecore-spatial-coreנוספו כתלות בהטמעה של:xr:scenecore:scenecore(I6ab65, b/447000520) - אם ניגשים אל
session.sceneאחרי שהסשן נהרס, נזרקת חריגה. (I77e6f)
גרסה 1.0.0-alpha07
24 בספטמבר 2025
androidx.xr.scenecore:scenecore:1.0.0-alpha07, androidx.xr.scenecore:scenecore-guava:1.0.0-alpha07 ו-androidx.xr.scenecore:scenecore-testing:1.0.0-alpha07 שוחררו. גרסה 1.0.0-alpha07 מכילה את השמירות האלה.
שינויים ב-API
- שינינו את השם של
fixedAspectRatioל-isFixedAspectRatioEnabledוהפכנו אותו למאפיין בוליאני (I5c4e8, b/440588971) -
Scenecoreזיופים נמצאים עכשיו במודולxr:scenecore:scenecore-testing. (Idd951) - שינינו את השם של
shouldAutoHideContentל-isAutoHideContentWhileResizingEnabledואת השם שלshouldAlwaysShowOverlayל-isAlwaysShowOverlayEnabled(I97c36, b/432335421) - עדכנו את הקבועים של
SceneCoreTextureSamplerכדי לשפר את הקריאוּת, לדוגמהTextureSampler.MinFilter.LINEARהוא עכשיוTextureSampler.MIN_FILTER_LINEAR(Ib159c) - ההגדרה
setKeyEntityשל הסצנה מוזגה למשתנהkeyEntity. אם מגדירים אתkeyEntityלישות שלא ניתן להעביר, כמוAnchorEntity, תופיע השגיאהIllegalArgumentExceptionבמקום הערך הבוליאני false. (I62080, b/428721695, b/422215745) - המשתנה
SpatialModeChangeListenerשל הסצנה הוחלף ב-setSpatialModeChangedListener. הוא מקבלConsumer<SpatialModeChangeEvent>במקוםSpatialModeChangedListener. עכשיו אפשר להעביר Executor ל-setSpatialModeChangedListener. (I62080, b/428721695, b/422215745) - הסרנו את הפרמטר
bundleמ-ActivityPanelEntity.startActivity(I64344, b/430332856, b/430333040) - השם של
SpatializerConstants.SOURCE_TYPE_BYPASSשונה ל-SpatializerConstants.SOURCE_TYPE_DEFAULT. (Ifc7fe, b/422215565) - נוסף קבוע אחד (
SpatialSoundPool.PLAY_FAILED). (Ifc7fe, b/422215565) - נוספו ארגומנטים שמוגדרים כברירת מחדל ל-methods של
SpatialSoundPool.play. (Ifc7fe, b/422215565) - הוסר ערך ההחזרה של פונקציות setter ב-
SpatialAudioTrackBuilder. (Ifc7fe, b/422215565) - שינויים ב-SurfaceEntity
- השם של
Shapeשונה על ידיSurfaceEntity.CanvasShape - השם של
Hemisphereשונה על ידיSurfaceEntity.CanvasShape.Vr180Hemisphere - השם של
SurfaceEntity.CanvasShape.Vr360Sphereהשתנה לשםSphere - השם של
SurfaceEntity.EdgeFeatheringParams.SmoothFeatherהשתנה לשםRectangleFeather - השם של
NoFeatheringשונה על ידיSurfaceEntity.EdgeFeathingParams.SolidEdge - השם של
SurfaceEntity.ContentSecurityLevelהשתנה לשםSurfaceProtection SurfaceEntity.ContentSecurityLevel.{values}הוסיף את הקידומתSURFACE_PROTECTION_.-
SurfaceEntity.SuperSampling.{$values}הוסיף את הקידומתSUPER_SAMPLING_ -
SurfaceEntity.StereoMode.{values}הוסיף את הקידומתSTEREO_MODE_ SurfaceEntity.ContentColorMetadata.maxCLLשינה את השם שלmaxContentLightLevel(I7eb5f, b/422216050, b/427529950)
- השם של
- שינוי השם של
launchActivityל-startActivity(I7db90, b/430332856) - בוצעה הסרה של
Scene.activitySpaceRoot. במקומה צריך להשתמש במדיניותScene.activitySpace. (I05ee8, b/378706624, b/422215745) -
configureBundleForFullSpaceModeLaunchו-configureBundleForFullSpaceModeLaunchWithEnvironmentInheritedשונו ל-createBundleForFullSpaceModeLaunchו-createBundleForFullSpaceModeLaunchWithEnvironmentInheritedבהתאמה, והועברו לקובץ LaunchUtils.kt כשיטות ברמה העליונה, והן מקבלות את Session כפרמטר הראשון (I64a2c, b/437186050) - ה-factory של
GroupEntityמחזיר עכשיו את הסוגGroupEntityבמקום Entity. (I66042)
תיקוני באגים
- הצגת
IllegalStateExceptionכשמשתמשים במופע של ישות אחרי סילוק. (I90990, b/427314036, b/432063442)
גרסה 1.0.0-alpha06
13 באוגוסט 2025
androidx.xr.scenecore:scenecore:1.0.0-alpha06, androidx.xr.scenecore:scenecore-guava:1.0.0-alpha06 ו-androidx.xr.scenecore:scenecore-testing:1.0.0-alpha06 שוחררו. גרסה 1.0.0-alpha06 מכילה את השמירות האלה.
שינויים ב-API
- ביטול ההגבלה על ממשקי ה-API של
SceneCore,BaseEntityו-BaseScenePose(88c0ff6)
גרסה 1.0.0-alpha05
30 ביולי 2025
androidx.xr.scenecore:scenecore-guava:1.0.0-alpha05, androidx.xr.scenecore:scenecore-testing:1.0.0-alpha05 ו-androidx.xr.scenecore:scenecore:1.0.0-alpha05 שוחררו. גרסה 1.0.0-alpha05 מכילה את השמירות האלה.
תכונות חדשות
- Perceived Resolution API נוסף לישויות של החלונית ול-
SurfaceEntities. (I118f6) PerceivedResolutionשיטות קריאה חוזרת (callback) נוספו ל-Scene.kt כדי לעקוב אחרי הרזולוציה הנתפסת של החלונית הראשית של הפעילות ב-HSM. (I58084)SurfaceEntity– נוספה תמיכה באפליקציה לבקשת דגימת-על בזמן היצירה. ההגדרה הזו מאפשרת לאפליקציות להשתמש במסנן דגימת-על (super sampling) להחלקת קצוות (anti-aliasing). (I06913)- הנכס
recommendedContentBoxInFullSpaceנוסף אלActivitySpace. היא מחזירה תיבה מומלצת להצבת תוכן במצב מרחב מלא. (I4cd6f) - הוספנו בנאי עמוס (overloaded) לשינוי של רכיבים שניתן להזיז, שמאפשר עיגון. (Ic0c70)
שינויים ב-API
בגרסה הזו בוצעו שינויים נרחבים ב-API של SceneCore. השמות של כמה מחלקות השתנו או שהן הועברו למודולים אחרים, ורוב השיטות של getter/setter הוחלפו במאפיינים של Kotlin. אנחנו צופים שיהיו שינויים נוספים ב-API שיגרמו לתקלות עד להשקת גרסת הבטא הראשונה, אבל הם לא יהיו רבים או משבשים כמו השינויים האלה.
- שינינו את השם ו/או העברנו את המחלקות והממשקים הבאים:
androidx.xr.scenecore.PixelDimensionsל-androidx.xr.runtime.math.IntSize2d,androidx.xr.scenecore.Dimensionsל-androidx.xr.runtime.math.FloatSize3d,androidx.xr.scenecore.ActivityPoseל-ScenePose,androidx.xr.scenecore.ContentlessEntityל-GroupEntity,androidx.xr.scenecore.PlaneTypeל-PlaneOrientation,androidx.xr.scenecore.PlaneSemanticל-PlaneSemanticType. (Ifd405)(I3b622) (If534d) - מספר פונקציות setter של מאפייני
Sceneהוגדרו כפרטיות. הן לא נועדו לשינוי על ידי לקוחותSceneCore:activitySpace,activitySpaceRoot,mainPanelEntity,perceptionSpace,spatialCapabilities,spatialEnvironmentו-spatialUser. (I2f506) - ב-Entity: המאפיינים הבאים השתנו:
get/setParent(), setContentDescription; המאפייןEntity.is/setHidden()הוצא משימוש, צריך להשתמש במאפייןEntity.is/setEnabledבמקום זאת. (Ibc4c6) - הסרנו את המחלקה
androidx.xr.scenecore.BasePanelEntity. במקומה, צריך להשתמש ישירות ב-PanelEntity. הוחלפו פונקציות getter ו-setter שלPanelEntityבמאפיינים. המאפייןPanelEntity.sizeהשתנה מ-Float3dSizeל-Float2dSize. השיטהandroidx.xr.scenecore.PanelEntity.getPixelDimensionsהוצאה משימוש. במקומה צריך להשתמש ב-getSizeInPixels. (Icc174) -
androidx.xr.scenecore.OnSpaceUpdatedListenerהוחלף בטקסטRunnable. (I19308) - החלפנו את
SpatialUser.getCameraViews()בנכס. (Ib0cc5) ב-ExrImageוב-GltfModel:, שינינו את השיטות שלcreateלפונקציות השהיה, ושינינו את הפרמטרים של create כך שיקבלוUriאוPathבמקוםString. (Id8883) (I0d247), (I25706) - העברנו את
SpatialEnvironment.requestFullSpaceModeו-SpatialEnvironment.requestHomeSpaceModeל-Scene. לדוגמה, צריך להשתמש ב-session.scene.requestFullSpaceMode()במקום ב-session.scene.spatialEnvironment.requestFullSpaceMode(). ל-addOnPassthroughOpacityChangedListenerול-addOnSpatialEnvironmentChangedListenerיש עכשיו שינויים שמקבלים מנהלי משימות אופציונליים. (I12fe0) (I6b21e) - הסרנו את השיטות הבאות של
SpatialEnvironmentשהוצאו משימוש:togglePassthrough,setPassthrough,setPassthroughOpacity,getPassthroughMode,getPassthroughOpacity,setSkyboxו-setGeometry. הוסרה גם המחלקה שהוצאה משימושSpatialEnvironment.PassthroughMode(I927bd) (I927bd) (I927bd) - הוחלפו פונקציות ה-getter וה-setter הבאות של
SpatialEnvironmentבמאפייני Kotlin: getCurrentPassthroughOpacity(), get/setPassthroughOpacityPreference(), get/setSpatialEnvironmentPreference(), isSpatialEnvironmentPreferenceActive()(I33a7b) (Ie06e2) (Ie06e2) - סוג ה
SpatialEnvironmentPreference.preferredPassthroughOpacityהשתנה מ-Float?ל-Float. הוא כבר לא מקבל ערכים ריקים (null). במקום זאת, הערךSpatialEnvironment.NO_PASSTHROUGH_OPACITY_PREFERENCEמשמש כדי לציין שאין העדפה לגבי אטימות. (I40107) - הפרמטר
windowBoundsPxעודכן ל-pixelDimensionsוהסוג שלו עודכן מ-Rect ל-IntSize2dבשיטת היצירה. (I1926e) - ה-constructor של
SpatialEnvironmentהוא עכשיו פנימי (I75a51) - החלפת המחלקה
SpatialPointerIconNoneוהמחלקותSpatialPointerIconCircleבאובייקטים נלוויםSpatialPointerIcon.NONEו-SpatialPointerIcon.CIRCLE(I416d2) - השדה
SpatialPointerIconבטבלהSpatialPointerComponentלא יכול להיות ריק יותר. כדי לציין שצריך להשתמש בסמל ברירת המחדל של המערכת, צריך להשתמש ב-SpatialPointerIcon.DEFAULTבמקום ב-null. (I416d2) - המאפיין
androidx.xr.scenecore.AnchorEntity.getState()הוחלף במאפיין לקריאה בלבד. שינינו את השמות של הפרמטרים ב-methodAnchorEntity.create()לשם הבהרה. בשיטות שלAnchorEntityלהגדרה ולהוספה של מאזינים, המאזין הועבר לארגומנט הסופי כדי להפעיל ביטויי למבדה נגררים. הטקסטandroidx.xr.scenecore.OnStateChangedListenerהוחלף בטקסטConsumer<AnchorEntity.State>ב-AnchorEntity. (I472e0) GltfModelEntity.getAnimationState()הוא עכשיו נכס. (I10b29)- החלפנו את
ActivitySpace.getBounds()בנכס. השם שלActivitySpace.addBoundsChangedListenerשונה ל-ActivitySpace.addOnBoundsChangedListener. החלפנו אתActivitySpace.setOnSpaceUpdatedListenerבשיטות הוספה/הסרה. (I4c956) - השם של
AnchorPlacement: planeTypeFilterהשתנה ל-anchorablePlaneOrientations, והשם שלplaneSemanticFilterהשתנה ל-anchorablePlaneSemanticTypes. הוספה שלMovableComponentל-AnchorEntityאו ל-ActivitySpaceתחזיר את הערך false, השם שלMoveListenerהשתנה ל-EntityMoveListener shouldDisposeParentAnchor, השם שלdisposeParentOnReAnchor systemMovableהוסר מהפונקציהcreateלטובתcreeateCustomMovable,createSystemMovableו-createAnchorable(If11c4) - הסרנו את
SurfaceEntity.featherRadiusX/Yוהוספנו את הקונספט של מחלקהEdgeFeatheringParams. (Ic78fc) - ה-method
PanelEntity.enablePanelDepthTest()הוחלפה בנכסpanelClippingConfig. מגדירים אתScene.panelClippingConfig = PanelClippingConfig(isDepthTestEnabled = true)כדי להפעיל את בדיקת העומק או מגדירים אתPanelClippingConfig(isDepthTestEnabled = false)כדי להשבית אותה. (I0cbe0) - הסוג של
Scene.mainPanelEntityהוא עכשיוMainPanelEntityבמקוםPanelEntity(I7125a) - השם של ה-method
setFullSpaceModeשל Scene השתנה ל-configureBundleForFullSpaceModeLaunch, והשם של ה-methodsetFullSpaceModeWithEnvironmentInheritedהשתנה ל-configureBundleForFullSpaceModeLaunchWithEnvironmentInherited. (I0cbe0) (I0cbe0) - הערכים UNKNOWN, OUTSIDE_FOV, PARTIALLY_WITHIN_FOV ו-WITHIN_FOV של
SpatialVisibilityשונו ל-SPATIAL_VISIBILITY_UNKNOWN, SPATIAL_VISIBILITY_OUTSIDE_FIELD_OF_VIEW, SPATIAL_VISIBILITY_PARTIALLY_WITHIN_FIELD_OF_VIEW ו-SPATIAL_VISIBILITY_WITHIN_FIELD_OF_VIEW, בהתאמה (Ie7e8c) - המחלקה
SpatialVisibilityהוחלפה באובייקט ציבורי עם ערכי const Int. הפונקציהsetSpatialVisibilityChangedListenerמקבלת עכשיוConsumer<Int>במקוםConsumer<SpatialVisibility>(Ie7e8c) -
PointerCaptureComponentקבועים שונו והועברו לאובייקטPointerCaptureComponent.PointerCaptureState(I9c7ac) -
PointerCaptureComponents' StateListenerהוחלף בטקסטConsumer<Int>. (I9c7ac) - הטקסט
InputEventListenerהוחלף בטקסטConsumer<InputEvent>(I9c7ac) -
setPreferredAspectRatioהועבר מהמחלקה Scene לאובייקטSpatialWindow, והוא מקבל את Session כפרמטר הראשון. (I7b717) -
Entity.setHidden()הוחלף ב-Entity.setEnabled()ו-Entity.isHidden()הוחלף ב-Entity.isEnabled(). setHidden(false)שווה ל-setEnabled(true)ול-isHidden() == !isEnabled(). (Icf0de) - הסוג של
Entity.contentDescriptionהשתנה ממחרוזת ל-CharSequence. (Ie59be) - הפונקציות
Session.createו-Session.configureמחזירות עכשיו את השגיאהSecurityExceptionאם לא ניתנו מספיק הרשאות, במקום להחזיר את הערכיםSessionCreatePermissionsNotGrantedאוSessionConfigurePermissionsNotGranted. (I7c488) -
ResizableComponent.createעכשיו דורשConsumer<ResizeEvent> ResizeEventListenerהוחלף ב-Consumer<ResizeEvent> ResizableComponent.sizeהשם שלResizableComponent.affordanceSize ResizableComponent.minimumSizeהשתנה ל-ResizableComponent.minimumEntitySize ResizableComponent.maximumSizeהשם שלResizableComponent.maximumEntitySizeהשתנה ל-ResizableComponent.autoHideContentהשם שלResizableComponent.shouldAutoHideContentהשתנה ל-ResizableComponent.forceShowResizeOverlayהשם שלResizableComponent.shouldAlwaysShowOverlayהשתנה ל-I97a2d) - הערך של
minSDKהופחת ל-24 עבורandroidx.xr.scenecoreו-androidx.xr.compose. חבילות XR עדיין דורשות API 34 בזמן הריצה. (I17224) - הוסרה ההגבלה
RequiresApi(34)בכל חבילות Jetpack XR. ההגבלה הזו הייתה מיותרת כי Jetpack XR זמין כרגע רק במכשירים עם רמת API 34 ומעלה. (Iae0f8) - ארטיפקט
SceneCoreהראשי (xr:scenecore:scenecore) יכיל רק ממשקי API אסינכרוניים בסגנון Kotlin. מפתחי Java יכולים להסתמך על הספרייהxr:scenecore:scenecore-guavaכדי לגשת לממשקי API תואמים. (If221b) - פרויקטים שפורסמו עם Kotlin 2.0 דורשים KGP 2.0.0 ואילך כדי לצרוך (Idb6b5)
- הספרייה הזו משתמשת עכשיו באנוטציות של JSpecify nullness, שהן מסוג type-use. מפתחים ב-Kotlin צריכים להשתמש בארגומנט הבא של המהדר כדי לאכוף שימוש נכון:
-Xjspecify-annotations=strict(זוהי ברירת המחדל החל מגרסה 2.1.0 של מהדר Kotlin) (Ia8420) - כל השיטות האסינכרוניות שמחזירות
ListenableFutureהוחלפו בפונקציות השהיה של Kotlin. מפתחי Java שרוצים להשתמש בשיטות אסינכרוניות שמבוססות עלListenableFutureבמקום בפונקציות השהיה של Kotlin, צריכים עכשיו להשתמש בפונקציות הרחבה ב-:xr:scenecore-scenecore-guava. לדוגמה,GuavaExrImageמכיל את הפונקציות האסינכרוניות של ExrImage שמקבילות ל-Guava,GuavaScenePoseמכיל את הפונקציות האסינכרוניות שלScenePoseשמקבילות ל-Guava,GuavaGltfModelמכיל את הפונקציות האסינכרוניות שלGuava-equivalent GltfModelוכו'. (If7283) (I0af60) (If7283) (Ia8515) (I4efdf) (I54bbf) (I3467a) (I82a33)
תיקוני באגים
- כלל מעודכן של Jetpack XR Scenecore
ProGuardלמניעתAbstractMethodErrorללקוחות ממוזערים. (I91a01) - תיקונים נוספים לתמיכה בהקטנת Proguard ב-Jetpack XR
SceneCore(I4f47e) - תוקן באג שבו
InteractableComponentעלול לגרום לקריסה אםhitPositionב-HitInfo שלInputEventעלול לקרוס אםhitPositionשהוחזר מהמערכת היה null (I7a695) - השמות של ערכי Config *Mode שונו כדי לשקף את ההתנהגות שלהם. (I6d247)
- תוקנו בעיות ב-FOV וב-
HitTestב-SceneCoreTestApp. (I2c51e) - תוקן באג ב-
SpatialCapabilities.hasCapability()שבו הפונקציה החזירה את הערך True אם אחת מהיכולות שהועברו עם bitwise OR הייתה True, במקום להחזיר את הערך True רק אם כולן היו True. (I2cd40) -
SurfaceEntity.StereoMode.TOP_BOTTOMעודכן כך שהמפה העליונה מיועדת לעין שמאל והמפה התחתונה מיועדת לעין ימין. (I4ae68)
גרסה 1.0.0-alpha04
7 במאי 2025
androidx.xr.scenecore:scenecore:1.0.0-alpha04 ו-androidx.xr.scenecore:scenecore-testing:1.0.0-alpha04 מופצים. גרסה 1.0.0-alpha04 מכילה את השמירות האלה.
תכונות חדשות
- מעכשיו, הטיפול בפעולת החזרה יעבוד על ישויות של חלוניות בלי פעילויות מוטמעות. כדי שהטיפול בלחצן החזרה יעבוד, צריך לציין את
android:enableOnBackInvokedCallback= "true"במניפסט של Android. - עכשיו
StereoSurfaceEntityתומך בהפעלה של MV-HEVC באמצעות שני ערכים חדשים שלStereoMode: MULTIVIEW_LEFT_PRIMARY ו-MULTIVIEW_RIGHT_PRIMARY. - הפונקציות
PanelEntity.setSizeו-PanelEntity.getSizeמחזירות עכשיו גדלים במרחב ההורה. -
Entity.setPose,Entity.getPose,Entity.setScale,Entity.getScale,Entity.setAlphaו-Entity.getAlphaמקבלים עכשיו פרמטר חדש,relativeTo, שמאפשר לקבל או להגדיר ערכים שקשורים למרחבים שונים. הערכים הנתמכים הם Parent, Activity ו-Real World spaces, וערך ברירת המחדל של הפרמטר הזה הוא Parent. - נוספו שיטות של Spatial Visibility Callback extension ל-
SessionExt.ktכדי לעקוב אחרי המקרים שבהם תוכן הסצנה זז בתוך שדה הראייה של המשתמש או מחוץ לו. - הוספנו את
setPointSourceParamsאלSpatialAudioTrack, כדי לאפשר עדכון של הפרמטרים אחרי שהמסלול נוצר. - נוספה מחלקה חדשה, Scene, עם הפניות לממשקי API של
Scenecore. הסצנה תהיה נגישה כמאפיין של תוסף של הסשן. פונקציות בתוךSessionExtהועברו אל Scene, ולכן צריך לשנות את הייבוא, לדוגמה,SessionExt.getScene(session).addSpatialCapababilitiesChangedListenerמולSessionExt.addSpatialCapabilitiesChangedListener. ActivityPose.hitTestAsyncנוסף, ומאפשרhitTestנגד תוכן וירטואלי.- נוסף סוג רכיב חדש
SpatialPointerComponent, שמאפשר ללקוחות לציין את הסמל שמוצג עבור הסמן, או להשבית את הסמל. כרגע אפשר לצרף את הרכיב הזה רק למופעים שלPanelEntity. - הוספנו את הפונקציה החדשה
PanelEntity, שמקבלת את מידות הלוח במטרים או בפיקסלים. הוסר מפעלPanelEntityישן יותר שמקבל שני פרמטרים מסוג Dimension עבור החלונית.
שינויים ב-API
- הוסרה ההגבלה
RequiresApi(34)בכל חבילות Jetpack XR. ההגבלה הזו הייתה מיותרת כי Jetpack XR זמין כרגע רק במכשירים עם רמת API 34 ומעלה. (Iae0f8) - פרויקטים שפורסמו עם Kotlin 2.0 דורשים KGP 2.0.0 ואילך כדי לצרוך (Idb6b5)
- המחלקה
PermissionHelperהוסרה. - האפשרות
PanelEntity.getPixelDensityהוצאה משימוש. - השדות
PanelEntity.setPixelDimensionsו-PanelEntity.getPixelDimensionהוסרו, והוחלפו בשדותsetSizeInPixelsו-getSizeInPixels. - האפשרות
Entity.getActivitySpaceAlphaהוסרה. אפשר להחליף ב-Entity.getAlpha(Space.Activity). - האפשרות
Entity.getWorldSpaceScaleהוסרה. אפשר להחליף אותו ב-Entity.getScale(Space.REAL\_WORLD). - הכיתה Session ב-
SceneCoreנמחקה לטובת Session ב-XR Runtime. - השם של
StereoSurfaceEntityהשתנה לשםSurfaceEntity. -
Entity.setSizeו-Entity.getSizeהוסרו, ואותן methods נוספו ל-PanelEntity. - השם של
PointSourceAttributesהשתנה לשםPointSourceParams. - השם של
SpatializerConstants.SOURCE\_TYPE\_BYPASSהשתנה לשםSpatializerConstants.SOURCE\_TYPE\_DEFAULT. - הישות
PointSourceParamsשונתה מגישה ציבורית לגישה פנימית. - עכשיו צריך להגדיר את
PlaneTrackingModeב-Session.configure()כדי להשתמש ב-AnchorEntity.create. - עכשיו ממשקי ה-API של
SpatialUserדורשים להגדיר אתHeadTrackingModeב-Session.configure(). - אם
ResizableComponentלא מצורף, יתקבל יומן ברמת INFO במקום יומן ברמת ERROR. - הכיתה Fov היא עכשיו כיתת Kotlin רגילה.
- מפצלים את
Entity.ktכדי להציב כל סוג של ישות קונקרטית בקובץ משלו. - כשיוצרים
PanelEntityחדש, רוב התצוגות המפורטות יועברו ל-FrameLayout. כך קל יותר להשתמש ב-LayoutInspectorעם לוחות מרחביים. - מופע
XrExtensionsשנמצא בשימוש רשום עכשיו בפלטפורמה, כמיטב יכולתנו, כדי לעזור בניפוי באגים באפליקציה.
תיקוני באגים
- נוסף תיקון כדי למנוע קריסה שיכולה להתרחש כשמעבירים
PanelEntityעםMovableComponentו-AnchorPlacement - תוקנה בעיה שבה
ResizableComponentסיפק גדלים לא עדכניים בקריאה חוזרת (callback) שלonResizeStart. - תוקנה קריסה שקרתה כש-
dispose()שלJxrPlatformAdapterAxrנקרא כמה פעמים.
גרסה 1.0.0-alpha03
26 בפברואר 2025
androidx.xr.scenecore:scenecore:1.0.0-alpha03 ו-androidx.xr.scenecore:scenecore-testing:1.0.0-alpha03 מופצים. גרסה 1.0.0-alpha03 מכילה את השמירות האלה.
תכונות חדשות
- עכשיו יש תמיכה בהקטנת Proguard לקוד Jetpack XR
תיקוני באגים
- תיקונים נוספים לתמיכה בהקטנה של Proguard ב-Jetpack XR SceneCore (I4f47e)
- כלל מעודכן של Jetpack XR Scenecore
ProGuardלמניעתAbstractMethodErrorללקוחות ממוזערים. (I91a01)
גרסה 1.0.0-alpha02
12 בפברואר 2025
androidx.xr.scenecore:scenecore:1.0.0-alpha02 ו-androidx.xr.scenecore:scenecore-testing:1.0.0-alpha02 מופצים. גרסה 1.0.0-alpha02 מכילה את השמירות האלה.
שינוי תוכנה שעלול לגרום לכשל באפליקציות שנוצרו לפני גרסה 1.0.0-alpha02
- ה-methods של ה-factory הועברו מהמחלקה
Sessionל-method נלווית בכל סוג בהתאמה:- השדה
Session.createActivityPanelEntity(Dimensions, String, Activity, Pose)נמחק והוחלף בשדהActivityPanelEntity.create(Session, Dimensions, String, Pose) - השדה
Session.createAnchorEntity(Anchor)נמחק והוחלף בשדהAnchorEntity.create(Session, Anchor) - השדה
Session.createAnchorEntity(Dimensions, Int, Int, Duration)נמחק והוחלף בשדהAnchorEntity.create(Session, Dimensions, Int, Int, Duration) - השדה
Session.createEntity(String, Pose)נמחק והוחלף בשדהContentlessEntity.create(Session, String, Pose) - השדה
Session.createExrImageResource(String)נמחק והוחלף בשדהExrImage.create(Session, String) - השדה
Session.createGltfEntity(GltfModel, Pose)נמחק והוחלף בשדהGltfModelEntity.create(Session, GltfModel, Pose) - השדה
Session.createGltfModelResource(String)נמחק והוחלף בשדהGltfModel.create(Session, String) - השדה
Session.createInteractableComponent(Executor, InputEventListener)נמחק והוחלף בשדהInteractableComponent.create(Session, Executor, InputEventListener) - השדה
Session.createMovableComponent(Boolean, Boolean, Set<AnchorPlacement>, Boolean)נמחק והוחלף בשדהMovableComponent.create(Session, Boolean, Boolean, Set<AnchorPlacement>, Boolean) - השדה
Session.createPanelEntity(View, Dimensions, Dimensions, String, Pose)נמחק והוחלף בשדהPanelEntity.create(Session, View, Dimensions, Dimensions, String, Pose) - השדה
Session.createResizableComponent(Dimensions, Dimensions)נמחק והוחלף בשדהResizableComponent.create(Session, Dimensions, Dimensions) - השדה
Session.createStereoSurfaceEntity(Int, Dimensions, Pose)נמחק והוחלף בשדהStereoSurface.create(Session, Int, Dimensions, Pose)
- השדה
- ה-methods הבאות שהוצאו משימוש הוסרו:
- הקובץ
Session.canEmbedActivityPanel(Activity)נמחק. במקומה צריך להשתמש במדיניותgetSpatialCapabilities.hasCapabilility(SPATIAL_CAPABILITY_EMBED_ACTIVITY). - הקובץ
Session.hasSpatialCapability(Int)נמחק. היא הוחלפה ב-getSpatialCapabilities().hasCapability(), שמאפשרת לבדוק אם יש יכולות מרחביות בצורה מופרדת יותר, כיgetSpatialCapabilities()מחזירה אובייקטSpatialCapabilities. - השדה
Session.requestFullSpaceMode()נמחק והוחלף בשדהSpatialEnvironment.requestFullSpaceMode() - השדה
Session.requestHomeSpaceMode()נמחק והוחלף בשדהSpatialEnvironment.requestHomeSpaceMode()
- הקובץ
- הפונקציות
Session.setFullSpaceMode(Bundle)ו-Session.setFullSpaceModeWithEnvironmentInherited(Bundle)הועברו לפונקציות של תוספים. כדי לקבל גישה, צריך להוסיף את הייבוא החדש לקובצי המפתחים:import androidx.xr.scenecore.setFullSpaceModeimport androidx.xr.scenecore.setFullSpaceModeWithEnvironmentInherited
- הפונקציה
Session.setPreferredAspectRatio(Activity, Float)הועברה לפונקציית תוסף. כדי לקבל גישה, המפתחים יצטרכו להוסיף את הייבוא החדש לקבצים שלהם:import androidx.xr.scenecore.setPreferredAspectRatio
- הפונקציות
Session.getEntitiesOfType(Class<out T>)ו-Session.getEntityForRtEntity(RtEntity)הועברו לפונקציות של תוספים. כדי לקבל גישה, המפתחים יצטרכו להוסיף את הייבוא החדש לקבצים שלהם:import androidx.xr.scenecore.getEntitiesOfTypeimport androidx.xr.scenecore.getEntityForRtEntity
- המשתמש
Session.unpersistAnchor(Anchor)נמחק - המשתמש
Session.createPersistedAnchorEntity(UUID)נמחק
בעיות מוכרות
- יכול להיות שההגדרות
PanelEntity.setCornerRadius()ו-ActivityPanelEntity.setCornerRadius()לא ייכנסו לתוקף עד שהלוח יועבר בפעם הבאה. אפשר לפתור את הבעיה הזו על ידי העברת הלוח למיקום הנוכחי שלו - כשמתבצעת קריאה ל-
BoundsChangedב-ActivitySpace, יכול להיות שחלק מה-ActivityPoseלא עודכנו בצורה נכונה. הוא יעודכן בשיחתOnSpaceUpdatedהבאה בתאריךActivitySpace
שינויים בתוכנה שעלולים לגרום לכשלים ושינויים בהתנהגות
- ל-
PanelEntityול-ActivityPanelEntityתהיה רדיוס פינה שמוגדר כברירת מחדל של 32dp או פחות אם הרוחב או הגובה של הלוח קטנים מ-32dp
ממשקי API ויכולות חדשים
- מציג את
StereoSurface.CanvasShape, שמאפשר ליצור אזורי ציור ב-Sphericalוב-Hemisphericalכדי לעבד מדיה עשירה. - הפונקציה
StereoSurfaceEntity.create()מקבלת עכשיו פרמטרCanvasShape. (המערכת מתעלמת כרגע מהפרמטר הזה, אבל הוא יהיה בשימוש בגרסה עתידית) - הפרמטר
Dimensionsלא נכלל יותר ב-StereoSurfaceEntity.create(). האפליקציות צריכות לשלוט בגודל של ה-canvas באמצעות הגדרתCanvasShape - ל-
StereoSurfaceEntityיש איברCanvasShapeשאפשר להגדיר באופן דינמי. - המאפיין
StereoSurfaceEntity.dimensionsהוא עכשיו לקריאה בלבד. כדי לשנות את המימדים, צריך להגדיר אתCanvasShapeבאפליקציות. - עכשיו אפשר להגדיר מחדש את
StereoModeאחרי הבנייה באמצעותStereoSurfaceEntity.
שינויים אחרים
- הפחתת minSDK בזמן הקימפול ל-24. כל ממשקי ה-API של Jetpack XR עדיין דורשים את API 34 בזמן הריצה.
- Session factory (
Session.create) שלSceneCoreלא מפעיל יותר Intent כדי לקבל את ההרשאהSCENE_UNDERSTANDING. במקום זאת, אפליקציית הלקוח צריכה לבקש מהמשתמש את ההרשאות באופן מפורש לפני שהיא מנסה ליצור את נקודות העיגון. אם המשתמש לא יעניק את ההרשאה, לא תהיה אפשרות ליצור עוגן.
תיקוני באגים
- הפונקציה
getActivitySpacePose()תוקנה כדי להביא בחשבון את קנה המידה שלActivitySpace, על ידי החזרת ערכי תרגום במטרים מותאמים במקום להחזיר תמיד מטרים לא מותאמים. עכשיוtransformPoseToמשתמש גם ביחידות הנכונות כדי לחשב שינויים בקואורדינטות כש-ActivitySpaceמעורב במקור או ביעד. - מעכשיו, בכל פעם שמועברת העדפה של תיבת שמיים ריקה באמצעות
setSpatialEnvironmentPreference(new SpatialEnvironmentPreference(null, geom)), תיבת השמיים תוגדר לתיבת שמיים שכולה שחורה. כדי לחזור ל-skybox ולגיאומטריה שמוגדרים כברירת המחדל של המערכת, משתמשים ב-setSpatialEnvironmentPreference(null).
גרסה 1.0.0-alpha01
12 בדצמבר 2024
androidx.xr.scenecore:scenecore-* 1.0.0-alpha01 מופץ.
תכונות בגרסה הראשונית השקנו גרסה ראשונית של Jetpack SceneCore למפתחים, ספריית תרשימי סצנות בתלת-ממד ליצירה ולשינוי של סביבות וסצנות סוחפות. הספרייה הזו מאפשרת לכם למקם ולסדר מודלים תלת-ממדיים ולוחות תוכן ביחס זה לזה וביחס לסביבות הווירטואליות או לסביבות בעולם האמיתי.
- SpatialEnvironment: יוצרים חוויות סוחפות לחלוטין עם תמונת Skybox או גיאומטריה של מודל תלת-ממדי כרקע לסצנת ה-XR של הסביבה שלכם. אפשר גם להפעיל את מצב Passthrough, כדי שהסצנה הווירטואלית תשתלב בסביבה האמיתית של המשתמש.
- PanelEntity: הוספת תוכן דו-ממדי לסצנות תלת-ממדיות על ידי הטמעת פריסות ופעילויות רגילות של Android בחלוניות מרחביות שיכולות לצוף או להיות מעוגנות למשטחים בעולם האמיתי.
- GltfModelEntity: הצבה, הנפשה ואינטראקציה עם מודלים תלת-ממדיים בסצנה. SceneCore תומך בפורמט הקובץ glTF כדי שיהיה קל לשלב אותו עם מודלים קיימים.
- SpatialAudio: הוספת מקורות אודיו סביבתיים ונקודתיים לסצנת התלת-ממד כדי ליצור חוויית סאונד מרחבית וסוחפת.
- StereoSurfaceEntity: SceneCore תומך בניתוב תוכן לעין שמאל/ימין שמוצג ב-Android Surface. אפשר להשתמש בזה כדי לרנדר תוכן סטריאוסקופי בפורמט של זה לצד זה או מלמעלה למטה, כמו תמונות סטריאו, סרטוני תלת-ממד או ממשקי משתמש אחרים שרונדרו באופן דינמי. באפליקציות צריך להשתמש ב-MediaPlayer או ב-ExoPlayer לפענוח סרטונים.
- מערכת רכיבים: SceneCore מציעה מערכת רכיבים חזקה וגמישה להוספת יכולות לתוכן XR, כולל אפשרויות למשתמשים להזיז מודלים ולוחות, לשנות את הגודל שלהם ולקיים איתם אינטראקציה.
- עוגן: כשהתכונה "מעבר" מופעלת, אתם יכולים לחבר חלוניות ומודלים למשטחים אמיתיים, וכך לשלב בצורה חלקה תוכן וירטואלי בסביבה האמיתית של המשתמשים.
- תנוחת המשתמש: גישה למיקום של המשתמש בסצנה הווירטואלית, כדי להתאים את התוכן למיקום של המשתמש.
- SpatialCapabilities: פיתוח אפליקציות רספונסיביות לחלוטין שמנצלות יכולות מרחביות כשהן זמינות, כמו מיקום תלת-ממדי של תוכן בממשק המשתמש. בנוסף, האפליקציה יכולה לעקוב אחרי שינויים ביכולות בזמן שהיא פועלת, כדי לשנות את החוויה בהתאם לאופן שבו המשתמש משתמש במכשיר Android XR.
בעיות מוכרות
- נכון לעכשיו, כדי להשתמש ב-Jetpack SceneCore נדרשת גרסת minSDK 30. כדי לעקוף את הבעיה, אפשר להוסיף את רשומת המניפסט הבאה
<uses-sdk tools:overrideLibrary="androidx.xr.scenecore, androidx.xr.compose"/>כדי לבנות ולהפעיל עם minSDK של 23. - הסשן יכול להפוך ללא חוקי במצבים שונים שבהם ה-Activity נוצר מחדש באופן אוטומטי, כולל שינוי הגודל של החלונית הראשית, חיבור ציוד היקפי ומעבר בין מצב בהיר למצב כהה. אם אתם נתקלים בבעיות של ביטול סשנים, אתם יכולים לנסות את הפתרונות הבאים: להגדיר שהחלונית הראשית לא תהיה ניתנת לשינוי גודל, להשתמש בישות של חלונית דינמית, להשבית את היצירה מחדש של הפעילות לשינויי הגדרות ספציפיים או להשבית את השינויים בעיצוב של מצב בהיר/מצב כהה.
- אין תמיכה ברכיבים שאפשר להזיז ולשנות את הגודל שלהם ב-GltfEntity.
- Entity.getSize() לא נתמך ב-GltfEntity.
- אפליקציות Jetpack XR צריכות לבקש את ההרשאה
android.permission.SCENE_UNDERSTANDINGב-AndroidManifest. - אפשר ליצור סשן רק במכשיר Android XR. בשלב הזה, אם יוצרים סשן ומנסים להשתמש בו במכשיר שהוא לא Android XR, מקבלים RuntimeException.
- הגדרת ה-skybox לערך null באמצעות `SpatialEnvironment.setSpatialEnvironmentPreference() לא גורמת ל-skybox שחור מלא כפי שמתועד. יכול להיות שתוצג תיבת השמיים שמוגדרת כברירת המחדל של המערכת, או שלא יהיה שינוי בתיבת השמיים הנוכחית.
- לקוחות SceneCore צריכים להוסיף את
implementation(“com.google.guava:listenablefuture-1.0”)להגדרות Gradle של יחסי התלות של האפליקציה. בגרסה עתידית, scenecore תכלול את הספרייה הזו כתלות ב-api, כך שהלקוחות לא יצטרכו להצהיר עליה באופן מפורש. - SceneCore כולל בטעות את
com.google.guava:guava-31.1-androidו-com.google.protobuf:protobuf-javaliteכיחסי תלות טרנזיטיביים. אם זה גורם לשגיאות של כיתות כפולות ב-build, אפשר להחריג את שני יחסי התלות האלה בלי בעיה. - אם האפליקציה משתמשת ב-SceneCore ומפעילה את ProGuard, היא תקרוס כשיוצרים סשן. כדי לעקוף את הבעיה, אפשר להשבית את ProGuard. במדריך הזה מוסבר איך להפעיל את ProGuard.