Android 10, uygulamanızı etkileyebilecek güncellenmiş sistem davranışı değişiklikleri içerir. Bu sayfada listelenen değişiklikler yalnızca API 29 veya sonraki sürümleri hedefleyen uygulamalar için geçerlidir. Uygulamanız targetSdkVersion
değerini "29" veya daha yüksek bir değere ayarlarsa geçerli olduğu durumlarda uygulamanızı bu davranışları düzgün şekilde destekleyecek şekilde değiştirmeniz gerekir.
Android 10'da çalışan tüm uygulamaları etkileyen davranış değişiklikleri listesini de inceleyin.
Not: Android 10, bu sayfada listelenen değişikliklere ek olarak gizliliğe dayalı çok sayıda değişikliğe ve kısıtlamaya yol açıyor. şu:
- Kapsamlı depolama
- USB cihazının seri numarasına erişme
- Kablosuz bağlantıyı etkinleştirme, devre dışı bırakma ve yapılandırma
- Bağlantı API'leri için konum izinleri
API düzeyi 29 veya üstünü hedefleyen uygulamaları etkileyen bu değişiklikler ve kullanıcı gizliliğini artırır. Bu değişiklikleri nasıl destekleyeceğinizle ilgili daha fazla bilgi edinmek için Gizlilik değişiklikleri sayfasına gidin.
SDK olmayan arayüz kısıtlamalarında yapılan güncellemeler
Uygulama kararlılığını ve uyumluluğunu sağlamak için platformda kısıtlamaya başladı. SDK dışı arayüzlerin uygulamanızın Android 9'da (API düzeyi 28) kullanabileceği anlamına gelir. Android 10, Android geliştiricilerle yapılan ortak çalışmalara ve en son dahili testlere dayalı olarak kısıtlanmış SDK dışı arayüzlerin güncellenmiş listelerini içerir. Hedefimiz, SDK dışı arayüzleri kısıtlamadan önce herkese açık alternatiflerin kullanıma sunulduğundan emin olmaktır.
Android 10'u (API düzeyi 29) hedeflemeyecekseniz bu değişikliklerden bazıları sizi hemen etkilemeyebilir. Ancak şu anda SDK olmayan arayüzler (uygulamanızın hedef API seviyesine bağlı olarak), SDK dışı bir yöntem veya alan kullanmak her zaman uygulamasını indirin.
Uygulamanızın SDK dışı arayüz kullanıp kullanmadığından emin değilseniz bunu öğrenmek için uygulamanızı test edebilirsiniz. Uygulamanız SDK dışı arayüz kullanıyorsa en iyi uygulamaları paylaşacağız. Bununla birlikte, bazı uygulamalarda SDK dışı arayüzler için geçerli kullanım alanları. Alternatif bir alternatif bulamazsanız SDK olmayan arayüz kullanmak istiyorsanız bunu yeni bir herkese açık API isteğinde bulunun.
Daha fazla bilgi için Android 10'da SDK dışı arayüz kısıtlamalarıyla ilgili güncellemeler bölümünü inceleyin. SDK dışı arayüzlerle ilgili kısıtlamalar bölümünü inceleyin.
Paylaşılan anı
Ashmem, /proc/<pid>/maps adresindeki dalvik haritalarının biçimini değiştirdi. Bu değişiklik, harita dosyasını doğrudan ayrıştıran uygulamaları etkiledi. Uygulama geliştiriciler, çalıştıran cihazlarda /proc/<pid>/maps biçimini Android 10 veya sonraki bir sürüm yüklü olmalı ve uygulama dalvik harita biçimlerinden yararlanır.
Android 10'u hedefleyen uygulamalar doğrudan ashmem'i kullanamaz
(/dev/ashmem) oluşturur ve bunun yerine, paylaşılan belleğe NDK’lar üzerinden
ASharedMemory
sınıf.
Ayrıca, uygulamalar mevcut ashmem dosyası tanımlayıcılarına doğrudan IOCTL'ler yapamaz.
ve NDK'nın ASharedMemory
sınıfını veya Android Java'yı kullanmalıdır.
Paylaşılan bellek bölgeleri oluşturmaya yönelik API'ler. Bu değişiklik, güvenliği ve
paylaşılan bellekle çalışırken dayanıklılık, performans ve güvenliği iyileştirme
önemli bir rol oynadı.
Uygulama ana dizini için yürütme izni kaldırıldı
Dosyaların yazılabilir uygulama ana dizininden yürütülmesi W^X ihlali. Uygulamalar yalnızca bir uygulamanın APK dosyasına yerleştirilmiş ikili program kodunu yüklemelidir.
Android 10'u hedefleyen güvenilmeyen uygulamalar execve()
komutunu çağıramaz
ana dizinindeki dosyalara erişebilir.
Ayrıca, Android 10'u hedefleyen uygulamalar bellekte değişiklik yapamaz.
dlopen()
ile açılmış ve beklenen dosyalardan yürütülebilir kod
bu değişikliklerin diske yazılmasını sağlar. Çünkü kitaplık,
yazılabilir bir dosya tanımlayıcı aracılığıyla PROT_EXEC
eşlendi. Buna, herhangi bir
metin yeri değiştirilmiş paylaşılan nesne (.so
) dosyaları.
Android çalışma zamanı yalnızca sistem tarafından oluşturulan OAT dosyalarını kabul eder
Android çalışma zamanı (ART) artık uygulamadan dex2oat
öğesini çağırmıyor
bahsedeceğim. Bu değişiklik, ART'ın yalnızca
oluşturabilirsiniz.
ART'ta AOT doğruluğunu zorunlu kılma
Geçmişte, Android tarafından gerçekleştirilen "önceden tanımlanmış" (AOT) derleme Sınıf yolu ortamı şöyle değilse çalışma zamanı (ART) çalışma zamanı kilitlenmelerine neden olabilir aynı performansı sağlar. Android 10 ve sonraki sürümler Bu ortam bağlamlarının her zaman aynı olmasını gerektirir. Bu da aşağıdaki davranış değişiklikleri söz konusudur:
- Özel sınıf yükleyiciler (sınıfın aksine, uygulamalar tarafından yazılan sınıf yükleyiciler)
dalvik.system
paketindeki yükleyiciler (AOT) olarak derlenmiş değildir. Çünkü ART, çalışma zamanında özelleştirilmiş sınıf araması uygulamasını bilemez. - İkincil dex dosyaları; yani birincil APK'lar: Arka planda AOT tarafından derlenir. Bunun nedeni, ilk ve derleme işlemi çok pahalı olabilir. Bu da, işleme başlamadan önce birkaç adım var. Not: Uygulamalarda, bölümleri kullanmak ve ikincil dex dosyaları kullanmanız önerilir.
- Android'de paylaşılan kitaplıklar (<library> ve <uses-library> emin olmak için) farklı bir kod sınıf yükleyici hiyerarşisi, platformun önceki sürümlerinde kullanılandan daha fazladır.
Tam ekran intent'ler için izin değişiklikleri
Android 10 veya sonraki bir sürümü hedefleyen ve bildirimleri şu cihazla kullanan uygulamalar:
tam ekran
intents,
"the"
USE_FULL_SCREEN_INTENT
izin vermiş olması gerekir. Bu, normal
söz konusu olabilir.
istekte bulunan uygulamaya otomatik olarak izin verir.
Android 10 veya sonraki sürümleri hedefleyen bir uygulama, gerekli izni istemeden tam ekran intent içeren bir bildirim oluşturmaya çalışırsa sistem tam ekran intent'i yoksayıp aşağıdaki günlük mesajını döndürür:
Package your-package-name: Use of fullScreenIntent requires the USE_FULL_SCREEN_INTENT permission
Katlanabilir cihazlar için destek
Android 10'da katlanabilir cihazları ve büyük ekranlı cihazları destekleyen değişiklikler yapılmıştır.
Bir uygulama Android 10'da çalışırken onResume()
ve onPause()
yöntemleri farklı çalışır. Çoklu pencerede aynı anda birden fazla uygulama göründüğünde veya
çoklu ekran modunda, görünür gruplardaki odaklanılabilir en önemli etkinliklerin tümü
devam ettirilmiş durumda ancak içlerinden yalnızca biri, "en üstte devam ettirilen" etkinlik,
odaklanıyor. Android 10'dan önceki sürümlerde çalışırken yalnızca
sistemdeki tek bir etkinlik de devam ettirilebilir; diğer tüm etkinlikleri
etkinlikler duraklatıldı.
"Odaklanma" kavramını karıştırmayın "en üstte devam ettirilen" etkinliği'ne dokunun. Sistem, her bir görev için Z-sırasına göre Kullanıcının en son etkileşimde bulunduğu etkinlikler. Bir etkinlik, en üst devam ettirilen ancak odakta olmayan (örneğin, bildirim gölgesi genişletildi).
Android 10 (API düzeyi 29) ve sonraki sürümlerde
onTopResumedActivityChanged()
geri arama
etkinliğiniz en üst düzey devam ettirildiğinde veya kaybettiğinde bildirim almak için
dokunun. Bu, Android 10'dan önceki devam ettirilen duruma eşdeğerdir ve faydalı olabilir.
Örneğin, uygulamanız gereken özel veya tekil kaynaklar kullanıyorsa
diğer uygulamalarla paylaşılacak.
Tarayıcının davranışı
resizeableActivity
manifesto özelliğinde de değişiklik yapıldı. Uygulama
resizeableActivity=false
uygulaması Android 10 (API düzeyi 29) veya sonraki sürümlerde ise uyumluluk moduna alınmış olabilir.
mevcut ekran boyutu değiştiğinde veya uygulama bir ekrandan
başka bir tane.
Uygulamalar,
android:minAspectRatio
özelliği ile birlikte Android 10'da kullanıma sunulan bu özelliğin,
uygulamanızın desteklediği oranları göstermelisiniz.
3.5 sürümünden itibaren Android Studio'nun emülatör aracı 7,3 inç içerir ve 8 inç sanal cihazlar kullanarak kodunuzu daha büyük ekranlarla test edebilirsiniz.
Daha fazla bilgi için Uygulamalarınızı katlanabilir cihazlar için tasarlama konusuna bakın.