Jetpack Compose untuk XR
| Update Terbaru | Rilis Stabil | Kandidat Rilis | Rilis Beta | Rilis Alfa |
|---|---|---|---|---|
| 22 Oktober 2025 | - | - | - | 1.0.0-alpha08 |
Mendeklarasikan dependensi
Untuk menambahkan dependensi pada XR compose, Anda harus menambahkan repositori Maven Google ke project Anda. Baca repositori Maven Google untuk mengetahui informasi selengkapnya.
Tambahkan dependensi untuk artefak yang diperlukan dalam file build.gradle bagi aplikasi atau modul Anda:
Groovy
dependencies { implementation "androidx.xr.compose:compose:1.0.0-alpha08" // Use to write unit tests testImplementation "androidx.xr.compose:compose-testing:1.0.0-alpha08" }
Kotlin
dependencies { implementation("androidx.xr.compose:compose:1.0.0-alpha08") // Use to write unit tests testImplementation("androidx.xr.compose:compose-testing:1.0.0-alpha08") }
Untuk informasi dependensi selengkapnya, lihat Menambahkan dependensi build.
Masukan
Masukan Anda membantu meningkatkan kualitas Jetpack. Beri tahu kami jika Anda menemukan masalah baru atau mempunyai masukan untuk meningkatkan kualitas library ini. Harap periksa masalah yang sudah diketahui dalam library ini sebelum membuat laporan baru. Anda dapat memberikan suara untuk masalah yang sudah diketahui dengan mengklik tombol bintang.
Lihat dokumentasi Issue Tracker untuk informasi selengkapnya.
Versi 1.0
Versi 1.0.0-alpha08
22 Oktober 2025
androidx.xr.compose:compose:1.0.0-alpha08 dan androidx.xr.compose:compose-testing:1.0.0-alpha08 dirilis. Versi 1.0.0-alpha08 berisi commit ini.
Perubahan API
- Mengubah
ResizePolicyuntuk menerimaonResizeStart,onResizeUpdate, danonResizeEnd. (I7e21f)
Perbaikan Bug
- Mencegah error saat menghancurkan Aktivitas dengan Subspace. (I595a1)
Versi 1.0.0-alpha07
24 September 2025
androidx.xr.compose:compose:1.0.0-alpha07 dan androidx.xr.compose:compose-testing:1.0.0-alpha07 dirilis. Versi 1.0.0-alpha07 berisi commit ini.
Perubahan API
- KDocs yang ditingkatkan untuk
SpatialMainPanel. (I27b70, b/444467891) - Memperkenalkan
SpatialArrangementuntuk mengatur turunan di sepanjang sumbu utama dalam tata letak 3D sepertiSpatialRowdanSpatialColumn. API baru ini menyediakan opsi pengaturan yang sudah dikenal dari Compose 2D, termasukStart,End,Center,SpaceBetween,SpaceAround, danSpaceEvenly, dengan dukungan penuh untuk arah tata letak LTR dan RTL. (I7db38, b/436289959) - Menambahkan antarmuka dasar untuk
SubspaceModifier.Nodeguna meningkatkan keamanan jenis dan kegunaan antarmuka ekstensi; sepertiCompositionLocalConsumerSubspaceModifierNodeLayoutCoordinatesAwareModifierNodeSubspaceLayoutModifierNodeCoreEntityNode(internal) (Iede00, b/440599394, b/440599394)
- Buka batasan
SpatialExternalSurface(I33315, b/439646773) - Memperkenalkan
SubspaceModifierke composable Subspace dan mengganti parameter batasan denganSubspaceModifierdenganSubspaceModifiersterkait ukuran. JikaallowUnboundedSubspacebenar, Subruang masih dapat memiliki batasan yang tidak terikat. (Ib06e6, b/433331675) - Menghentikan penggunaan
SubspaceModifiersyang dapat dipindahkan dan diubah ukurannya karenaDragPolicy()danResizePolicy()kini menjadi bagian dariSpatialPaneldanSpatialExternalSurfaceAPI (I397bf, b/437924639) - Menambahkan dukungan untuk
LayoutDirectiondalam tata letak spasial. Composable yang menggunakanSpatialAlignmentkini akan memosisikan elemen dengan benar dalam konteks LTR dan RTL. (I964bb, b/436300273) - Menambahkan parameter Dapat Diubah Ukuran dan Dapat Dipindahkan ke API
Paneluntuk memastikan bahwa perilaku ini hanya dapat diterapkan ke penampung yang didukung. (Id491c) - Menambahkan
sizeIn,widthIn,heightIn,depthInSubspaceModifiersyang memungkinkan Anda menetapkan batasan minimum dan maksimum yang tepat untuk lebar, tinggi, dan kedalaman. (I1af09, b/433330761)
Versi 1.0.0-alpha06
13 Agustus 2025
androidx.xr.compose:compose:1.0.0-alpha06 dan androidx.xr.compose:compose-testing:1.0.0-alpha06 dirilis. Versi 1.0.0-alpha06 berisi commit ini.
Perbaikan Bug
- Buat ulang
ComposeXrOwnerLocalssaat pemilik siklus proses dimusnahkan. (9123ce1)
Versi 1.0.0-alpha05
30 Juli 2025
androidx.xr.compose:compose:1.0.0-alpha05 dan androidx.xr.compose:compose-testing:1.0.0-alpha05 dirilis. Versi 1.0.0-alpha05 berisi commit ini.
Fitur Baru
- Menjadikan class anotasi
SubspaceComposablepublik. (Ic2a34, b/399432430) - Dua Composable
SpatialExternalSurfacebaru yang merepresentasikan bola 180 dan 360 derajat. (I40ef2, b/391705799) - Menambahkan
SubspaceModifier.aspectRatio(Ide5ab, b/399729509, b/414762147) - Menambahkan API
SceneCoreEntityuntuk meningkatkan interoperabilitas antaraSceneCoredan Compose untuk XR. (I50bb3, b/423020989) - Menyediakan API
GravityAlignedsubspaceuntuk mendukung fitur AndGravityAlignedyang tidak diskalakan (I07359)
Perubahan API
SpatialDialog()akan mengikuti konfigurasi penekananSpatialDialogProperties.dismissOnBack. (Ib453b, b/416797132)- Perbarui
minimumPanelDimensionke Ukuran dimensi default baruDimensions(0.1f, 0.1f, 0.1f)karena representasinya dalam Meter. (Ib852a) - Subruang dan Pengorbit kini akan mempertahankan status internalnya di ruang rumah dan saat aplikasi berada di latar belakang. Dalam mode ruang rumah, Subspace akan tetap menyiapkan adegannya untuk persiapan peralihan ke mode ruang penuh. (I40317, b/416037751)
SpatialDialogskini akan mempertahankan statusnya saat aplikasi berada di latar belakang. (I6aa56)ApplicationSubspacekini akan mewarisi skala dan posisi yang direkomendasikan dari sistem. (I4565f, b/418834194)- Menambahkan pesan error yang lebih baik dan memicu error lebih awal saat
SubspaceComposabledigunakan dalam konteks non-SubspaceComposable. (Iee2ae, b/416484684) - Memperbarui
ExperimentalSubspaceVolumeApidari Peringatan menjadi Error karena peringatan sering kali diabaikan saat menyalahgunakan API composable. (I427aa, b/424864286) - Subruang dan
ApplicationSubspacekini dibatasi olehrecommendedContentBoxInFullSpace. Sebelumnya, tampilan dibatasi oleh Field of ViewSpatialUser. (I41015, b/423074142) - Memperbarui
SpatialElevationuntuk menggunakan ukuran minimum agar tidak lagi menggunakan ukuran yang dikodekan secara permanen (I2dbe6, b/427785338) - Perbarui cara kita membuat layar redup
SpatialAcitivityPaneluntuk diperbarui saat variabel utama diubah. (I0f64d, b/427999029) - Hapus
VolumeConstraints.Unboundeddan tetapkan nilai batasan default ke nilai yang setara. (Ie24ec, b/407938414) SpatialFeatheringSizetidak lagi bersifat publik (I1c15b, b/399432430)- Mengganti nama XR
PlaceablemenjadiSubspacePlaceableuntuk membedakannya dariPlaceableCompose. (I74874) - Menghapus setelan Orbiter dan menambahkan
shouldRenderInNonSpatialsebagai parameter baru. Selain itu, menghapus classEdgeOffsetdan menambahkanorbiterOffsetTypesebagai parameter baru untuk menggabungkan FungsiOrbiter(). Serta mengganti namaOrbiterEdgemenjadiContentEdge. (Iebf3d) - Mengganti nama
MeasurablemenjadiSubspaceMeasurableuntuk membedakan jenis dari jenisMeasurableCompose. (I9726c) - Mengganti nama
MeasureResultmenjadiSubspaceMeasureResult(I9f34d) - Menghapus
setSubspaceContentAPI dan menggantinya dengansetContentCompose dengan composableSubspace. (Ifff4c, b/421427391, b/421427391) MeasurePolicydiganti namanya menjadiSubspaceMeasurePolicy. (I37a9b, b/422553904)- Ubah
SubspaceSemanticsInfomenjadi antarmuka tertutup karena kita tidak akan dapat menambahkan anggota tanpa nilai default. (I372f9, b/423704068) - Memperbarui dokumentasi
SpatialExternalSurface, mengganti namaContentSecurityLevelmenjadiSurfaceProtection(I3c460, b/420982808) - Menyediakan konstruktor kelebihan muatan untuk pengubah yang dapat dipindahkan yang memungkinkan penambatan. (Ic0c70)
- Menambahkan lebih banyak penyedia posisi untuk tooltip sehingga kini developer dapat mengontrol apakah tooltip ditempatkan di atas, bawah, kiri, atau kanan anchor. Menambahkan API yang menerima Bentuk untuk penanda, sehingga lebih banyak bentuk kustom dapat diberikan. (Ie513c, b/374766087, b/418854637)
CoreEntitydihapus sebagaiPublishedApi(Ifee05)
Perbaikan Bug
- Memperbaiki masalah saat
SpatialDialogberkedip saat dirender. (Ife73c, b/401619909) - Memperbaiki masalah saat
SpatialDialogtidak dapat membuat panel Aktivitas menjadi gelap. (I8ca6c, b/367442109) - Memperbaiki dialog XR yang tidak menampilkan beberapa konten (I17cd5, b/418062437)
- Memperbaiki masalah saat
SpatialPopupditutup saat diklik di dalam konten. (If262c, b/417245722) - Memperbaiki masalah saat merangkai
resizable().movable(), SpatialPanel gagal mengubah ukuran dengan benar ke ukuran baru. (I02ee3, b/422264230) - Memperbaiki
topBaryang tumpang-tindih dengan menu diSpatialComposeVideoPlayer(Id33bc, b/427168167) - Memperbaiki radius sudut yang tidak dirender (I975fe, b/428261830)
Versi 1.0.0-alpha04
7 Mei 2025
androidx.xr.compose:compose:1.0.0-alpha04 dan androidx.xr.compose:compose-testing:1.0.0-alpha04 dirilis. Versi 1.0.0-alpha04 berisi commit ini.
Fitur Baru
- Menambahkan antarmuka
CompositionLocalConsumerSubspaceModifierNodeuntuk memungkinkan jenisSubspaceModifierkustom mengakses nilai lokal komposisi. - Menambahkan
SpatialPanelAPI baru yang mengikuti gaya penerapanAndroidViewcompose dan menghentikan penggunaanViewBased SpatialPanelsebelumnya. - Menambahkan objek pendamping
VolumeConstraints.Unboundedyang merepresentasikan batasan tidak terbatas. - Menambahkan
SubspaceModifier.onPointSourceParamsuntuk mengizinkan sumber audio spasial. ApplicationSubspacepublik telah ditambahkan, yang menawarkanVolumeConstraintsopsional untuk menentukan area 3D tempat aplikasi dapat merender konten spasial. Secara default, jika tidak ada batasan yang ditentukan, Subspace akan dibatasi oleh lebar dan tinggi bidang pandangSpatialUsersaat ini. Pengguna dapat memberikan batasan yang akan digunakan jika bidang pandang tidak dapat ditentukan. Jika tidak, nilai lebar dan tinggi bidang pandang default akan digunakan.- Menambahkan
SpatialExternalSurface, yang dapat digunakan untuk merender konten stereoskopik.SpatialExternalSurfacedapat disesuaikan dengan pengubah (kecuali alfa), dan efek feathering tepi. - Menambahkan Pengubah Subruang
pointerHoverIconbaru yang memungkinkan pengguna menetapkan ikon untuk penunjuk spasial.
Perubahan API
- Menghapus batasan
RequiresApi(34)pada semua paket Jetpack XR. Pembatasan ini berlebihan karena Jetpack XR saat ini hanya tersedia di perangkat dengan level API 34+. (Iae0f8) - Project yang dirilis dengan Kotlin 2.0 memerlukan KGP 2.0.0 atau yang lebih baru untuk digunakan. (Idb6b5)
- Penanganan kembali kini akan berfungsi di panel spasial tanpa aktivitas tersemat. Agar penanganan kembali berfungsi, Anda harus menentukan
android:enableOnBackInvokedCallback="true"dalam manifes Android. - Penanganan kembali kini akan berfungsi pada dialog spasial. Agar penanganan kembali berfungsi, Anda harus menentukan
android:enableOnBackInvokedCallback="true"dalam manifes Android. SpatialPanelberbasis Compose dan berbasis View kini dapat menyesuaikan ukurannya berdasarkan kontennya.- Developer kini dapat menetapkan nilai
SpatialElevationLevelkustom mereka sendiri dan tidak terbatas pada level yang telah ditentukan sebelumnya. - Tingkat elevasi pengorbit kini dapat disesuaikan melalui parameter
elevation. - Subruang kini dapat dibatasi oleh bidang pandang
SpatialUserdalam lebar dan tinggi secara default. Jika bidang pandang tidak dapat ditentukan, nilai lebar dan tinggi bidang pandang default akan digunakan. - Menambahkan callback baru
onMoveStartdanonMoveEndke pengubahMovable. CallbackonMoveStartdanonMoveEnddipanggil saat pengguna mulai dan mengakhiri pemindahan composable subruang dengan pengubah yang dapat dipindahkan. - Parameter
nametelah dihapus dari API spasial sepertiSpatialRowdanSpatialPanel. Untuk men-debug hierarki komposisi spasial, gunakanSubspaceModifier.testTag. - Menghapus kelebihan beban
SpatialPopupyang tidak didukung yang hanya memilikispatialElevationLeveldancontent. Harap gunakan antarmuka yang mendukungonDimissRequest. - Callback
onPoseChangedari pengubah Movable telah dihapus. Sebagai gantinya, gunakanonMove. SubspaceModifierstidak akan lagi menerapkan efeknya jika dilepas atau sedang dilepas.SpatialRowAPI yang ada telah dibagi menjadiSpatialRowdanSpatialCurvedRow. Jika sebelumnya menggunakan parametercurveRadiusSpatialRow, gunakanSpatialCurvedRowsekarang yang menawarkan perilaku yang sama.MainPaneldanActivityPaneltidak lagi memiliki kolom judul saat dijalankan pada image sistem yang sama-sama baru.- Pengubah alfa dan skala kini dapat ditumpuk dan akan mengalikan nilainya untuk nilai alfa atau skala akhir yang diterapkan.
- Callback
onPoseChangedari pengubah Movable telah dioptimalkan untuk melakukan gerakan pose yang lebih lancar. - Pengubah yang dapat dipindahkan dan diubah ukurannya kini akan menjalankan callback-nya di thread utama untuk memastikan bahwa perubahan status akan memicu rekomposisi.
- Menambahkan pengamatan status ke fase tata letak dan pengukuran untuk memastikan bahwa perubahan status di
SubspaceLayoutakan memicu tata letak ulang. - Update rantai pengubah yang dioptimalkan untuk menggunakan kembali pengubah yang ada dengan lebih baik.
Perbaikan Bug
- Menghentikan scrim saat
SpatialDialogditampilkan. (Ic4594) - Permintaan tata letak ulang yang dibuat saat node pengubah dilepas kini akan diabaikan.
- Menghapus fase tata ulang yang dipicu oleh pengubah Movable dan Resizable.
- Memperbaiki error pada composable
MainPanel()yang terjadi saat salah satu dimensi disetel ke nol, baik secara langsung maupun selama penghitungan tata letak, misalnya, penghitunganSpatialRow/SpatialColumn. Panel akan disembunyikan. Perhatikan bahwa perbaikan ini secara khusus mengatasi error saat fase tata letak; pengubahan ukuran panel menjadi nol melalui interaksi pengguna akan ditangani secara terpisah. Panel tersembunyi tidak memiliki afordans UI. - Memperbaiki masalah terkait
maintainAspectRatiodari pengubah yang dapat diubah ukurannya. Rasio aspek harus dipertahankan sekarang. - Memperbaiki masalah dengan Subruang bertingkat yang akan diposisikan secara salah untuk satu frame.
- Memperbaiki masalah saat sudut bulat terkadang tidak diterapkan saat seharusnya diterapkan.
NestedSubspacestidak akan lagi muncul untuk satu frame di lokasi yang salah.
Versi 1.0.0-alpha03
26 Februari 2025
androidx.xr.compose:compose:1.0.0-alpha03 dan androidx.xr.compose:compose-testing:1.0.0-alpha03 dirilis tanpa perubahan penting sejak versi alfa terakhir. Versi 1.0.0-alpha03 berisi commit ini
Versi 1.0.0-alpha02
12 Februari 2025
androidx.xr.compose:compose:1.0.0-alpha02 dan androidx.xr.compose:compose-testing:1.0.0-alpha02 dirilis. Versi 1.0.0-alpha02 berisi commit ini.
Fitur Baru
- Panel Aktivitas kini dapat mengaburkan kontennya saat Dialog Spasial diaktifkan.
- API
Orbiterkini dapat digunakan dalam konteksSubspaceComposabledan akan melampirkan Orbiter ke induk composable berbasisSubspaceLayoutterdekat. - Memperkenalkan
LayoutCoordinatesAwareModifierNodeuntuk mengizinkan pengubah berbasis penentuan posisi kustom. - Menambahkan metode siklus proses pelekatan/pelepasan ke
SubspaceModifier.Node. - Menambahkan
scaleWithDistanceke pengubah yang dapat dipindahkan. JikascaleWithDistancediaktifkan, elemen subruang yang dipindahkan akan bertambah besar atau kecil. Skala eksplisit yang dimilikinya sebelum pergerakan juga akan dipertahankan.
Perubahan API
SessionCallbackProviderdihapus dan digantikan denganSpatialCapabilities.
Perubahan lainnya
- Mengurangi
minSDKmenjadi 24. Semua Jetpack XR API terus memerlukan API 34 saat runtime. - Konstruktor
OrbiterEdgeOffset.inner,EdgeOffset.outer, danEdgeOffset.overlaptidak lagi menjadi metode@Composable, sehingga dapat digunakan dalam konteks non-composable. - Perbarui Tingkat Ketinggian Spasial agar sesuai dengan spesifikasi UX terbaru.
- Terapkan antarmuka
SubspaceSemanticsInfokeMeasurableLayout. - Mengganti nama
SubspaceModifierElementmenjadiSubspaceModifierNodeElement.
Perbaikan bug
- Perbaikan untuk menstabilkan pemesanan
SubspaceModifier.SubspaceModifierakan berperilaku lebih andal. Pengubah offset, putar, skala, dapat dipindahkan, dan dapat diubah ukurannya kini dapat digunakan dalam urutan apa pun.
Versi 1.0.0-alpha01
12 Desember 2024
androidx.xr.compose:compose-*1.0.0-alpha01 dirilis.
Fitur Rilis Awal
Rilis developer awal Jetpack Compose untuk XR. Gunakan konsep Compose yang sudah dikenal seperti baris dan kolom untuk membuat tata letak UI spasial di XR, baik Anda mem-porting aplikasi 2D yang ada ke XR atau membuat aplikasi XR baru dari awal. Library ini menyediakan composable subruang dan spasial: seperti panel spasial dan pengorbit, yang memungkinkan Anda menempatkan UI berbasis Compose 2D atau Views yang ada dalam tata letak spasial. Hal ini memperkenalkan composable Volume subspace, yang memungkinkan Anda menempatkan entity SceneCore, seperti model 3D, relatif terhadap UI Anda. Pelajari lebih lanjut di panduan developer ini:
Subspace: Composable ini dapat ditempatkan di mana saja dalam hierarki UI aplikasi Anda, sehingga Anda dapat mempertahankan tata letak untuk UI 2D dan spasial tanpa kehilangan konteks antar-file. Hal ini mempermudah berbagi hal-hal seperti arsitektur aplikasi yang ada antara XR dan faktor bentuk lainnya tanpa perlu mengangkat status melalui seluruh hierarki UI atau mendesain ulang aplikasi.SpatialPanel: Panel spasial adalah composable subruang yang memungkinkan Anda menampilkan konten aplikasi–misalnya, Anda dapat menampilkan pemutaran video, gambar diam, atau konten lainnya di panel spasial.
Orbiter: Orbiter adalah komponen UI spasial. Panel ini dirancang untuk dilampirkan ke panel spasial yang sesuai, dan berisi item tindakan kontekstual dan navigasi yang terkait dengan panel spasial tersebut. Misalnya, jika Anda telah membuat panel spasial untuk menampilkan konten video, Anda dapat menambahkan kontrol pemutaran video di dalam pengorbit.
Volume: Tempatkan entity SceneCore, seperti model 3D, relatif terhadap UI Anda.
Tata Letak Spasial: Anda dapat membuat beberapa panel spasial dan menempatkannya dalam Tata Letak Spasial menggunakan
SpatialRow,SpatialColumn,SpatialBox, danSpatialLayoutSpacer. GunakanSubspaceModifiers untuk menyesuaikan tata letak Anda.Komponen UI spasial: Elemen ini dapat digunakan kembali di UI 2D Anda, dan atribut spasialnya hanya akan terlihat saat kemampuan spasial diaktifkan.
SpatialDialog: Panel akan sedikit didorong kembali dalam kedalaman z untuk menampilkan dialog yang lebih tinggi.SpatialPopUp: Panel akan sedikit mundur dalam kedalaman z untuk menampilkan pop-up yang lebih tinggiSpatialElevation:SpatialElevationLeveldapat ditetapkan untuk menambahkan elevasi.
SpatialCapabilities: Kemampuan spasial dapat berubah saat pengguna berinteraksi dengan aplikasi atau sistem Anda, atau bahkan dapat diubah oleh aplikasi Anda sendiri—misalnya, berpindah ke Ruang Rumah atau Ruang Penuh. Untuk menghindari masalah, aplikasi Anda perlu memeriksa
LocalSpatialCapabilities.currentuntuk menentukan API mana yang didukung di lingkungan saat ini.isSpatialUiEnabled: Elemen UI spasial (mis. SpatialPanel)isContent3dEnabled: Objek 3DisAppEnvironmentEnabled: LingkunganisPassthroughControlEnabled: Apakah aplikasi dapat mengontrol status teruskan atau tidakisSpatialAudioEnabled: Audio spasial
Masalah Umum
- Saat ini, minSDK 30 diperlukan untuk menggunakan Jetpack Compose untuk XR. Sebagai solusi sementara, Anda dapat menambahkan entri manifes
<uses-sdk tools:overrideLibrary="androidx.xr.scenecore, androidx.xr.compose"/>berikut agar dapat mem-build dan menjalankan dengan minSDK 23. - Aplikasi Jetpack XR saat ini memerlukan permintaan izin
android.permission.SCENE_UNDERSTANDINGdi AndroidManifest. - Saat aplikasi diluncurkan langsung ke Ruang Penuh menggunakan properti
PROPERTY_XR_ACTIVITY_START_MODEdalam manifesnya, Aktivitas/Aplikasi awalnya dibuka di Ruang Utama sebelum bertransisi ke Ruang Penuh. - glTF di Volume Composables awalnya dapat berkedip di lokasi yang salah.
- Menggunakan SpatialDialog di panel yang telah dipindahkan secara signifikan akan mendorong konten ke arah yang salah.