Android 8.0 (API düzeyi 26), uygulamalarınızda yararlanabileceğiniz yeni özelliklerin ve API'lerin yanı sıra davranış değişiklikleri de sunar. Bu dokümanda, uygulamalarınızı Android 8.0'a iki temel aşamada taşıma adımlarına genel bir bakış sunulmaktadır:
- Android 8.0 ile uyumluluğu sağlama
Uygulamanızın, platformun yeni sürümünde tamamen işlevsel olduğunu doğrulayın. Bu aşamada yeni API'ler kullanmaz veya uygulamanızın
targetSdkVersion
politikasını değiştirmezsiniz, ancak küçük değişiklikler yapmanız gerekebilir. - Hedef sürümünüzü güncelleme ve Android 8.0 özelliklerini kullanma
Platformun yeni özelliklerinden yararlanmaya hazır olduğunuzda
targetSdkVersion
cihazınızı 26'ya 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
Buradaki amaç, mevcut uygulamanızın Android 8.0'da (API düzeyi 26) olduğu gibi çalışmasını sağlamaktır. Bazı platform değişiklikleri uygulamanızın davranış şeklini etkileyebileceği için bazı ayarlamalar yapılması gerekebilir ancak yeni API'ler kullanmanız veya targetSdkVersion
öğenizi değiştirmeniz gerekmez.
Android 8.0 çalıştıran bir cihazı hazırlama
- Uyumlu bir cihazınız varsa (Pixel, Pixel XL, Pixel C, Nexus 5X, Nexus 6P veya Nexus Player) cihazınızı yükleme talimatlarını uygulayın.
- İsterseniz Android Emülatör için Android 8.0 sistem görüntüsünü 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 görüntüsünü Android Studio 3.0 ve sonraki sürümlerden indirebilirsiniz. Daha fazla bilgi için aşağıdaki Android 8.0 SDK'sını edinme bölümüne bakın.
Uyumluluk testi yapma
Çoğunlukla, Android 8.0 (API düzeyi 26) ile uyumluluğun test edilmesi, uygulamanızı yayınlamaya hazırlanırken yaptığınız test türüyle aynı işlemi gerektirir. Bu, Temel Uygulama Kalitesi Yönergeleri'ni ve Testlerle İlgili En İyi Uygulamaları incelemek için iyi bir zamandır.
Ancak test etmenin bir yönü daha vardır: Android 8.0'da, targetSdkVersion
özelliğini değiştirmeseniz bile Android 8.0'da uygulamanızın davranışını etkileyebilecek veya uygulamayı tamamen bozabilecek değişiklikler yapılmıştır. Bu nedenle, Tablo 1'deki önemli değişiklikleri incelemeniz ve değişikliklere uyum sağlamak için uyguladığınız düzeltmeleri test etmeniz önemlidir.
Tablo 1. Android 8.0 cihazlarda çalışan tüm uygulamaları etkileyen önemli değişiklikler.
Değişim | Özet | Daha fazla referans |
---|---|---|
Daha seyrek arka planda konum güncellemeleri | Uygulamanız, arka plandaki bir hizmetten konum güncellemesi alıyorsa Android'in eski sürümlerine kıyasla Android 8.0 (API düzeyi 26) sürümlerinde daha az güncelleme alır. Özellikle, arka planda çalışan bir hizmet saatte en fazla birkaç kez konum güncellemesi alabilir. Ancak, uygulamanız ön plandayken konum güncelleme hızı değişmez. | Arka Planda Konum Sınırları |
net.hostname artık desteklenmiyor
|
net.hostname sistem özelliğini sorgulamak boş sonuç üretir.
|
Yok |
send(DatagramPacket) tarihinden itibaren yeni istisna |
Daha önce yürütülen connect(InetAddress, int) yöntemi başarısız olursa send(DatagramPacket) yöntemi bir SocketException bildirir.
|
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
NullPointerException atıyor;
daha önce koleksiyon boşken NullPointerException atılmıyordu.
Bu değişiklik, davranışı dokümanlarla tutarlı hale getirir.
|
Davranış Değişiklikleri: Koleksiyonları işleme |
Currency.getDisplayName(null) adlı satıcıdan uygun NullPointerException
|
Currency.getDisplayName(null) çağrılırsa NullPointerException atılır.
|
Davranış Değişiklikleri: Yerel ayarlar ve uluslararasılaştırma |
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 konusuna da bakın.
Hedef sürümünüzü güncelleyin ve Android 8.0 özelliklerini kullanın
Bu bölümde, targetSdkVersion
cihazınızı 26'ya güncelleyip Android 8.0'da sunulan yeni özellikleri ekleyerek Android 8.0 (API düzeyi 26) için nasıl tam desteğin etkinleştirileceği açıklanmaktadır.
Android 8.0, yeni API'ler sunmanın yanı sıra targetSdkVersion
cihazınızı 26 olarak güncellediğinizde bazı davranış değişiklikleri de sunar. Bazı davranış değişikliklerinin bozulmaması için kod değişikliği gerektirmesi nedeniyle, öncelikle Android 8.0'ı hedefleyen uygulamalarla ilgili tüm davranış değişikliklerini inceleyerek, targetSdkVersion
değişikliği yaptığınızda uygulamanızın nasıl etkilenebileceğini anlamalısınız.
Not: Platform uyumluluğunu sağlamak için yukarıda açıklanan adımlar, uygulamanızı Android 8.0'a hedeflemek için ön koşuldur. Bu nedenle, önce bu adımları tamamladığınızdan emin olun.
Android 8.0 SDK'sını edinin
Uygulamanızı Android 8.0 (API düzeyi 26) ile oluşturmak için Android Studio'nun en yeni sürümünü (Android Studio 3.0 ve sonraki sürümler önerilir) kullanarak SDK paketlerini alabilirsiniz. Android Studio 3.0 ve sonraki sürümler, Android 8.0'ın uyarlanabilir simgeler ve indirilebilir yazı tipleri gibi özellikleri konusunda size yardımcı olacak araçlar içerir. Henüz bu özelliklere ihtiyaç duymuyorsanız 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'nin altında aşağıdakileri kontrol edin:
- Android SDK Platformu 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 (kısa çizgi
gösteren tüm onay kutularını tıklayın). Bu, aşağıdaki öğelerin gerekli olan en son sürümlerini içermelidir:
- Android SDK Derleme Araçları 26.0.0
- Android SDK Platform-Araçları 26.0.0
- Android Emülatör 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ırın
Android 8.0 (API düzeyi 26) yayın alıcıları için yeni sınırlamalar getirdiğinden, dolaylı yayın amaçları için kayıtlı olan tüm yayın alıcılarını kaldırmanız gerekir. Bunları yerinde bırakmak, uygulamanızı derleme zamanında veya çalışma zamanında kesintiye uğratmaz ancak Android 8.0 üzerinde çalıştığında herhangi bir etkisi olmaz.
Açık yayın amaçları (yalnızca uygulamanızın yanıt verebileceği) Android 8.0'da aynı şekilde çalışmaya devam eder.
Bu yeni kısıtlamanın istisnaları vardır. Android 8.0'ı hedefleyen uygulamalarda çalışmaya devam eden örtülü yayınların listesi için Dolaylı Yayın İstisnaları bölümüne bakın.
Android 8.0 uygulamanızı test etme
Yukarıdaki hazırlıklar tamamlandıktan sonra uygulamanızı derleyip Android 8.0'ı (API düzeyi 26) hedeflerken düzgün çalıştığından emin olmak için daha ayrıntılı testler yapabilirsiniz. Temel Uygulama Kalitesi Yönergeleri ve Test İçin En İyi Uygulamaları incelemek için yine iyi bir zamandır.
Uygulamanızı targetSdkVersion
26 değerine ayarlı olarak geliştirirken dikkat etmeniz gereken belirli platform değişiklikleri vardır. Bu değişikliklerden bazıları, Android 8.0'da yeni özellikler uygulamasanız bile uygulamanızın davranışını önemli ölçüde etkileyebilir, hatta uygulamanızı tamamen bozabilir.
Tablo 2'de, bu değişikliklerin bir listesi ve daha fazla bilgi için bağlantılar verilmiştir.
Tablo 2. targetSdkVersion
26 olarak ayarlandığında uygulamaları etkileyen önemli değişiklikler.
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ımını desteklemez. | Davranış Değişiklikleri: Gizlilik |
Yazılabilir ve Yürütülebilir Segmentler Zorunlu Kılındı | Android 8.0 (API düzeyi 26), yerel kitaplıklarda verilerin yürütülememesi 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ığı ve bölüm üst bilgilerindeki daha fazla değeri kontrol eder ve geçersizse 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 yayınlamak için bir veya daha fazla bildirim kanalı uygulamalıdır. | API'ye Genel Bakış: Bildirimler |
List.sort() yöntemi
|
Bu yöntemin uygulanması artık Collections.sort() yöntemini çağıramaz veya uygulamanız yığın taşması nedeniyle bir istisna atar.
|
Davranış Değişiklikleri: Koleksiyon işleme |
Collections.sort() yöntemi
|
Liste uygulamalarında, Collections.sort() artık bir ConcurrentModificationException hatası veriyor.
|
Davranış Değişiklikleri: Koleksiyonları işleme |
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 konusuna bakın.
Android 8.0 (API seviyesi 26) ile kullanılabilen yeni özellikleri ve API'leri keşfetmek için Android 8.0 Özellikleri ve API'leri bölümüne bakın.