Android 8.0 (API düzeyi 26), davranış değişikliklerinin yanı sıra uygulamalarınızda yararlanabileceğiniz yeni özellikler ve API'ler sunar. Bu belgede, uygulamalarınızı Android 8.0'a taşımayla ilgili iki temel aşamaya genel bir bakış sunulmaktadır:
- Android 8.0 ile uyumluluğu sağlama
Uygulamanızın, platformun yeni sürümünde tüm işlevlerinin çalıştığını doğrulayın. Bu aşamada yeni API'ler kullanmıyor veya uygulamanızın
targetSdkVersion
değerini değiştirmiyorsunuz ancak küçük değişiklikler yapmanız gerekebilir. - Hedef sürümünüzü güncelleyin ve Android 8.0 özelliklerini kullanın
Platformun yeni özelliklerinden yararlanmaya hazır olduğunuzda
targetSdkVersion
sürümünüzü 26 olarak güncelleyin, uygulamanın beklendiği gibi çalışmaya devam ettiğini doğrulayın ve ardından yeni API'leri kullanmaya başlayın.
Android 8.0 ile uyumluluğu sağlama
Amaç, mevcut uygulamanızın Android 8.0'da (API düzeyi 26) olduğu gibi çalıştığından emin olmaktır. Bazı platform değişiklikleri, uygulamanızın davranışını etkileyebileceğinden bazı düzenlemeler yapmanız gerekebilir ancak yeni API'ler kullanmanız veya targetSdkVersion
'nizi değiştirmeniz gerekmez.
Android 8.0 yüklü bir cihazı hazırlama
- Uyumlu bir cihazınız (Pixel, Pixel XL, Pixel C, Nexus 5X, Nexus 6P veya Nexus Player) varsa cihazınızı güncellemeyle ilgili talimatları uygulayın.
- İsterseniz Android Emülatör için Android 8.0 sistem görüntüsünü de indirebilirsiniz. SDK Yöneticisi'nde Android 8.0 altında Google API'leri Intel x86 Atom Sistem Görüntüsü olarak listelenir.
Not: Android 8.0 sistem resmi, Android Studio 3.0 ve sonraki sürümlerden indirilebilir. Daha fazla bilgi için Android 8.0 SDK'sını edinme bölümüne bakın.
Uyumluluk testi yapma
Android 8.0 (API düzeyi 26) ile uyumluluğu test etmek, çoğunlukla uygulamanızı yayınlamaya hazırlanırken yaptığınız test türüyle aynıdır. Bu, Temel Uygulama Kalitesi Yönergeleri ve Test İçin En İyi Uygulamalar'ı incelemek için iyi bir zamandır.
Ancak testin başka bir yönü de vardır: Android 8.0, Android platformunda targetSdkVersion
'nizi değiştirmeseniz bile uygulamanızın davranışını etkileyebilecek veya uygulamayı tamamen bozabilecek değişiklikler yapar. Bu nedenle, 1. tabloda yer alan önemli değişiklikleri incelemeniz ve değişikliklere uyum sağlamak için uyguladığınız düzeltmeleri test etmeniz önemlidir.
Değişim | Özet | Daha fazla referans |
---|---|---|
Daha seyrek arka planda konum güncellemeleri | Uygulamanız arka plan hizmetinden konum güncellemeleri alıyorsa Android 8.0'da (API düzeyi 26) güncellemeleri Android'in eski sürümlerine kıyasla daha seyrek alır. Özellikle, arka plan hizmetleri saatte birkaç kereden fazla konum güncellemesi alamaz. Ancak uygulamanız ön plandayken konum güncellemelerinin hızı değişmez. | Arka Planda Konum Sınırlamaları |
net.hostname artık desteklenmiyor
|
net.hostname sistem mülküne sorgu gönderdiğinizde null sonuç döndürülür.
|
Yok |
send(DatagramPacket) tarafından gönderilen yeni istisna |
Daha önce yürütülen connect(InetAddress, int) yöntemi başarısız olursa send(DatagramPacket) yöntemi bir SocketException uygular.
|
Davranış Değişiklikleri: Ağ ve HTTP(S) bağlantısı |
AbstractCollection yöntemden
uygun NullPointerException
|
AbstractCollection.removeAll(null) ve AbstractCollection.retainAll(null) artık her zaman bir NullPointerException oluşturur; daha önce koleksiyon boşken NullPointerException oluşturulmuyordu.
Bu değişiklik, davranışın belgelerle tutarlı olmasını sağlar.
|
Davranış Değişiklikleri: Koleksiyon işleme |
Currency.getDisplayName(null) tarihinden itibaren geçerli olan doğru NullPointerException
|
Currency.getDisplayName(null) çağrıldığında
NullPointerException gönderilir.
|
Davranış Değişiklikleri: Yerel ayarlar ve uluslararası hale getirme |
Android 8.0'daki (API düzeyi 26) davranış değişikliklerinin daha kapsamlı bir listesi için Android 8.0 Davranış Değişiklikleri başlıklı makaleyi de inceleyin.
Hedef sürümünüzü güncelleyin ve Android 8.0 özelliklerini kullanın
Bu bölümde, targetSdkVersion
sürümünüzü 26'ya güncelleyerek ve Android 8.0'da kullanılabilen yeni özellikleri ekleyerek Android 8.0 (API seviyesi 26) için tam desteğin nasıl etkinleştirileceği açıklanmaktadır.
targetSdkVersion
sürümünüzü 26'ya güncellediğinizde Android 8.0, size yeni API'ler sunmanın yanı sıra bazı davranış değişiklikleri de sunar. Bazı davranış değişiklikleri, kesintileri önlemek için kod değişiklikleri gerektirebileceğinden, targetSdkVersion
değerini değiştirdiğinizde uygulamanızın nasıl etkilenebileceğini anlamak için öncelikle Android 8.0'i hedefleyen uygulamalar için davranış değişikliklerinin tümünü inceleyin.
Not: Yukarıda açıklanan ve platform uyumluluğunu sağlamak için gerekli olan adımlar, uygulamanızı Android 8.0'u hedefleyerek yayınlamak için ön koşuldur. Bu nedenle, önce bu adımları tamamladığınızdan emin olun.
Android 8.0 SDK'sını edinme
Uygulamanızı Android 8.0 (API seviyesi 26) ile derlemek için Android Studio'nun en son sürümünü (Android Studio 3.0 ve sonraki sürümler önerilir) kullanarak SDK paketlerini edinebilirsiniz. Android Studio 3.0 ve sonraki sürümler, uyarlanabilir simgeler ve indirilebilir yazı tipleri gibi Android 8.0 özelliklerinde size yardımcı olacak araçlar içerir. Bu özelliklere henüz ihtiyacınız yoksa Android 8.0 ile uygulamanızı oluşturmak ve yeni API'leri kullanmak için Android Studio 2.3.3'ün kararlı sürümünü kullanabilirsiniz.
Android Studio'nun herhangi bir sürümünü kurmak için aşağıdaki adımları uygulayın:
- Android Studio'yu başlatın ve Araçlar > SDK Yöneticisi'ni tıklayarak SDK Yöneticisi'ni açın.
- SDK Platformları sekmesinde Paket Ayrıntılarını Göster'i işaretleyin. Android 8.0 Önizlemesi bölümünde aşağıdakileri kontrol edin:
- Android SDK Platform 26
- Google API'leri Intel x86 Atom Sistem Görüntüsü (yalnızca emülatör için gereklidir)
- SDK Araçları sekmesine geçin ve güncellemesi olan tüm öğeleri işaretleyin (tire gösteren her onay kutusunu tıklayın). Bu, gerekli olan aşağıdaki öğelerin en son sürümlerini içermelidir:
- Android SDK Derleme Araçları 26.0.0
- Android SDK Platform-Tools 26.0.0
- Android Emulator 26.0.0
- Seçilen tüm SDK paketlerini yüklemek için Tamam'ı tıklayın.
Artık Android 8.0 ile uygulama geliştirmeye hazırsınız.
Derleme yapılandırmanızı güncelleme
compileSdkVersion
, targetSdkVersion
ve Destek Kitaplığı sürümünü mevcut en son düzeltmelere güncelleyin. Örneğin:
android { compileSdkVersion 26 defaultConfig { targetSdkVersion 26 } ... } dependencies { compile 'com.android.support:appcompat-v7:26.0.0' } // REQUIRED: Google's new Maven repo is required for the latest // support library that is compatible with Android 8.0 repositories { google() // If you're using a version of Gradle lower than 4.1, you must instead use: // maven { // url 'https://maven.google.com' // } }
Yayın alıcılarını manifest dosyanızdan kaldırma
Android 8.0 (API seviyesi 26), yayın alıcıları için yeni sınırlamalar getirdiğinden, örtülü yayın intent'leri için kayıtlı tüm yayın alıcılarını kaldırmanız gerekir. Bu kodları kaldırmak, uygulamanızı derleme veya çalıştırma aşamasında bozmaz ancak uygulamanız Android 8.0'da çalışırken bu kodların hiçbir etkisi olmaz.
Yalnızca uygulamanızın yanıt verebileceği yayınlar (açık yayın amaçları ve özellikle uygulamanızın paket adına gönderilen yayınlar) Android 8.0'da aynı şekilde çalışmaya devam eder.
Bu yeni kısıtlamanın istisnaları vardır. Android 8.0'i hedefleyen uygulamalarda çalışmaya devam eden örtülü yayınların listesi için Örtülü Yayın İstisnaları başlıklı makaleyi inceleyin.
Android 8.0 uygulamanızı test etme
Yukarıdaki hazırlıklar tamamlandığında, uygulamanızı derleyebilir ve ardından Android 8.0'ı (API seviyesi 26) hedeflerken düzgün çalıştığından emin olmak için daha ayrıntılı bir şekilde test edebilirsiniz. Bu, Temel Uygulama Kalitesi Yönergeleri ve Testle ilgili en iyi uygulamaları incelemek için iyi bir zamandır.
Uygulamanızı targetSdkVersion
26 olarak ayarlayarak oluşturduğunuzda dikkat etmeniz gereken belirli platform değişiklikleri vardır. Bu değişikliklerin bazıları, Android 8.0'da yeni özellikler uygulamasanız bile uygulamanızın davranışını önemli ölçüde etkileyebilir veya uygulamanızı tamamen bozabilir.
Tablo 2'de, daha fazla bilginin bağlantılarını içeren bu değişikliklerin listesi verilmiştir.
Değişim | Özet | Daha fazla referans |
---|---|---|
Gizlilik | Android 8.0 (API düzeyi 26), net.dns1, net.dns2, net.dns3 veya net.dns4 sistem özelliklerinin kullanılmasını desteklemez. | Davranış Değişiklikleri: Gizlilik |
Yazılabilir ve Yürütülebilir Segmentler Zorunlu Kılınıyor | Android 8.0 (API düzeyi 26), yerel kitaplıklar için verilerin yürütülebilir olmaması ve kodun yazılabilir olmaması gerektiği kuralını uygular. | Davranış Değişiklikleri: Yerel Kitaplıklar |
ELF başlığı ve bölüm doğrulaması | Dinamik bağlayıcı, ELF başlığında ve bölüm başlıklarında daha fazla değeri kontrol eder ve geçersiz değerler varsa başarısız olur. | Davranış Değişiklikleri: Yerel Kitaplıklar |
Bildirimler | SDK'nın Android 8.0 (API düzeyi 26) sürümünü hedefleyen uygulamalar, kullanıcılara bildirim gönderebilmek için bir veya daha fazla bildirim kanalı uygulamalıdır. | API'ye Genel Bakış: Bildirimler |
List.sort() yöntemi
|
Bu yöntemin uygulamaları artık Collections.sort() yöntemini çağıramayabilir veya uygulamanız yığın taşması nedeniyle istisna uygulayabilir.
|
Davranış Değişiklikleri: Koleksiyon işleme |
Collections.sort() yöntemi
|
Liste uygulamalarında Collections.sort() artık ConcurrentModificationException hatası veriyor.
|
Davranışla İlgili Değişiklikler: Koleksiyon işleme |
Android 8.0 (API düzeyi 26)'taki davranış değişikliklerinin daha kapsamlı bir listesi için Android 8.0 Davranış Değişiklikleri başlıklı makaleyi inceleyin.
Android 8.0 (API düzeyi 26) ile sunulan yeni özellikleri ve API'leri keşfetmek için Android 8.0 Özellikleri ve API'leri başlıklı makaleyi inceleyin.