XR için Jetpack Compose
Son Güncelleme | Kararlı sürüm | Sürüm Adayı | Beta Sürümü | Alfa sürümü |
---|---|---|---|---|
30 Temmuz 2025 | - | - | - | 1.0.0-alpha05 |
Bağımlılıkları bildirme
XR Compose'a bağımlılık eklemek için Google Maven deposunu projenize eklemeniz gerekir. Daha fazla bilgi için Google'ın Maven deposunu okuyun.
Uygulamanız veya modülünüz için build.gradle
dosyasına ihtiyacınız olan yapılarla ilgili bağımlılıkları ekleyin:
Eski
dependencies { implementation "androidx.xr.compose:compose:1.0.0-alpha05" // Use to write unit tests testImplementation "androidx.xr.compose:compose-testing:1.0.0-alpha05" }
Kotlin
dependencies { implementation("androidx.xr.compose:compose:1.0.0-alpha05") // Use to write unit tests testImplementation("androidx.xr.compose:compose-testing:1.0.0-alpha05") }
Bağımlılıklar hakkında daha fazla bilgi için Derleme bağımlılıkları ekleme başlıklı makaleyi inceleyin.
Geri bildirim
Geri bildiriminiz Jetpack'in iyileştirilmesine yardımcı olur. Yeni sorunlar keşfederseniz veya bu kitaplığı iyileştirmeye yönelik fikirleriniz olursa lütfen bize bildirin. Yeni bir sorun oluşturmadan önce lütfen bu kitaplıktaki mevcut sorunlara göz atın. Yıldız düğmesini tıklayarak mevcut bir soruna oyunuzu ekleyebilirsiniz.
Daha fazla bilgi için Sorun İzleyici belgelerini inceleyin.
Sürüm 1.0
Sürüm 1.0.0-alpha05
30 Temmuz 2025
androidx.xr.compose:compose:1.0.0-alpha05
ve androidx.xr.compose:compose-testing:1.0.0-alpha05
yayınlandı. 1.0.0-alpha05 sürümü bu commit'leri içerir.
Yeni Özellikler
SubspaceComposable
ek açıklama sınıfını herkese açık hale getirdi. (Ic2a34, b/399432430)- 180 ve 360 derecelik küreleri temsil eden iki yeni
SpatialExternalSurface
Composables. (I40ef2, b/391705799) SubspaceModifier.aspectRatio
eklendi (Ide5ab, b/399729509, b/414762147)SceneCoreEntity
API'si,SceneCore
ile Compose for XR arasındaki birlikte çalışabilirliği artırmak için eklendi. (I50bb3, b/423020989)- Ölçeklendirilmemiş VE
GravityAligned
özelliğini desteklemek içinGravityAlignedsubspace
API sağlandı (I07359).
API Değişiklikleri
SpatialDialog()
,SpatialDialogProperties.dismissOnBack
tuşuna basma yapılandırmasını izler. (Ib453b, b/416797132)minimumPanelDimension
, Metre cinsinden gösterildiği içinDimensions(0.1f, 0.1f, 0.1f)
yeni varsayılan boyutuna güncellendi. (Ib852a)- Alt alanlar ve uydular artık ev alanında ve uygulama arka plandayken kendi iç durumlarını koruyacak. Ev alanı modunda Subspace, tam alan moduna geçişe hazırlanmak için sahnesini kurmaya devam eder. (I40317, b/416037751)
SpatialDialogs
artık uygulama arka plandayken durumlarını koruyacak. (I6aa56)ApplicationSubspace
artık önerilen ölçeğini ve konumunu sistemden devralacak. (I4565f, b/418834194)SubspaceComposable
bağlamı dışında birSubspaceComposable
kullanıldığında daha iyi bir hata mesajı eklendi ve hata daha erken tetikleniyor. (Iee2ae, b/416484684)- Composable API'ler yanlış kullanıldığında uyarılar genellikle gözden kaçırıldığından
ExperimentalSubspaceVolumeApi
uyarısını hata olarak güncelledik. (I427aa, b/424864286) - Alt alan ve
ApplicationSubspace
artıkrecommendedContentBoxInFullSpace
ile sınırlanıyor. Daha önceSpatialUser
'nın görüş alanı ile sınırlıydı. (I41015, b/423074142) SpatialElevation
öğesini, sabit kodlanmış boyut kullanmayı bırakmak için minimum boyutu kullanacak şekilde güncelleyin (I2dbe6, b/427785338)- Önemli bir değişken değiştirildiğinde güncellenmesi için
SpatialAcitivityPanel
ile ilgili hazırlık maçlarımızı nasıl yaptığımızı güncelleyin. (I0f64d, b/427999029) - Varsayılan kısıtlama değerlerini eşdeğer olarak ayarlamak için
VolumeConstraints.Unbounded
öğesini kaldırın. (Ie24ec, b/407938414) SpatialFeatheringSize
artık herkese açık değil (I1c15b, b/399432430)- Compose'un
Placeable
özelliğinden ayırt etmek için XRPlaceable
özelliğiniSubspacePlaceable
olarak yeniden adlandırdı. (I74874) - Orbiter ayarlarını kaldırma ve
shouldRenderInNonSpatial
öğesini yeni bir parametre olarak ekleme. Ayrıca,EdgeOffset
sınıfını kaldırıporbiterOffsetType
sınıfını yeni bir parametre olarak ekleyerekOrbiter()
işlevlerini birleştirin. AyrıcaOrbiterEdge
alanınıContentEdge
olarak yeniden adlandırın. (Iebf3d) - Türün, Compose'un
Measurable
türünden farklı olduğunu belirtmek içinMeasurable
,SubspaceMeasurable
olarak yeniden adlandırıldı. (I9726c) MeasureResult
dosyasınıSubspaceMeasureResult
olarak yeniden adlandırın (I9f34d)setSubspaceContent
API'si kaldırıldı. Bunun yerineSubspace
composable ile Compose'unsetContent
kullanılması önerilir. (Ifff4c, b/421427391, b/421427391)MeasurePolicy
,SubspaceMeasurePolicy
olarak yeniden adlandırıldı. (I37a9b, b/422553904)- Varsayılanlar olmadan üye ekleyemeyeceğimiz için
SubspaceSemanticsInfo
'ı kapalı bir arayüze dönüştürün. (I372f9, b/423704068) SpatialExternalSurface
dokümanları güncellendi,ContentSecurityLevel
,SurfaceProtection
olarak yeniden adlandırıldı (I3c460, b/420982808)- Taşınabilir değiştirici için, sabitlemeye olanak tanıyan aşırı yüklenmiş oluşturucu sağlandı. (Ic0c70)
- İpuçları için daha fazla konum sağlayıcı eklendi. Böylece geliştiriciler, ipucunun sabitleme noktasının üstünde, altında, solunda veya sağında yerleştirilip yerleştirilmeyeceğini kontrol edebilir. Şapka işaretleri için bir Şekil alan bir API ekleyin. Böylece daha fazla özel şekil sağlanabilir. (Ie513c, b/374766087, b/418854637)
CoreEntity
,PublishedApi
olarak kaldırıldı (Ifee05)
Hata Düzeltmeleri
SpatialDialog
simgesinin oluşturulurken yanıp sönmesi sorunu düzeltildi. (Ife73c, b/401619909)- Etkinlik panelinin
SpatialDialog
ile karartılamaması sorunu düzeltildi. (I8ca6c, b/367442109) - XR iletişim kutusunun bazı içerikleri göstermemesi sorunu düzeltildi (I17cd5, b/418062437).
- İçerik içinde tıklandığında
SpatialPopup
öğesinin kapatılması sorunu düzeltildi. (If262c, b/417245722) resizable().movable()
ile zincirleme yapıldığında SpatialPanel'in yeni boyuta doğru şekilde yeniden boyutlandırılamaması sorunu düzeltildi. (I02ee3, b/422264230)SpatialComposeVideoPlayer
'deki menüyletopBar
'nin çakışması sorunu düzeltildi (Id33bc, b/427168167).- Sabit köşe yarıçapının oluşturulmaması sorunu düzeltildi (I975fe, b/428261830).
Sürüm 1.0.0-alpha04
7 Mayıs 2025
androidx.xr.compose:compose:1.0.0-alpha04
ve androidx.xr.compose:compose-testing:1.0.0-alpha04
yayınlandı. 1.0.0-alpha04 sürümü bu commit'leri içerir.
Yeni Özellikler
- Özel
SubspaceModifier
türlerinin kompozisyon yerel değerlerine erişmesine olanak tanıyanCompositionLocalConsumerSubspaceModifierNode
arayüzü eklendi. SpatialPanel
uygulama stilini izleyen ve öncekiAndroidView
işlevini kullanımdan kaldıran yeni birViewBased SpatialPanel
API'si eklendi.- Sınırsız kısıtlamaları temsil eden
VolumeConstraints.Unbounded
yardımcı nesnesi eklendi. - Uzamsallaştırılmış ses kaynağına izin vermek için
SubspaceModifier.onPointSourceParams
eklendi. - Uygulamanın, mekansal içerik oluşturabileceği 3D alanı tanımlamak için isteğe bağlı
VolumeConstraints
sunan herkese açık birApplicationSubspace
eklendi. Varsayılan olarak, herhangi bir kısıtlama belirtilmezse alt uzay,SpatialUser
'nın genişlik ve yükseklikteki mevcut görüş alanıyla sınırlanır. Kullanıcılar, görüş alanı belirlenemezse kullanılacak kısıtlamalar sağlayabilir. Aksi takdirde, varsayılan görüş alanı genişliği ve yüksekliği değerleri kullanılır. - Stereoskopik içerik oluşturmak için kullanılabilecek
SpatialExternalSurface
eklendi.SpatialExternalSurface
, değiştiricilerle (alfa hariç) ve kenar yumuşatma efektiyle özelleştirilebilir. - Kullanıcıların uzamsal işaretçinin simgesini ayarlamasına olanak tanıyan yeni bir
pointerHoverIcon
Alt Alan Değiştirici eklendi.
API Değişiklikleri
- Tüm Jetpack XR paketlerindeki
RequiresApi(34)
kısıtlaması kaldırıldı. Jetpack XR şu anda yalnızca API düzeyi 34 ve üzeri olan cihazlarda kullanılabildiğinden bu kısıtlama gereksizdi. (Iae0f8) - Kotlin 2.0 ile yayınlanan projelerin kullanılabilmesi için KGP 2.0.0 veya daha yeni bir sürüm gerekir. (Idb6b5)
- Geriye doğru işleme artık yerleştirilmiş etkinlikler içermeyen uzamsal panellerde çalışacak. Geriye doğru işleme özelliğinin çalışması için android manifest dosyasında
android:enableOnBackInvokedCallback="true"
belirtmeniz gerekir. - Geriye doğru işleme artık uzamsal iletişim kutularında çalışacak. Geriye doğru işleme özelliğinin çalışması için Android manifestinde
android:enableOnBackInvokedCallback="true"
belirtmeniz gerekir. - Oluşturma tabanlı ve görüntüleme tabanlı
SpatialPanel
artık içeriklerine göre boyutlandırılabilir. - Geliştiriciler artık kendi özel
SpatialElevationLevel
değerlerini ayarlayabilir ve önceden tanımlanmış seviyelerle sınırlı değildir. - Orbiter yükseklik düzeyi artık
elevation
parametresiyle özelleştirilebilir. - Alt alan artık varsayılan olarak
SpatialUser
'nın genişlik ve yükseklik açısından görüş alanıyla sınırlanabilir. Görüş alanı belirlenemezse varsayılan görüş alanı genişliği ve yüksekliği değerleri kullanılır. onMoveStart
veonMoveEnd
adlı yeni geri çağırma işlevleri,Movable
değiştiricisine eklendi.onMoveStart
veonMoveEnd
geri çağırmaları, kullanıcı hareketli değiştiriciyle birleştirilebilen bir alt alanı hareket ettirmeye başladığında ve hareket ettirmeyi bitirdiğinde çağrılır.name
parametresi,SpatialRow
veSpatialPanel
gibi coğrafi API'lerden kaldırıldı. Uzamsal oluşturma ağaçlarında hata ayıklamak için bunun yerineSubspaceModifier.testTag
kullanın.- Yalnızca
spatialElevationLevel
vecontent
içeren, desteklenmeyen birSpatialPopup
aşırı yüklemesi kaldırıldı. LütfenonDimissRequest
simgesini destekleyen arayüzü kullanın. - Movable değiştiricisinden gelen
onPoseChange
geri çağırma kaldırıldı. Bunun yerineonMove
politikasını kullanın. SubspaceModifiers
, ayrılmışsa veya şu anda ayrılıyorsa efektlerini artık uygulamaz.- Mevcut
SpatialRow
API'siSpatialRow
veSpatialCurvedRow
olarak ikiye ayrıldı. Daha önceSpatialRow
'nıncurveRadius
parametresini kullanıyorsanız artık aynı davranışı sunanSpatialCurvedRow
parametresini kullanın. MainPanel
veActivityPanel
, benzer şekilde yeni bir sistem görüntüsünde çalıştırıldığında artık başlık çubuğuna sahip değildir.- Alfa ve ölçek değiştiriciler artık yığılabilir ve son uygulanan alfa veya ölçek değeri için değerlerini çarpacaktır.
onPoseChange
Taşınabilir değiştiriciden gelen geri çağırma, daha sorunsuz poz hareketi için optimize edildi.- Taşınabilir ve yeniden boyutlandırılabilir değiştiriciler artık durum değişikliklerinin yeniden oluşturmayı tetiklemesini sağlamak için geri çağırmalarını ana iş parçacığında gerçekleştirecek.
SubspaceLayout
içindeki durum değişikliklerinin yeniden düzenlemeyi tetiklemesini sağlamak için düzen ve ölçüm aşamalarına durum gözlemi eklendi.- Mevcut değiştiricilerin daha iyi yeniden kullanılması için optimize edilmiş değiştirici zinciri güncellemeleri.
Hata Düzeltmeleri
SpatialDialog
gösterildiğinde scrimming durdurulur. (Ic4594)- Değiştirici düğümler ayrılmış durumdayken yapılan yeniden düzenleme istekleri artık yoksayılacak.
- Taşınabilir ve Yeniden Boyutlandırılabilir değiştiricileri tarafından tetiklenen yeniden düzenleme aşamaları kaldırıldı.
- Boyutlardan biri doğrudan veya düzen hesaplaması sırasında (ör.
SpatialRow/SpatialColumn
hesaplaması) sıfıra ayarlandığında oluşanMainPanel()
composable'daki kilitlenme sorunu düzeltildi. Panel artık gizlenecek. Bu düzeltmenin özellikle düzen aşamasındaki kilitlenmeleri ele aldığını unutmayın. Panelin kullanıcı etkileşimi yoluyla sıfıra yeniden boyutlandırılması ayrı olarak ele alınacaktır. Gizli panelde kullanıcı arayüzü olanakları yok. - Yeniden boyutlandırılabilir değiştiriciden
maintainAspectRatio
ile ilgili sorun düzeltildi. En boy oranı korunmalıdır. - İç içe yerleştirilmiş alt uzayların tek bir kare için yanlış konumlandırılmasına neden olan sorun düzeltildi.
- Yuvarlak köşelerin bazen uygulanması gerektiği halde uygulanmaması sorunu düzeltildi.
NestedSubspaces
artık yanlış konumdaki bir karede görünmeyecek.
Sürüm 1.0.0-alpha03
26 Şubat 2025
androidx.xr.compose:compose:1.0.0-alpha03
ve androidx.xr.compose:compose-testing:1.0.0-alpha03
, son alfa sürümünden bu yana önemli bir değişiklik yapılmadan yayınlandı. 1.0.0-alpha03 sürümü bu commit'leri içerir.
Sürüm 1.0.0-alpha02
12 Şubat 2025
androidx.xr.compose:compose:1.0.0-alpha02
ve androidx.xr.compose:compose-testing:1.0.0-alpha02
yayınlandı. 1.0.0-alpha02 sürümü bu commit'leri içerir.
Yeni Özellikler
- Etkinlik paneli artık bir Spatial Dialog etkinleştirildiğinde içeriğini karartabilir.
Orbiter
API artıkSubspaceComposable
bağlamlarında kullanılabilir ve Orbiters'ı en yakınSubspaceLayout
tabanlı composable üst öğeye ekler.- Konuma dayalı özel değiştiricilere izin vermek için
LayoutCoordinatesAwareModifierNode
tanıtıldı. SubspaceModifier.Node
'ya ekleme/çıkarma yaşam döngüsü yöntemleri eklendi.- Hareket ettirilebilir değiştiriciye
scaleWithDistance
eklendi.scaleWithDistance
etkinleştirildiğinde, taşınan alt alan öğesi büyür veya küçülür. Ayrıca, hareketten önce sahip olduğu açık ölçeği de korur.
API Değişiklikleri
SessionCallbackProvider
,SpatialCapabilities
lehine kaldırıldı.
Diğer değişiklikler
minSDK
değeri 24'e düşürüldü. Tüm Jetpack XR API'leri, çalışma zamanında API 34 gerektirmeye devam eder.Orbiter
EdgeOffset.inner
,EdgeOffset.outer
veEdgeOffset.overlap
oluşturucular artık@Composable
yöntemleri değildir. Bu sayede, birleştirilemeyen bağlamlarda kullanılabilirler.- Uzamsal yükseklik seviyelerini en son kullanıcı deneyimi spesifikasyonuna uyacak şekilde güncelleyin.
SubspaceSemanticsInfo
arayüzünüMeasurableLayout
'e uygulayın.SubspaceModifierElement
,SubspaceModifierNodeElement
olarak yeniden adlandırıldı.
Hata düzeltmeleri
SubspaceModifier
sıralamasını sabitlemeye yönelik düzeltmeler.SubspaceModifier
daha güvenilir bir şekilde çalışmalıdır. Öteleme, döndürme, ölçeklendirme, taşınabilir ve yeniden boyutlandırılabilir değiştiriciler artık herhangi bir sırada kullanılabilir.
Sürüm 1.0.0-alpha01
12 Aralık 2024
androidx.xr.compose:compose-*1.0.0-alpha01
iptal edilir.
İlk sürümdeki özellikler
Jetpack Compose for XR'ın ilk geliştirici sürümü. İster mevcut bir 2D uygulamayı XR'ye taşıyor ister sıfırdan yeni bir XR uygulaması oluşturuyor olun, XR'de mekansal kullanıcı arayüzü düzenleri oluşturmak için satırlar ve sütunlar gibi tanıdık Compose kavramlarını kullanın. Bu kitaplık, mevcut 2D Compose veya Görünümler tabanlı kullanıcı arayüzünüzü uzamsal bir düzene yerleştirmenize olanak tanıyan alt alan ve uzamsal composable'lar (ör. uzamsal paneller ve yörüngeler) sağlar. 3D modeller gibi SceneCore öğelerini kullanıcı arayüzünüze göre yerleştirmenize olanak tanıyan Volume subspace composable'ı kullanıma sunar. Daha fazla bilgiyi bu geliştirici kılavuzunda bulabilirsiniz:
Subspace
: Bu composable, uygulamanızın kullanıcı arayüzü hiyerarşisinde herhangi bir yere yerleştirilebilir. Böylece, dosyalar arasındaki bağlamı kaybetmeden 2D ve uzamsal kullanıcı arayüzü için düzenleri koruyabilirsiniz. Bu sayede, mevcut uygulama mimarisi gibi öğeleri tüm kullanıcı arayüzü ağacınızda durumu yükseltmenize veya uygulamanızın mimarisini yeniden tasarlamanıza gerek kalmadan XR ve diğer form faktörleri arasında paylaşmak kolaylaşır.SpatialPanel: SpatialPanel, uygulama içeriğini görüntülemenize olanak tanıyan bir alt uzay bileşenidir. Örneğin, video oynatma, hareketsiz görüntüler veya diğer içerikleri SpatialPanel'de görüntüleyebilirsiniz.
Orbiter: Orbiter, uzamsal bir kullanıcı arayüzü bileşenidir. İlgili bir uzamsal panele eklenmek üzere tasarlanmıştır ve bu uzamsal panelle ilgili gezinme ve bağlamsal işlem öğelerini içerir. Örneğin, video içeriğini göstermek için bir uzamsal panel oluşturduysanız yörüngeye video oynatma kontrolleri ekleyebilirsiniz.
Hacim: 3D modeller gibi SceneCore öğelerini kullanıcı arayüzünüze göre yerleştirin.
Uzamsal Yerleşim:
SpatialRow
,SpatialColumn
,SpatialBox
veSpatialLayoutSpacer
kullanarak birden fazla uzamsal panel oluşturup bunları Uzamsal Yerleşim'e yerleştirebilirsiniz. Düzeninizi özelleştirmek içinSubspaceModifier
simgesini kullanın.Uzamsal kullanıcı arayüzü bileşenleri: Bu öğeler 2D kullanıcı arayüzünüzde yeniden kullanılabilir ve uzamsal özellikleri yalnızca uzamsal özellikler etkinleştirildiğinde görünür.
SpatialDialog
: Panel, yükseltilmiş bir iletişim kutusu göstermek için z derinliğinde biraz geriye itilir.SpatialPopUp
: Panel, yükseltilmiş bir pop-up göstermek için z derinliğinde biraz geriye itilir.SpatialElevation
:SpatialElevationLevel
, yüksekliği eklemek için ayarlanabilir.
SpatialCapabilities: Kullanıcılar uygulamanızla veya sistemle etkileşimde bulundukça mekansal özellikler değişebilir, hatta uygulamanızın kendisi tarafından da değiştirilebilir (ör. Ev Alanı'na veya Tam Alan'a geçiş). Sorun yaşamamak için uygulamanızın, mevcut ortamda hangi API'lerin desteklendiğini belirlemek üzere
LocalSpatialCapabilities.current
olup olmadığını kontrol etmesi gerekir.isSpatialUiEnabled
: Üç boyutlu kullanıcı arayüzü öğeleri (ör. SpatialPanel)isContent3dEnabled
: 3D nesnelerisAppEnvironmentEnabled
: OrtamisPassthroughControlEnabled
: Uygulamanın, geçiş durumunu kontrol edip edemeyeceğiisSpatialAudioEnabled
: Üç boyutlu ses
Bilinen Sorunlar
- Şu anda XR için Jetpack Compose'u kullanmak üzere minimum SDK sürümünün 30 olması gerekmektedir. Geçici çözüm olarak, 23 minSDK'sı ile derleme ve çalıştırma yapabilmek için aşağıdaki manifest girişini
<uses-sdk tools:overrideLibrary="androidx.xr.scenecore, androidx.xr.compose"/>
ekleyebilirsiniz. - Jetpack XR uygulamalarının şu anda AndroidManifest'te
android.permission.SCENE_UNDERSTANDING
izni istemesi gerekiyor. - Bir uygulama, manifest dosyasındaki
PROPERTY_XR_ACTIVITY_START_MODE
özelliğini kullanarak doğrudan Tam Alan'da başlatıldığında Etkinlikler/Uygulamalar, Tam Alan'a geçmeden önce başlangıçta Ev Alanı'nda açılır. - Volume Composables'daki glTF'ler başlangıçta yanlış konumda titreyebilir.
- Önemli ölçüde taşınmış bir panelde SpatialDialog kullanmak, içeriği yanlış yöne iter.