Jetpack Compose na potrzeby XR
| Najnowsza aktualizacja | Wersja stabilna | Wersja kandydująca do publikacji | Wersja beta | Wersja alfa |
|---|---|---|---|---|
| 23 września 2026 r. | - | - | 1.0.0-beta01 | - |
Deklarowanie zależności
Aby dodać zależność od XR Compose, musisz dodać do projektu repozytorium Maven Google. Więcej informacji znajdziesz w repozytorium Maven Google.
Dodaj zależności dotyczące potrzebnych artefaktów w pliku build.gradle aplikacji lub modułu:
Odlotowe
dependencies { implementation "androidx.xr.compose:compose:1.0.0-beta01" // Use to write unit tests testImplementation "androidx.xr.compose:compose-testing:1.0.0-beta01" }
Kotlin
dependencies { implementation("androidx.xr.compose:compose:1.0.0-beta01") // Use to write unit tests testImplementation("androidx.xr.compose:compose-testing:1.0.0-beta01") }
Więcej informacji o zależnościach znajdziesz w artykule Dodawanie zależności kompilacji.
Prześlij opinię
Twoja opinia pomoże nam ulepszyć Jetpacka. Jeśli odkryjesz nowe problemy lub masz pomysły na ulepszenie tej biblioteki, daj nam znać. Zanim utworzysz nową kartę, zapoznaj się z dotychczasowymi problemami w tej bibliotece. Możesz oddać głos na istniejący problem, klikając przycisk gwiazdki.
Więcej informacji znajdziesz w dokumentacji narzędzia Issue Tracker.
Wersja 1.0
Wersja 1.0.0-beta01
23 września 2026 r.
Publikacja androidx.xr.compose:compose:1.0.0-beta01 i androidx.xr.compose:compose-testing:1.0.0-beta01 Wersja 1.0.0-beta01 zawiera te zmiany.
Zmiany w interfejsie API
- Usunięto wycofaną funkcję
DragPolicy. Użyj w zamian zasadySubspaceModifier.movable(). (I108d4) - Usunęliśmy wycofaną funkcję
ResizePolicyi jej użycie wSpatialPaneliSpatialExternalSurface. Usuń wycofaną funkcjęSubspaceModifier.resizable. Zamiast niej użyj nowej zasadySubspaceModifier.resizablez nowym warunkiemResizePolicy. (I59e6b) - Dodano parametr
isPitchUpdateEnabled, który umożliwia niezależne włączanie i wyłączanie śledzenia wysokości dźwięku. (Ie9e86) - Usunięto dopuszczalność wartości null w przypadku pola
pitchLimitsi zmieniono nazwę polaPitchLimits.UNCONSTRAINEDnaPitchLimits.FullRange. (I0154f) ExposedDropdownMenujest teraz funkcją rozszerzenia wExposedDropdownMenuBoxScope, a nie elementem członkowskim. Może być konieczne zaktualizowanie kodu za pomocą nowego importu. (Ie8a65)- Usunięto wycofaną klasę
SurfaceProtection. Użyj w zamian zasadySpatialExternalSurfaceProtection. (Iab2c6) - Funkcja Orbiter, która przyjmuje wartość
OrbiterPoseProvider, została wycofana na rzecz funkcji, która używa wartościSpatialAlignment. (I4d12b) SpatialActivityPanelwymaga terazSpatialActivityPanelController(utworzonego za pomocąrememberSpatialActivityPanelController) do uruchamiania i zarządzania osadzonymi aktywnościami. (Id25c6)- Usunięto parametr
upDirectionz funkcjirotateToLookAtUseri dodano parametry ograniczeń obrotu (isYawUpdateEnabledipitchLimits). (I1370a)
Poprawki błędów
- Rozwiązano różne problemy z
InteractionPolicy. Aplikacja ulegała awarii, jeśli zdarzenie wejściowe wystąpiło w momencie, gdy element kompozycyjny lub element podrzędny (np. Orbiter) inicjował sekwencję usuwania. Rozwiązuje też problem, w którym dziecko otrzymywało zdarzenia najechania kursorem. (Ifc477) - Zmniejszyliśmy rozmiar panelu w
RotateToLookAtUserActivity, aby zapobiec przycinaniu na urządzeniach o mniejszym polu widzenia. (I8d672)
Znane problemy
- W przypadku paneli Compose XR występuje problem polegający na tym, że utworzenie wielu paneli w ramach jednej aktywności może spowodować uszkodzenie wyświetlanych treści nawet po usunięciu paneli.
Wersja 1.0.0-alpha17
12 sierpnia 2026 r.
Publikacja androidx.xr.compose:compose:1.0.0-alpha17 i androidx.xr.compose:compose-testing:1.0.0-alpha17 Wersja 1.0.0-alpha17 zawiera te zmiany.
Zmiany w interfejsie API
- Usuń klasę wartości
Meter, wScenecorezastępuje ją klasavirtualPixelDensity. (I690ee) - Interfejs
SpatialGltfModelAPI ma obecnie charakter eksperymentalny i musisz wyrazić zgodę na jego używanie. (I4557e) - Ustawienie
systemresizable jako dopuszczającego wartość null (Ib0093) - Udostępniono
DensitywSubspaceSemanticsInfona potrzeby testowania. (I2e826) - Zmień nazwę opcji domyślnej
ResizePolicynasystemi dodaj nową opcjęDefaultbez parametrów (Ic8b16). - Oznacz funkcję
FollowTargetjako eksperymentalną. Cały interfejsFollowingSubspaceAPI ma teraz charakter eksperymentalny. (Id4ee3) - Usunięto interfejsy API
GltfAnimation(Ic2894) - Zmieniono nazwę metody sparametryzowanej
MovePolicy.default()naMovePolicy.system(). Dodaliśmy właściwośćval MovePolicy.Default, która reprezentuje standardowe domyślne zachowanie ruchu. (Iedcc9) - Rozwiń
ExperimentalMoveAnchorPolicywymagania dotyczące zgody użytkownika naPlaneSemanticiPlaneOrientation(Ief927). - Usuwanie urządzenia
resetMinsz kontaVolumeConstraints.offset(Ib2f2f) - Usunięto wycofaną funkcję
SceneCoreEntitySizeAdapter. (Ib6722) - Usunięto wycofane przeciążenie
Subspacez parametremallowUnboundedSubspace. (I8e97f) - Usunięto przeciążenie modyfikatora semantyki, które zostało wycofane. (I4ac10)
Poprawki błędów
- Rozwiązaliśmy problem polegający na tym, że elementy podrzędne elementu
Composablez dołączonym elementemInteractionPolicywywoływały zdarzenia wejściowe (Icdba6).
Wersja 1.0.0-alpha16
15 lipca 2026 r.
Publikacja androidx.xr.compose:compose:1.0.0-alpha16 i androidx.xr.compose:compose-testing:1.0.0-alpha16 Wersja 1.0.0-alpha16 zawiera te zmiany.
Zmiany w interfejsie API
- Usuwanie interfejsów API
ComponentOverride(I820c4) - Interfejsy API
GltfAnimationiSpatialGltfModelAnimationzostały oznaczone jako eksperymentalne. Niektóre właściwości zostały przekształcone w funkcje pobierające. (I8d689, b/524771027) - Poprawiliśmy stałe zachowanie ogólnej gęstości, ustalając stały przelicznik między metrami a pikselami. Wycofany plik Meter.kt,
Session.scene.virtualPixelDensity, może być teraz używany jako alternatywa. (I122ff, b/430097855, b/474168798) - Zaktualizuj modyfikator o zmienianym rozmiarze, aby używać
ResizePolicyzamiast 2 modyfikatorów (I7fb0f, b/496257436, b/519672992) - Dodano parametr tolerancji:
Dp = Dp(0.5f)do wszystkich publicznych asercji równości wymiarów i pozycji reprezentacji zmiennoprzecinkowej wSubspaceAssertions.kt. Domyślne działanie tolerancji (0.5.dp) jest w pełni udokumentowane. (I266cb, b/521491915) - Dodano ruchome przeciążenie z parametrem
movePolicyi wycofano parametrytransformingMovableimovable(Ic88c1, b/481781189) - Dodano nowe nieinteraktywne warianty standardowego elementu listy i elementu listy podzielonej na segmenty, które są zgodne ze specyfikacjami Material Expressive. Wersja nieekspresywna została wycofana. (Ide4de, b/491994186)
- W przypadku Subspace parametr
allowUnboundedSubspacezostał wycofany i jest ukryty. Nieograniczone działanie można teraz uzyskać, używając modyfikatora podprzestrzeniSubspaceModifier.requiredSizeIn(maxWidth=Dp.Infinity,maxHeight=Dp.Infinity,maxDepth=Dp.Infinity). ParametrallowUnboundedSubspacezostał usunięty z funkcjiFollowingSubspace. (Ia72ae, b/433624021) - Przekonwertowano
Session.createna funkcję zawieszania. (I5d27f) - Dodano
SubspaceModifier.spatializedAudioOutput, co umożliwia przestrzenne odtwarzanie dźwięku za pomocąExoPlayerlubSoundEffectPlayer(I46697, b/489421980, b/497867019). - Zaktualizowano
ComponentActivity.requestHomeSpace()irequestFullSpace(), aby zwracaćSpaceRequestResultw celu weryfikacji stanu. (If1672) - Zaktualizowano
AnchorEntitynaAnchorSpace(Ifa95e, b/513619219) - Metoda
fromResourcebez ograniczeń zSpatialGltfModelSource(I1f5a1, b/503047416) - Elementy
SubspaceSemanticsMatchersą publiczne: właściwośćdescription, metody fabryczne towarzyszące (expectValue,keyIsDefined,keyNotDefined), funkcje składowe (matches,matchesAny) i operatory (and,or,not). (I972a4, b/460427288) - Zaktualizowano
SubspaceModifier.semantics,SubspaceModifier.testTag,SubspaceSemanticsInfo,SubspaceSemanticsModifierNode, aby korzystać z wyselekcjonowanych typów semantyki przestrzennej. (I80dea, b/460427288) - Zmieniliśmy nazwę interfejsu
positionnaalignwSpatialAlignmenti usunęliśmy poszczególne metody przesunięcia kierunkowego na rzecz ujednoliconego interfejsualignAPI. (I9bdb2, b/479805937) - Usunięto wycofane interfejsy API trybu przestrzeni z
SpatialConfiguration. (I1ef5c, b/458712461) - Wprowadzono
SubspaceSemanticsConfiguration. Jest to konfiguracja właściwości semantycznych węzła przestrzennego. Ta klasa bezpiecznie udostępnia metody zapytań dotyczące semantyki 3D bez ujawniania podstawowych funkcji semantyki 2D zewnętrznym konsumentom. (Id025e, b/460427288) - Wprowadzono
SubspaceSemanticsPropertyReceiver: dedykowany kod, który ogranicza właściwości kontenera układu 3D do prawidłowych pól (początkowotestTagicontentDescription). (I5cf5c, b/460427288)
Poprawki błędów
- Zmieniliśmy ustawienie
hasContentDescriptionmodyfikatora semantycznego na domyślne dopasowywanie podciągów. (I08214) - Dodano ograniczone
FollowBehavior.ExponentialDecay(), które zapewnia łagodne śledzenie oparte na fizyce sprężystości. (I7449c, b/485639909, b/500493335)
Będzie to miało wpływ na większość interfejsów API. W szczególności LocalSession CompositionLocal i wszystkie CompositionLocals, które są zależne od LocalSession (np. LocalSpatialConfiguration, LocalSpatialCapabilities itp.), będą teraz rozpoznawane jako null lub jego wersje inne niż XR przed zainicjowaniem Session.
Gdy Session będzie dostępny, zostanie wywołana ponowna kompozycja z prawidłowym stanem. (I0cfa4, b/514712835, b/514712835)
- Uściśliliśmy dokumentację dotyczącą funkcji
ComponentActivity.requestHomeSpaceiComponentActivity.requestFullSpacew zakresie zawieszania, anulowania i jednoczesności. Zaktualizowano testy weryfikujące propagacjęCancellationException. (I22f75, b/493289528)
Wersja 1.0.0-alpha15
17 czerwca 2026 r.
Publikacja androidx.xr.compose:compose:1.0.0-alpha15 i androidx.xr.compose:compose-testing:1.0.0-alpha15 Wersja 1.0.0-alpha15 zawiera te zmiany.
Zmiany w interfejsie API
- Wycofaliśmy
ResizePolicyi stary modyfikator zmiany rozmiaru, zastępując go nowym przeciążeniemSubspaceModifier.resizableiSubspaceModifier.transformingResizable. (I9e4bc) - Zaktualizowane interfejsy API
SpatialGltfModel: dodano obsługę wczytywania modeli z zasobów za pomocąSpatialGltfModelSource.fromResource. Zmieniono nazwę parametru speed naplaybackSpeedwSpatialGltfModelAnimationi dodano metodę resume().SpatialGltfModelStatus.Loaded i Loading są teraz obiektami. (I523de) - Oznaczono interfejs API
rotateToLookAtUserjako eksperymentalny. (I86c16) - Przeniesiono i zmieniono nazwę chronionej zmiennej
targetCurrentPosena zmienną lokalnącurrentTargetPoseMeter. (Ia557c) - Zaktualizuj dokumenty
SpatialPaneliSpatialExternalSurface, aby uwzględnić w nich informacje o tym, gdzie obiekt jest renderowany w ramach rozmiaru układu (I72104) - Zamknięto
SpatialGltfModellogikę wczytywania wSpatialGltfModelStatei wyjaśniono zachowanie w przypadku błędu. (Ibe98b) - Wyjaśniono
depthwSubspaceModifer.sizekdocs (I0f84f)
Wersja 1.0.0-alpha14
19 maja 2026 r.
Publikacja androidx.xr.compose:compose:1.0.0-alpha14 i androidx.xr.compose:compose-testing:1.0.0-alpha14 Wersja 1.0.0-alpha14 zawiera te zmiany.
Zmiany w interfejsie API
- Wprowadzono
transformingMovabledo obsługi domyślnego ruchu 3D przez system oraz nowe przeciążenie dlamovabledo obsługi niestandardowych zachowań ruchu. (I50960) - Pole „
SpatialGltfModel.fromData()” zostało usunięte. (I4d083) - Dodaliśmy nowy interfejs węzła modyfikatora
SubspaceMeasuredSizeAwareModifierNode, który zapewnia wywołanie zwrotneonRemeasuredpo przejściu pomiaru.SubspaceLayoutAwareModifierNoderozszerza teraz ten nowy interfejs. ModyfikatoronSizeChangedzostał zaktualizowany, aby używaćonRemeasured. Dzięki temu wywołanie zwrotne jest uruchamiane bezpośrednio po pomiarze, a nie po umieszczeniu. (Iafbae) - Zaktualizowano
InteractionPolicydoInterface(I0ff30) - Zaktualizowano Compose
compileSdkdo interfejsu API 37. Oznacza to, że podczas korzystania z Compose wymagana jest minimalna wersja AGP 9.2.0. (Id45cd) - Zaktualizowano dokumenty kdocs
Size(Iefa9a)
Wersja 1.0.0-alpha13
6 maja 2026 r.
Publikacja androidx.xr.compose:compose:1.0.0-alpha13 i androidx.xr.compose:compose-testing:1.0.0-alpha13 Wersja 1.0.0-alpha13 zawiera te zmiany.
Zmiany w interfejsie API
- Interfejs Orbiter API oczekuje dodatkowych zmian, dlatego zalecamy pomijanie powiadomień o wycofaniu Orbiterów i śledzenie zmian w Orbiterach w nadchodzących wersjach.
- Osoby, które używają
SceneCoreEntitydo renderowania plików glTF, powinny przekazywać wartośćsession.scene.activitySpacedo parametruparentwywołaniaGltfModel.create, aby mieć pewność, że pliki glTF będą renderowane. - Dodanie interfejsu
SpatialGltfModelAPI, który umożliwi programistom dodawanie plików GLTF do aplikacji Compose For XR. Deweloperzy mogą też wysyłać zapytania dotyczące animacji i węzłów w modelach glTF. (I8b542, b/495422586) - Zmiany
SceneCoreEntitySizeAdapterz klasy na interfejs (I5a784, b/475292310) - Zmieniono nazwę
SurfaceProtectionnaSpatialExternalSurfaceProtection. Zaktualizowano dokumentySpatialExternalSurfacew usłudze KDocs (Ifad0a, b/485231082) - Wycofanie
currentWindowAdaptiveInfoi wprowadzenie jego wersji 2 (I40ecf, b/424442112) - Modyfikator
resizablejest teraz publiczny i ma zastosowanie do grup (np.SpatialRow). (I2bcf6, b/348483527, b/489753178, b/479530787) - Modyfikator
movablejest teraz publiczny. Ten modyfikator działa obecnie dobrze w przypadkuSpatialPanelsiSpatialExternalSurface, ale zamierzamy zapewnić jego prawidłowe działanie w przypadku wszystkichSubspaceComposables. (I9a3cd, b/479530787, b/478935063, b/478935063) SpatialEnterTransitioniSpatialExitTransitionoznaczone jako@Immutable(If1710, b/487757837)- Interfejs
SpatialGltfModelAPI jest oznaczony jako objęty ograniczeniami w tej wersji do czasu przeprowadzenia dodatkowych testów. (Ibf003, b/466090694) - Zmieniono nazwę
DeviceTrackingMode.LAST_KNOWNnaSPATIAL_LAST_KNOWN(z wycofanym elementem zastępczym), dodanoINERTIAL_LAST_KNOWNdo śledzenia 3DoF i dodanoTRACKING_DEGRADEDdoTrackingState. (Ie661c, b/445466590) - Usuwanie wycofanego parametru
SpatialLayoutSpacer(I7b36c) - Usunięcie wycofanego interfejsu API dopełnienia (If1886)
- Dodano
floatRangedo wartości odchylenia. Usunięto wartość domyślną atrybutuLayoutDirection(I9d74e)
Poprawki błędów
- Dodaliśmy przykłady kodu i dokumentację KDoc dla
SpatialColumn,SpatialRowiSpatialCurvedRow. (Iaf54f, b/495777633)
Wersja 1.0.0-alpha12
25 marca 2026 r.
Publikacja androidx.xr.compose:compose:1.0.0-alpha12 i androidx.xr.compose:compose-testing:1.0.0-alpha12 Wersja 1.0.0-alpha12 zawiera te zmiany.
Zmiany w interfejsie API
- Dodaj interfejs
SpatialGltfModelAPI i interfejsySpatialGltfModelAnimationAPI, aby renderować pliki glTF i sterować animacjami. ZmienionoSpatialGltfModelStatenaAutoCloseable. Aby zwolnić zasoby, należy teraz zamknąć to okno. (I11fde, b/466065486, b/481379924). InterfejsSpatialGltfModelAPI jest jednak oznaczony jako ograniczony w tej wersji do czasu przeprowadzenia dodatkowych testów. (Ibf003, b/466090694) - Dodaliśmy wycofane puste przeciążenie funkcji
SubspaceModifier.rotate. (Idceb6) - Zmieniliśmy nazwę funkcji
SpatialSmoothFeatheringEffectnaspatialSmoothFeatheringEffecti przenieśliśmy ją do modułu rysowania. Zaktualizowano domyślną wartośćSpatialExternalSurfacerozmycia do wartości null, co naśladuje działanie starej funkcji ZeroFeatheringEffect. (I5fdaa, b/460426800) - Kontakt
onPointSourceParamsAvailablezostał usunięty. W najbliższej przyszłości udostępnimy inny interfejs API do przestrzennego odtwarzania dźwięku. (I86507, b/458513439) - Dodano działanie od prawej do lewej w przypadku modyfikatorów podprzestrzeni przesunięcia. Dodano też
absoluteOffset, aby ignorować kierunek układu. (I30e4b, b/474409165)
Wersja 1.0.0-alpha11
25 lutego 2026 r.
Publikacja androidx.xr.compose:compose:1.0.0-alpha11 i androidx.xr.compose:compose-testing:1.0.0-alpha11 Wersja 1.0.0-alpha11 zawiera te zmiany.
Nowe funkcje
- Dodawanie parametru
SuperSamplingdo parametruSpatialExternalSurfaces(Icd4d1)
Znane problemy
- Problem z
SurfaceEntityw SceneCore może powodować awarie aplikacji podczas tworzenia instancjiSpatialExternalSurface. Ten problem został rozwiązany w wersjachandroidx.xr.scenecore:scenecore-*:1.0.0-alpha13iandroidx.xr.compose:compose:1.0.0-alpha12oraz w ich kolejnych wersjach. Aplikacje, których dotyczy problem, powinny zostać zaktualizowane do najnowszych wersji.
Zmiany w interfejsie API
- Zmiany dopełnienia modyfikatora podprzestrzeni w zależności od kierunku układu. (I53e25)
SpatialCapabilitiesjest teraz zamknięty i nie można go przedłużyć. (I07aef)- Interfejsy API
SpatialRowiSpatialColumn, które akceptują ogólny parametrSpatialAlignment, zostały wycofane. Zamiast nich używaj interfejsów API, które akceptują odpowiednio parametryverticalAlignmentlubhorizontalAlignmentw przypadku interfejsówSpatialRowiSpatialColumn. (Iec390) - Łączenie interfejsów API funkcji przeciążania
SubspaceLayout(Idd30a) - Zmieniono nazwę
SubspaceModifier.lookAtUsernarotateToLookAtUser, a parametrupnaupDirection. (Icafb8) - Przekształcanie
SpatialRoww funkcję wbudowaną (Ia2f20) - Przekształcanie funkcji
SpatialColumnw funkcję wbudowaną (I681be) - Usunięto interfejs API billboardu (Ib76cd)
Wersja 1.0.0-alpha10
28 stycznia 2026 r.
Publikacja androidx.xr.compose:compose:1.0.0-alpha10 i androidx.xr.compose:compose-testing:1.0.0-alpha10 Wersja 1.0.0-alpha10 zawiera te zmiany.
Zmiany w interfejsie API
- Usunięcie wycofanego interfejsu API –
ApplicationSubspace(Ia6596, b/468345186) - Zaktualizowano
SpatialShapedo interfejsu zamkniętego (I7e3f5, b/460426800) - Usuwanie wycofanych interfejsów API w
SpatialAlignment. (Ib0b61, b/468011887) - Wycofanie robota
SpatialLayoutSpaceri wprowadzenie robotaSpatialSpacer. (I2ebf3, b/466071383) - Zaktualizowaliśmy interfejs
UserSubspaceAPI, aby zastąpić termin „lazy locking” terminem „soft locking”. (I9ded1, b/464035984)
Wersja 1.0.0-alpha09
3 grudnia 2025 r.
Publikacja androidx.xr.compose:compose:1.0.0-alpha09 i androidx.xr.compose:compose-testing:1.0.0-alpha09 Wersja 1.0.0-alpha09 zawiera te zmiany.
Zmiany w interfejsie API
- Dodanie modyfikatorów
LookAtUseri Billboard, które sprawiają, że treść jest zawsze skierowana do użytkownika. (I49b99) - Dodaje możliwość ustawienia
InteractionPolicynaSpatialExternalSurfacesiSpatialPanels, co umożliwia wykrywanie kliknięć i innych zdarzeń wejściowych 3D. (Iae155) - Dodano przeciążenie rozmiaru i modyfikatora
requiredSizez szerokością, wysokością i głębokością jako wartościami Dp. (I92f79) - Interfejs
ParentLayoutParamsModifierjest teraz rozszerzony oDelegatableSubspaceNode. (I1a6d4) - Interfejs
ApplicationSubspacezostał wycofany na rzecz interfejsu Subspace API.- Działanie interfejsu Subspace API zostało zmienione tak, aby udostępniać tylko podprzestrzeń obejmującą całą aplikację w zalecanej pozie i skali.
- Wprowadzamy interfejs
PlanarEmbeddedSubspaceAPI, aby udostępniać osadzone podprzestrzenie w kontekstach 2D. (Id3343)
- Dodano flagę
shouldAutoInvalidatedo interfejsuSubspaceModifier.NodeAPI. (I93902) - Dodano
required(Size|Width|Depth|Height)W interfejsach API, które umożliwiają deweloperom ograniczenie rozmiaru@SubspaceComposabledo określonego zakresu, z pominięciem przychodzących ograniczeń pomiarowych elementu nadrzędnego. (Ifaa78) - Dodano
SubspaceModifier.onSizeChanged, który zapewnia prosty, ukierunkowany wywołanie zwrotne, aby deweloperzy mogli reagować na zmiany rozmiaru@SubspaceComposable. (I994f9) - Usunięto interfejs Volume API. Zamiast interfejsu Volume API należy używać interfejsu
SceneCoreEntityAPI. (I4162b) - Podziel
SubspaceLayoutModifierNode.requestRelayoutnainvalidateMeasurement/invalidatePlacement. (I14805) - Dodano interfejs API
SpatialGltfModel, który umożliwia deweloperom renderowanie plików glTF w kompozycji. (Icc91f) - Wprowadziliśmy
SpatialGltfModelinterfejs API do łatwego renderowania plików glTF (Iade67).
Poprawki błędów
- Naprawiono błąd układu w
SceneCoreEntity. Powinien teraz prawidłowo uwzględniać ograniczenia. (I11bb8) - Przenoszenie modułów jxr-compose do
Compile sdk = 34(I2d5db)
Wersja 1.0.0-alpha08
22 października 2025 r.
Publikacja androidx.xr.compose:compose:1.0.0-alpha08 i androidx.xr.compose:compose-testing:1.0.0-alpha08 Wersja 1.0.0-alpha08 zawiera te zmiany.
Zmiany w interfejsie API
- Zmieniono
ResizePolicy, aby akceptowaćonResizeStart,onResizeUpdateionResizeEnd. (I7e21f)
Poprawki błędów
- Zapobieganie awarii podczas niszczenia aktywności z przestrzenią podrzędną. (I595a1)
Wersja 1.0.0-alpha07
24 września 2025 r.
Publikacja androidx.xr.compose:compose:1.0.0-alpha07 i androidx.xr.compose:compose-testing:1.0.0-alpha07 Wersja 1.0.0-alpha07 zawiera te zmiany.
Zmiany w interfejsie API
- Ulepszone dokumenty KDocs dla
SpatialMainPanel. (I27b70, b/444467891) - Wprowadzono
SpatialArrangementdo rozmieszczania elementów podrzędnych wzdłuż osi głównej w układach 3D, takich jakSpatialRowiSpatialColumn. Ten nowy interfejs API udostępnia znane opcje rozmieszczenia z 2D Compose, w tymStart,End,Center,SpaceBetween,SpaceAroundiSpaceEvenly, z pełną obsługą kierunków układu od lewej do prawej i od prawej do lewej. (I7db38, b/436289959) - Dodano interfejs podstawowy dla
SubspaceModifier.Node, aby zwiększyć bezpieczeństwo typów i użyteczność interfejsów rozszerzeń, takich jak:CompositionLocalConsumerSubspaceModifierNodeLayoutCoordinatesAwareModifierNodeSubspaceLayoutModifierNodeCoreEntityNode(wewnętrzne) (Iede00, b/440599394, b/440599394)
- Usuń ograniczenia
SpatialExternalSurface(I33315, b/439646773) - Wprowadź
SubspaceModifierdo funkcji kompozycyjnych Subspace i zastąp parametr ograniczeń parametremSubspaceModifierpowiązanym z rozmiaremSubspaceModifiers. Jeśli zasadaallowUnboundedSubspacema wartość Prawda, podprzestrzenie mogą nadal mieć nieograniczone ograniczenia. (Ib06e6, b/433331675) - Wycofanie funkcji przenoszenia i zmiany rozmiaru
SubspaceModifiers, ponieważ funkcjeDragPolicy()iResizePolicy()są teraz częścią interfejsów APISpatialPaneliSpatialExternalSurface(I397bf, b/437924639) - Dodaliśmy obsługę właściwości
LayoutDirectionw układach przestrzennych. Komponenty z użyciemSpatialAlignmentbędą teraz prawidłowo pozycjonować elementy w kontekście od lewej do prawej i od prawej do lewej. (I964bb, b/436300273) - Dodaj parametry Resizable i Movable do interfejsów API
Panel, aby mieć pewność, że te zachowania można stosować tylko w przypadku obsługiwanych kontenerów. (Id491c) - Dodano atrybuty
sizeIn,widthIn,heightIn,depthInSubspaceModifiers, które umożliwiają ustawienie dokładnych minimalnych i maksymalnych ograniczeń szerokości, wysokości i głębokości. (I1af09, b/433330761)
Wersja 1.0.0-alpha06
13 sierpnia 2025 r.
Publikacja androidx.xr.compose:compose:1.0.0-alpha06 i androidx.xr.compose:compose-testing:1.0.0-alpha06 Wersja 1.0.0-alpha06 zawiera te zmiany.
Poprawki błędów
- Ponownie utwórz
ComposeXrOwnerLocals, gdy właściciel cyklu życia zostanie usunięty. (9123ce1)
Wersja 1.0.0-alpha05
30 lipca 2025 r.
Publikacja androidx.xr.compose:compose:1.0.0-alpha05 i androidx.xr.compose:compose-testing:1.0.0-alpha05 Wersja 1.0.0-alpha05 zawiera te zmiany.
Nowe funkcje
- Udostępniono publicznie klasę adnotacji
SubspaceComposable. (Ic2a34, b/399432430) - Dwa nowe komponenty
SpatialExternalSurfacereprezentujące sfery 180° i 360°. (I40ef2, b/391705799) - Dodano
SubspaceModifier.aspectRatio(Ide5ab, b/399729509, b/414762147) - Dodano interfejs
SceneCoreEntityAPI, aby zwiększyć interoperacyjność międzySceneCorea Compose for XR. (I50bb3, b/423020989) - Dodano interfejs
GravityAlignedsubspaceAPI do obsługi funkcji bez skalowania iGravityAligned(I07359).
Zmiany w interfejsie API
SpatialDialog()będzie działać zgodnie z konfiguracją naciśnięciaSpatialDialogProperties.dismissOnBack. (Ib453b, b/416797132)- Zaktualizuj wartość
minimumPanelDimensiondo nowego domyślnego rozmiaru wymiaruDimensions(0.1f, 0.1f, 0.1f)ze względu na jego reprezentację w metrach. (Ib852a) - Podprzestrzenie i Orbiter będą teraz zachowywać swój stan wewnętrzny w przestrzeni domowej i gdy aplikacja działa w tle. W trybie obszaru domowego Subspace nadal będzie konfigurować scenę w ramach przygotowań do przejścia na tryb pełnego obszaru. (I40317, b/416037751)
SpatialDialogszachowa teraz swój stan, gdy aplikacja będzie działać w tle. (I6aa56)- Urządzenie
ApplicationSubspacebędzie teraz dziedziczyć zalecane skalę i położenie z systemu. (I4565f, b/418834194) - Dodano lepszy komunikat o błędzie i wcześniejsze wywoływanie błędu, gdy w kontekście innym niż
SubspaceComposableużyto znakuSubspaceComposable. (Iee2ae, b/416484684) - Zmiana
ExperimentalSubspaceVolumeApiz ostrzeżenia na błąd, ponieważ ostrzeżenia są często pomijane w przypadku niewłaściwego użycia interfejsów API z możliwością komponowania. (I427aa, b/424864286) - Podprzestrzeń i
ApplicationSubspacesą teraz ograniczone przezrecommendedContentBoxInFullSpace. Wcześniej było ono ograniczone polem widzeniaSpatialUser. (I41015, b/423074142) - Aktualizacja
SpatialElevation, aby używać minimalnego rozmiaru zamiast zakodowanego na stałe rozmiaru (I2dbe6, b/427785338) - Zaktualizuj sposób, w jaki sprawdzamy
SpatialAcitivityPanel, aby aktualizować go, gdy zmodyfikowana zostanie kluczowa zmienna. (I0f64d, b/427999029) - Usuń
VolumeConstraints.Unboundedi ustaw domyślne wartości ograniczeń na równoważne. (Ie24ec, b/407938414) SpatialFeatheringSizenie jest już publiczny (I1c15b, b/399432430)- Zmieniliśmy nazwę funkcji XR
PlaceablenaSubspacePlaceable, aby odróżnić ją od funkcjiPlaceablew Compose. (I74874) - Usunięcie ustawień Orbiter i dodanie
shouldRenderInNonSpatialjako nowego parametru. Dodatkowo usunięto klasęEdgeOffseti dodanoorbiterOffsetTypejako nowy parametr, aby skonsolidować funkcjeOrbiter(). Oprócz zmiany nazwy zOrbiterEdgenaContentEdge. (Iebf3d) - Zmieniliśmy nazwę
MeasurablenaSubspaceMeasurable, aby odróżnić ten typ od typuMeasurablew usłudze Compose. (I9726c) - Zmień nazwę
MeasureResultnaSubspaceMeasureResult(I9f34d) - Usunięto interfejs API
setSubspaceContentna rzecz używania komponentusetContentw Compose z komponentemSubspace. (Ifff4c, b/421427391, b/421427391) - Nazwa
MeasurePolicyzostała zmieniona naSubspaceMeasurePolicy. (I37a9b, b/422553904) - Zmień
SubspaceSemanticsInfow zamknięty interfejs, ponieważ bez ustawień domyślnych nie będziemy mogli dodawać członków. (I372f9, b/423704068) - Zaktualizowano dokumentację
SpatialExternalSurface, zmieniono nazwęContentSecurityLevelnaSurfaceProtection(I3c460, b/420982808) - Dodano przeciążony konstruktor dla modyfikatora z możliwością przenoszenia, który umożliwia zakotwiczenie. (Ic0c70)
- Dodaliśmy więcej dostawców pozycji dla etykietek, dzięki czemu deweloperzy mogą teraz określać, czy etykietka ma być umieszczana nad, pod, po lewej czy po prawej stronie elementu zakotwiczonego. Dodaj interfejs API, który przyjmuje kształt karetki, aby można było podać więcej niestandardowych kształtów. (Ie513c, b/374766087, b/418854637)
- Usunięto element
CoreEntityjakoPublishedApi(Ifee05)
Poprawki błędów
- Rozwiązaliśmy problem, który powodował miganie znaku
SpatialDialogpodczas renderowania. (Ife73c, b/401619909) - Rozwiązaliśmy problem, który uniemożliwiał przyciemnianie panelu aktywności za pomocą ikony
SpatialDialog. (I8ca6c, b/367442109) - Naprawiono problem z wyświetlaniem niektórych treści w oknie XR (I17cd5, b/418062437)
- Rozwiązaliśmy problem polegający na tym, że po kliknięciu w treści zamykało się okno
SpatialPopup. (If262c, b/417245722) - Rozwiązaliśmy problem polegający na tym, że podczas łączenia
resizable().movable()panel przestrzenny nie zmieniał prawidłowo rozmiaru. (I02ee3, b/422264230) - Naprawiono problem z nakładaniem się ikony
topBarna menu wSpatialComposeVideoPlayer(Id33bc, b/427168167) - Stały promień narożnika nie jest renderowany (I975fe, b/428261830)
Wersja 1.0.0-alpha04
7 maja 2025 r.
Publikacja androidx.xr.compose:compose:1.0.0-alpha04 i androidx.xr.compose:compose-testing:1.0.0-alpha04 Wersja 1.0.0-alpha04 zawiera te zmiany.
Nowe funkcje
- Dodano interfejs
CompositionLocalConsumerSubspaceModifierNode, aby umożliwić niestandardowym typomSubspaceModifierdostęp do lokalnych wartości kompozycji. - Dodaliśmy nowy interfejs API
SpatialPanel, który jest zgodny ze stylem implementacjiAndroidViewi wycofuje poprzedni interfejsViewBased SpatialPanel. - Dodano obiekt towarzyszący
VolumeConstraints.Unbounded, który reprezentuje nieograniczone ograniczenia. - Dodano
SubspaceModifier.onPointSourceParams, aby umożliwić przestrzenne źródło dźwięku. - Dodano publiczny element
ApplicationSubspace, który oferuje opcjonalny elementVolumeConstraintsdo zdefiniowania obszaru 3D, w którym aplikacja może renderować treści przestrzenne. Domyślnie, jeśli nie określono żadnych ograniczeń, podprzestrzeń będzie ograniczona bieżącym polem widzenia elementuSpatialUserw pionie i poziomie. Użytkownicy mogą podać ograniczenia, które będą używane, jeśli nie można określić pola widzenia. W przeciwnym razie używane są domyślne wartości szerokości i wysokości pola widzenia. - Dodano
SpatialExternalSurface, którego można używać do renderowania treści stereoskopowych.SpatialExternalSurfacemożna dostosowywać za pomocą modyfikatorów (z wyjątkiem przezroczystości) i efektu rozmycia krawędzi. - Dodaliśmy nowy
pointerHoverIconmodyfikator podprzestrzeni, który umożliwia użytkownikom ustawienie ikony wskaźnika przestrzennego.
Zmiany w interfejsie API
- Usunięto ograniczenie
RequiresApi(34)we wszystkich pakietach Jetpack XR. To ograniczenie było zbędne, ponieważ Jetpack XR jest obecnie dostępny tylko na urządzeniach z interfejsem API na poziomie 34 lub wyższym. (Iae0f8) - Projekty wydane w Kotlinie 2.0 wymagają KGP w wersji 2.0.0 lub nowszej. (Idb6b5)
- Obsługa przycisku Wstecz będzie teraz działać w przestrzennych panelach bez umieszczonych aktywności. Aby działało obsługiwanie powrotu, w manifeście Androida musisz określić
android:enableOnBackInvokedCallback="true". - Funkcja cofania będzie teraz działać w przypadku okien przestrzennych. Aby działało cofanie, musisz określić
android:enableOnBackInvokedCallback="true"w manifeście Androida. - Komponenty
SpatialPaneloparte na komponowaniu i widoku mogą teraz dostosowywać swój rozmiar do zawartości. - Deweloperzy mogą teraz ustawiać własne wartości
SpatialElevationLeveli nie są ograniczeni do wstępnie zdefiniowanych poziomów. - Poziom wysokości orbitera można teraz dostosować za pomocą parametru
elevation. - Podprzestrzeń może być teraz domyślnie ograniczona polem widzenia
SpatialUserpod względem szerokości i wysokości. Jeśli nie można określić pola widzenia, używane są domyślne wartości szerokości i wysokości pola widzenia. - Dodaliśmy nowe wywołania zwrotne
onMoveStartionMoveEnddo modyfikatoraMovable. Wywołania zwrotneonMoveStartionMoveEndsą wywoływane, gdy użytkownik zaczyna i kończy przesuwanie komponentu kompozycyjnego podprzestrzeni za pomocą modyfikatora movable. - Parametr
namezostał usunięty z interfejsów API przestrzennych, takich jakSpatialRowiSpatialPanel. Do debugowania drzew kompozycji przestrzennych używaj zasadySubspaceModifier.testTag. - Usunięto nieobsługiwane przeciążenie funkcji
SpatialPopup, która ma tylko parametryspatialElevationLevelicontent. Użyj interfejsu, który obsługujeonDimissRequest. - Wywołanie zwrotne
onPoseChangez modyfikatora Movable zostało usunięte. Użyj w zamian zasadyonMove. SubspaceModifiersnie będą już stosować efektów, jeśli zostaną odłączone lub są w trakcie odłączania.- Dotychczasowy interfejs API
SpatialRowzostał podzielony na interfejsySpatialRowiSpatialCurvedRow. Jeśli wcześniej używasz parametruSpatialRowcurveRadius, teraz używaj parametruSpatialCurvedRow, który działa tak samo. MainPaneliActivityPanelnie mają już pasków tytułu, gdy są uruchamiane na podobnie aktualnym obrazie systemu.- Modyfikatory przezroczystości i skali można teraz łączyć, a ich wartości będą mnożone, aby uzyskać ostateczną wartość przezroczystości lub skali.
- Wywołanie zwrotne
onPoseChangez modyfikatora Ruchomy zostało zoptymalizowane, aby zapewnić płynniejsze ruchy postaci. - Modyfikatory, które można przesuwać i zmieniać ich rozmiar, będą teraz wywoływać swoje wywołania zwrotne w głównym wątku, aby zmiany stanu powodowały rekompozycję.
- Dodano obserwację stanu do faz układu i pomiaru, aby zmiany stanu w
SubspaceLayoutpowodowały ponowne ułożenie. - Zoptymalizowane aktualizacje łańcucha modyfikatorów, aby lepiej wykorzystywać istniejące modyfikatory.
Poprawki błędów
- Zatrzymano przyciemnianie, gdy wyświetlany jest element
SpatialDialog. (Ic4594) - Żądania zmiany układu wysyłane, gdy węzły modyfikatora są odłączone, będą teraz ignorowane.
- Usunięto fazy zmiany układu wywoływane przez modyfikatory Movable i Resizable.
- Naprawiliśmy awarię w komponencie
MainPanel(), która występowała, gdy jeden z wymiarów był ustawiony na zero, bezpośrednio lub podczas obliczania układu, np. obliczaniaSpatialRow/SpatialColumn. Panel zostanie teraz ukryty. Pamiętaj, że ta poprawka dotyczy konkretnie awarii podczas fazy układu. Zmiana rozmiaru panelu na zero w wyniku interakcji użytkownika będzie obsługiwana osobno. Ukryty panel nie ma elementów interfejsu. - Rozwiązaliśmy problem z symbolem
maintainAspectRatiow przypadku modyfikatora o zmienianym rozmiarze. Współczynnik proporcji powinien zostać zachowany. - Rozwiązaliśmy problem z zagnieżdżonymi podprzestrzeniami, które były nieprawidłowo pozycjonowane w jednej klatce.
- Rozwiązaliśmy problem polegający na tym, że zaokrąglone rogi czasami nie były stosowane, gdy powinny.
NestedSubspacesnie będzie już wyświetlać się w nieprawidłowej lokalizacji przez jedną klatkę.
Wersja 1.0.0-alpha03
26 lutego 2025 r.
Wersje androidx.xr.compose:compose:1.0.0-alpha03 i androidx.xr.compose:compose-testing:1.0.0-alpha03 nie zawierają żadnych istotnych zmian w porównaniu z ostatnią wersją alfa. Wersja 1.0.0-alpha03 zawiera te zmiany.
Wersja 1.0.0-alpha02
12 lutego 2025 r.
Publikacja androidx.xr.compose:compose:1.0.0-alpha02 i androidx.xr.compose:compose-testing:1.0.0-alpha02 Wersja 1.0.0-alpha02 zawiera te zmiany.
Nowe funkcje
- Panel aktywności może teraz przyciemniać swoją zawartość, gdy aktywne jest okno dialogowe przestrzenne.
- Interfejs
OrbiterAPI jest teraz dostępny w kontekstachSubspaceComposablei będzie dołączać elementy Orbiters do najbliższego elementu kompozycyjnego nadrzędnego opartego naSubspaceLayout. - Wprowadzono
LayoutCoordinatesAwareModifierNode, aby umożliwić stosowanie modyfikatorów opartych na niestandardowym pozycjonowaniu. - Dodaliśmy metody cyklu życia dołączania/odłączania do
SubspaceModifier.Node. - Dodano
scaleWithDistancedo modyfikatora ruchomego. Gdy opcjascaleWithDistancejest włączona, przeniesiony element podprzestrzeni zostanie powiększony lub pomniejszony. Zachowa też wszelkie wyraźne skale, które miał przed przeniesieniem.
Zmiany w interfejsie API
- Usunięto
SessionCallbackProviderna rzeczSpatialCapabilities.
Inne zmiany
- Zmniejszono
minSDKdo 24. Wszystkie interfejsy Jetpack XR API nadal wymagają poziomu API 34 w czasie działania. OrbiterKonstruktoryEdgeOffset.inner,EdgeOffset.outeriEdgeOffset.overlapnie są już@Composablemetodami, co pozwala na ich używanie w kontekstach niekomponowalnych.- Zaktualizuj poziomy wysokości przestrzennej, aby były zgodne z najnowszą specyfikacją UX.
- Zaimplementuj interfejs
SubspaceSemanticsInfow usłudzeMeasurableLayout. - Zmieniono nazwę
SubspaceModifierElementnaSubspaceModifierNodeElement.
Poprawki błędów
- Poprawki stabilizujące zamawianie
SubspaceModifier.SubspaceModifierpowinna działać bardziej niezawodnie. Modyfikatory przesunięcia, obrotu, skalowania, przenoszenia i zmiany rozmiaru powinny być teraz dostępne w dowolnej kolejności.
Wersja 1.0.0-alpha01
12 grudnia 2024 r.
Publikacja androidx.xr.compose:compose-*1.0.0-alpha01
Funkcje pierwszej wersji
Pierwsza wersja Jetpack Compose na XR dla deweloperów. Używaj znanych koncepcji Compose, takich jak wiersze i kolumny, aby tworzyć przestrzenne układy interfejsu w XR, niezależnie od tego, czy przenosisz istniejącą aplikację 2D do XR, czy tworzysz nową aplikację XR od podstaw. Ta biblioteka udostępnia kompozycje podprzestrzenne i przestrzenne, takie jak panele przestrzenne i orbitery, które umożliwiają umieszczanie istniejącego interfejsu opartego na 2D Compose lub widokach w układzie przestrzennym. Wprowadza funkcję Volume subspace composable, która umożliwia umieszczanie elementów SceneCore, takich jak modele 3D, względem interfejsu. Więcej informacji znajdziesz w tym przewodniku dla programistów:
Subspace: ten komponent można umieścić w dowolnym miejscu w hierarchii interfejsu aplikacji, co pozwala zachować układy interfejsu 2D i przestrzennego bez utraty kontekstu między plikami. Ułatwia to udostępnianie elementów takich jak istniejąca architektura aplikacji między XR a innymi urządzeniami bez konieczności przenoszenia stanu przez całe drzewo interfejsu lub zmiany architektury aplikacji.SpatialPanel: to komponent przestrzenny, który umożliwia wyświetlanie treści aplikacji, np. odtwarzanie wideo, obrazy statyczne lub inne treści.
Orbiter: orbiter to przestrzenny komponent interfejsu. Jest on przeznaczony do dołączania do odpowiedniego panelu przestrzennego i zawiera elementy nawigacyjne oraz kontekstowe działania związane z tym panelem. Jeśli na przykład utworzysz panel przestrzenny do wyświetlania treści wideo, możesz dodać elementy sterujące odtwarzaniem wideo w orbiterze.
Objętość: umieszczaj elementy SceneCore, takie jak modele 3D, względem interfejsu.
Układ przestrzenny: możesz utworzyć wiele paneli przestrzennych i umieścić je w układzie przestrzennym za pomocą
SpatialRow,SpatialColumn,SpatialBoxiSpatialLayoutSpacer. Użyj symboliSubspaceModifier, aby dostosować układ.Komponenty interfejsu przestrzennego: te elementy można ponownie wykorzystać w interfejsie 2D, a ich atrybuty przestrzenne będą widoczne tylko wtedy, gdy włączone są funkcje przestrzenne.
SpatialDialog: panel lekko się cofnie w głąb, aby wyświetlić wysunięte okno.SpatialPopUp: panel zostanie lekko przesunięty do tyłu w osi Z, aby wyświetlić wyskakujące okienko.SpatialElevation: można ustawićSpatialElevationLevel, aby dodać wysokość.
SpatialCapabilities: możliwości przestrzenne mogą się zmieniać w miarę interakcji użytkowników z aplikacją lub systemem, a nawet być zmieniane przez samą aplikację – na przykład podczas przechodzenia do przestrzeni domowej lub pełnej. Aby uniknąć problemów, aplikacja musi sprawdzać wartość
LocalSpatialCapabilities.current, aby określić, które interfejsy API są obsługiwane w bieżącym środowisku.isSpatialUiEnabled: elementy interfejsu przestrzennego (np.SpatialPanel),isContent3dEnabled: obiekty 3D,isAppEnvironmentEnabled: środowisko,isPassthroughControlEnabled: czy aplikacja może kontrolować stan przekazywania,isSpatialAudioEnabled: dźwięk przestrzenny.
Znane problemy
- Obecnie do korzystania z Jetpack Compose w przypadku XR wymagany jest pakiet SDK w wersji co najmniej 30. Aby obejść ten problem, możesz dodać ten wpis do pliku manifestu
<uses-sdk tools:overrideLibrary="androidx.xr.scenecore, androidx.xr.compose"/>, aby móc tworzyć i uruchamiać aplikację z wersją minSDK 23. - Aplikacje Jetpack XR wymagają obecnie w pliku AndroidManifest prośby o uprawnienie
android.permission.SCENE_UNDERSTANDING. - Gdy aplikacja uruchamia się bezpośrednio w pełnej przestrzeni za pomocą właściwości
PROPERTY_XR_ACTIVITY_START_MODEw pliku manifestu, działania/aplikacje są początkowo otwierane w przestrzeni domowej, a potem przechodzą do pełnej przestrzeni. - Pliki glTF w komponentach Volume Composables mogą początkowo migać w niewłaściwym miejscu.
- Użycie elementu SpatialDialog w panelu, który został znacznie przesunięty, spowoduje przesunięcie treści w niewłaściwym kierunku.