Android 8.0 (API düzeyi 26), davranış değişikliklerinin yanı sıra kullanabileceğiniz bazı yöntemleri inceleyelim. Bu dokümanda taşıma adımlarına genel bir bakış sunulmaktadır Uygulamalarınızı Android 8.0'a iki temel aşamada tamamlamanız gerekir:
- 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 kullanmıyorsunuz veya uygulamanızın
targetSdkVersion
ayarını değiştirmiyorsunuz, ancak küçük değişiklikler var gerekebilir. - Hedef sürümünüzü güncelleme ve Android 8.0 özelliklerini kullanma
Google Cloud'un yeni özelliklerinden yararlanmaya platformu,
targetSdkVersion
sürümünü 26'ya güncelleyin, uygulamanın devam ettiğini doğrulayın düzgün şekilde çalışmasını sağlayı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'daki gibi çalışmasını sağlamaktır.
(API düzeyi 26). Bazı platform değişiklikleri uygulamanızın çalışma biçimini etkileyebileceği için
bazı ayarlamalar yapmanız gerekebilir, ancak yeni API'ler veya
targetSdkVersion
değiştirin.
Android 8.0 çalıştıran bir cihazı hazırlama
- Uyumlu bir cihazınız (Pixel, Pixel XL, Pixel C, Nexus 5X, Nexus 6P veya Nexus) varsa oynatıcıya gidip aşağıdaki adımları izleyin: talimatları kullanın.
- İsterseniz Android Emülatör için Android 8.0 sistem görüntüsünü de indirebilirsiniz. Bu liste
SDK Yöneticisi
Google API'leri Intel x86 Atom Sistem Görüntüsü olarak Android 8.0.
Not: Android 8.0 sistem görüntüsünü şuradan indirebilirsiniz: Android Studio 3.0 ve sonraki sürümler. Daha fazla bilgi için Android 8.0 SDK'sını edinme ile ilgili aşağıdaki bölüme 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 gerçekleştirdiğiniz test türünü kapsar. Bu, Temel Uygulama Kalitesi Yönergeleri'ni ve Test İçin En İyi Uygulamaları incelemek için iyi bir zamandır.
Bununla birlikte, test etmenin başka bir yönü vardır: Android 8.0, Android'de bazı değişiklikler sunmaktadır.
platformu değiştirmeseniz bile uygulamanızın davranışını etkileyebilecek veya uygulamanın çalışmasını tamamen bozabilecek
targetSdkVersion
. Bu nedenle, sitenizdeki önemli değişiklikleri,
ve değişiklikleri karşılamak için uyguladığınız düzeltmeleri test edin.
Değişim | Özet | Diğer referans |
---|---|---|
Arka planda konum güncellemeleri daha seyrek | Uygulamanız, konum güncellemelerini bir arka plan hizmetinden alırsa daha seyrek alır 8.0 (API düzeyi 26) sürümlerindeki güncellemelerle karşılaştırıldı. Özellikle, bir arka plan hizmeti, konum güncellemelerini saatte bir kaç defadan fazla alamıyor. Ancak, uygulaması ön plandaysa konum güncellemelerinin hızı değişmez. | Arka Planda Konum Sınırları |
net.hostname artık desteklenmiyor
|
net.hostname sistem özelliği sorgulandığında boş sonuç elde ediliyor.
|
Yok |
send(DatagramPacket) kaynağından yeni istisna |
send(DatagramPacket) yöntemi bir SocketException gönderir
daha önce yürütülen connect(InetAddress, int) yöntemi başarısız olursa.
|
Davranış Değişiklikleri: Ağ ve HTTP(S) bağlantısı |
Uygun NullPointerException -
AbstractCollection yöntem
|
AbstractCollection.removeAll(null) ve
AbstractCollection.retainAll(null) artık her zaman bir atış
NullPointerException ;
daha önce koleksiyon boşken NullPointerException atılmıyordu.
Bu değişiklik, davranışın belgelerle tutarlı olmasını sağlar.
|
Davranış Değişiklikleri: Toplama işleme |
Uygun NullPointerException -
Currency.getDisplayName(null)
|
Currency.getDisplayName(null) aranıyor
NullPointerException atıyor.
|
Davranış Değişiklikleri: Yerel ayarlar ve uluslararasılaştırma |
Android 8.0'daki davranış değişikliklerinin daha kapsamlı bir listesi için (API düzeyi 26), ayrıca Android 8.0 Davranış Değişiklikleri bölümüne bakın.
Hedef sürümünüzü güncelleme ve Android 8.0 özelliklerini kullanma
Bu bölümde, Android 8.0 için tam desteğin nasıl etkinleştirileceği açıklanmaktadır.
targetSdkVersion
sürümünüzü 26 olarak güncelleyerek (API düzeyi 26)
ve Android 8.0'da kullanıma sunulan yeni özellikler ekledik.
Android 8.0, size yeni API'ler sunmanın yanı sıra bazı davranışlar da
targetSdkVersion
sürümünüzü 26 olarak güncellediğinizde değişecektir. Bazı davranışlar değiştiğinden
kesintileri önlemek için kod değişikliği
yapmanız gerekebilir. Öncelikle uygulamanızın
Android 8.0'ı hedefleyen uygulamalara ilişkin tüm davranış değişikliklerini inceleyerek targetSdkVersion
ayarını değiştirdiğinizde etkilenecek.
Not: Aşağıdaki adımları izleyerek platform uyumluluğunu sağlayın: Dolayısıyla, önce bu adımları tamamladığınızdan emin olun.
Android 8.0 SDK'sını edinin
Uygulamanızı Android 8.0 ile geliştirmek için SDK paketlerini edinebilirsiniz (API düzeyi 26) şunu kullanarak: Android Studio (Android Studio 3.0 ve sonraki sürümler önerilir). Android Studio 3.0+, Android 8.0 özellikleri konusunda size yardımcı olacak araçlar içerir Örneğin, uyarlanabilir simgeler ve indirilebilir yazı tipleri. Bu özelliklere henüz ihtiyacınız yoksa Android Studio'nun kararlı sürümünü kullanabilirsiniz 2.3.3 sürümünü kullanarak uygulamanızı Android 8.0 ile oluşturun ve yeni API'leri kullanın.
Android Studio'nun her iki sürümünde de kurulum yapmak için aşağıdaki adımları uygulayın:
- Android Studio'yu başlatın ve şunu tıklayarak SDK Yöneticisi'ni açın: Araçlar > SDK Yöneticisi'ne gidin.
- SDK Platformları sekmesinde Paket Ayrıntılarını Göster'i işaretleyin. Şunun altında:
Android 8.0 Önizlemesi aşağıdakileri kontrol eder:
- 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 gidip güncellemesi olan tüm öğeleri kontrol edin (
tire gösteren her onay kutusunu tıklayın). Bu, aşağıdaki öğelerin en son sürümlerini içermelidir
şunlardır:
- Android SDK Derleme Araçları 26.0.0
- Android SDK Platform Araçları 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
uygulamasını güncelle,
targetSdkVersion
ve Destek Kitaplığı sürümünü en son sürüme güncelleyin
kullanılabilir düzeltmeler, ö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
Çünkü Android 8.0 (API düzeyi 26), sınırlamalar Yayın alıcıları için geçerli bir e-posta adresi kullanıyorsanız dolaylı yayın amaçlarına kayıtlı olmalıdır. Bunların yerinde bırakılması uygulamanızı bozmaz atlar ancak uygulamanız Android 8.0'da çalıştırıldığında herhangi bir etkisi olmaz.
Yalnızca uygulamanızın yanıt verebileceği yayınlar: Uygunsuz yayın amaçları ve özellikle uygulamanızın paket adına gönderilen yayınlar. Aynı çalışmaya devam etmek için Android 8.0
Bu yeni kısıtlamanın istisnaları vardır. Örneğin, 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 Ayrıca, Android 8.0 hedeflendiğinde düzgün çalıştığından emin olmak için (API düzeyi 26). Bu, kampanya performansını incelemek için Temel Uygulama Kalite Yönergeleri ve En İyi Test Uygulamaları.
Uygulamanızı targetSdkVersion
değeri 26 olacak şekilde derlediğinizde,
bilmeniz gereken belirli platform değişiklikleri var. Bazı
bu değişiklikler uygulamanızın davranışını önemli ölçüde etkileyebilir
yeni bir uygulama yüklememiş olsanız bile, uygulamanızın
daha fazla bilgi edineceksiniz.
Tablo 2'de bu değişikliklerin bir listesi ve daha fazla bilgi edinebileceğiniz bağlantılar verilmiştir.
Değişim | Özet | Diğer referans |
---|---|---|
Gizlilik | Android 8.0 (API düzeyi 26), net.dns1, net.dns2, net.dns3 veya net.dns4 sistem özelliklerini içermelidir. | 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ıklar için şu kuralı uygular: veriler yürütülebilir ve kod da yazılabilir olmamalıdır. | Davranış Değişiklikleri: Yerel Kitaplıklar |
ELF başlığı ve bölüm doğrulaması | Dinamik bağlayıcı, ELF başlığında daha fazla değer kontrol eder. ve bölüm üstbilgileri ile 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 içerik yayınlamak için bir veya daha fazla bildirim kanalı uygulamalıdır bildirimleri ekleyebilirsiniz. | 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: Toplama işlemleri |
Collections.sort() yöntemi
|
Collections.sort() , Liste uygulamalarında artık bir
ConcurrentModificationException .
|
Davranış Değişiklikler: Toplama 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 bölümüne bakın.
Android 8.0 (API düzeyi 26) ile sunulan yeni özellikleri ve API'leri keşfetmek için bkz. Android 8.0 Özellikleri ve API'leri.