Android 8.0'a Taşıma

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 uygulayacağız:

  1. 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.

  2. 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.

Adım adım Android 8.0 ile uyumluluğu sağlayın

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ı kullanıma sunmaya hazırlanırken gerçekleştirdiğiniz test türünü de 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.

Tablo 1. Tüm uygulamaları etkileyen önemli değişiklikler Android 8.0 cihazlarda çalışan

Değişim Özet Diğer referans
Arka planda konum güncellemeleri daha seyrek Uygulamanız bir arka plan hizmetinden konum güncellemeleri 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.

Hedef sürümü güncelleyin ve Android 8.0 özelliklerini adım adım kullanın

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:

  1. Android Studio'yu başlatın ve şunu tıklayarak SDK Yöneticisi'ni açın: Araçlar > SDK Yöneticisi'ne gidin.
  2. 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)
  3. 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
  4. 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, proje kapsamını incelemek ve 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üklemeseniz bile, daha fazla bilgi edineceksiniz.

Tablo 2'de bu değişikliklerin bir listesi ve daha fazla bilgi edinebileceğiniz bağlantılar verilmiştir.

Tablo 2. Uygulamaları etkileyen önemli değişiklikler targetSdkVersion 26 olarak ayarlandığında.

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, 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.