Uygulamaları Android 9'a Taşıma

Android 9 (API düzeyi 28), uygulamalarınızda yararlanabileceğiniz yeni özellikler ve API'lerin yanı sıra yeni davranış değişiklikleri sunar. Bu dokümanda, uygulamalarınızı Android 9'a iki temel aşamada taşıma adımlarına genel bir bakış sunulmaktadır:

  1. Android 9 ile temel uyumluluğu sağlama

    Mevcut 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 yapılması gerekebilir.

  2. Yeni platformu hedefleyin, Android 9 SDK'sı ile derleme yapın ve Android 9 özellikleriyle derleyin

    Platformun yeni özelliklerinden yararlanmaya hazır olduğunuzda targetSdkVersion öğenizi 28 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 9 çalıştıran bir cihazı hazırlama

Uyumlu bir cihazınız varsa üreticiden cihazınızın Android 9 sistem resmini edinin. Pixel cihazların fabrika resimleri için burayı tıklayın. Sistem görüntüsü yüklemeyle ilgili genel talimatları burada bulabilirsiniz.

Android Emülatör için Android 9 sistem görüntüsünü de indirebilirsiniz. SDK Yöneticisi'nde Android API 28 altındaki Google API'leri Intel x86 Atom Sistem Görüntüsü olarak listelenmiştir.

Not: Android 9 emülatörü sistem görüntüsü, Android Studio 3.1 ve sonraki sürümlerde indirilebilir. Android Studio 3.2 maksimum uyumluluk sağlar. Daha fazla bilgi için Android 9 SDK'sını edinme konusuna bakın.

Android 9 ile uyumluluğu sağlama

Buradaki amaç, mevcut uygulamanızın Android 9'da olduğu gibi çalışmasını sağlamaktır. Bazı platform değişiklikleri uygulamanızın çalışma şeklini etkileyebileceği için bazı ayarlamalar yapmanız gerekebilir ancak yeni API'ler kullanmanız veya targetSdkVersion öğenizi değiştirmeniz gerekmez.

Adım adım olarak Android 9 ile uyumluluğu sağlama

Uyumluluk testi yapma

Çoğunlukla, Android 9 ile uyumluluğun test edilmesi, uygulamanızı yayınlamaya hazırlanırken yaptığınız test türünü gerektirir. Bu, Temel Uygulama Kalitesi Yönergeleri'ni ve Test İçin En İyi Uygulamaları incelemek için iyi bir zamandır.

Ancak testin bir yönü daha vardır: Android 9'da, Android platformunda yapılan değişiklikler, targetSdkVersion üzerinde değişiklik yapmasanız bile uygulamanızın davranışını etkileyebilir veya uygulamayı tamamen bozabilir. Bu nedenle, Tablo 1'deki önemli değişiklikleri incelemeniz ve bu değişikliklere uyum sağlamak için uyguladığınız düzeltmeleri test etmeniz önemlidir.

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

Değişim Özet
SDK olmayan arayüzlerle ilgili kısıtlamalar Doğrudan, JNI veya yansıtma aracılığıyla belirli SDK olmayan arayüzlere erişim artık engellenmektedir. Kısıtlanmış arayüzlere erişme girişimleri, NoSuchFieldException ve NoSuchMethodException gibi hatalar üretir. Ayrıntılar için SDK olmayan arayüzlerle ilgili kısıtlamalar bölümüne bakın.
Kripto sağlayıcı kaldırıldı Crypto JCA sağlayıcısı, Android 9 sürümünden itibaren kaldırılmıştır. SecureRandom.getInstance("SHA1PRNG", "Crypto") numarasına yapılan aramalar NoSuchProviderException sonucunu döndürür.
Daha sıkı UTF-8 kod çözücü Android 9'da, Java dili için UTF-8 kod çözücü daha katıdır ve Unicode standardına uyar.
Aktif olmayan uygulamaların kamera, mikrofon ve sensörlere erişimi engellendi Boştaki uygulamalar artık kamera, mikrofon veya SensorManager sensörlerine erişemez.

Android 9'da çalışan tüm uygulamalardaki davranış değişikliklerinin daha kapsamlı bir listesini görmek için Davranış Değişiklikleri dokümanına bakın.

Hedef sürümünüzü güncelleyin ve Android P özelliklerini kullanın

Bu bölümde, targetSdkVersion cihazınızı 28 sürümüne güncelleyip Android 9'da sunulan yeni özellikleri ekleyerek Android 9 için tam desteği nasıl etkinleştireceğiniz açıklanmaktadır.

Android 9, size yeni API'ler sunmanın yanı sıra targetSdkVersion sürümünüzü 28 olarak güncellediğinizde bazı davranışlarda değişiklikler yapar. Bazı davranış değişiklikleri, bozulmayı önlemek için kod değişikliği gerektirebileceğinden öncelikle Android 9'u hedefleyen uygulamalar için 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 9'a hedeflemek için ön koşuldur. Bu nedenle, önce bu adımları tamamladığınızdan emin olun.

Hedef sürümü güncelleme ve Android 9 özelliklerini adım adım kullanma

Android 9 SDK'sını edinin

Android Studio 3.1 veya sonraki sürümleri kullanarak uygulamanızı Android 9 ile oluşturmak için SDK paketlerini alabilirsiniz. Henüz Android 9'daki yeni özelliklere ihtiyacınız yoksa ve yalnızca platformun bu sürümüne göre derleme yapmak istiyorsanız Android Studio 3.1'i kullanabilirsiniz. Android Studio 3.2, Android 9 özellikleri için tam destek sağlar.

Android 9 uygulamanızı test etme

Yukarıdaki hazırlıklar tamamlandıktan sonra, uygulamanızı derleyebilir ve ardından Android 9'u (API düzeyi 28) hedeflerken düzgün çalıştığından emin olmak için daha ayrıntılı test edebilirsiniz. Temel Uygulama Kalitesi Yönergeleri ve Test İçin En İyi Uygulamaları incelemek için de iyi bir zaman.

targetSdkVersion değeri P'ye ayarlı olarak uygulamanızı geliştirirken bilgi sahibi olmanız gereken belirli platform değişiklikleri vardır. Bu değişikliklerden bazıları, Android 9'da yeni özellikler uygulamasanız bile uygulamanızın davranışını önemli ölçüde etkileyebilir ve hatta uygulamanızı tamamen bozabilir.

Tablo 2'de, bu değişikliklerin bir listesi ve daha fazla bilgiye yönlendiren bağlantılar sunulmuştur.

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

Değişim Özet
Ön plan hizmeti izni Ön plan hizmetlerini kullanmak isteyen uygulamaların artık önce FOREGROUND_SERVICE iznini istemesi gerekir. Bu normal bir izin olduğundan sistem, bunu istekte bulunan uygulamaya otomatik olarak verir. İzin olmadan ön plan hizmetinin başlatılması bir SecurityException hatası verir.
Bouncy Castle şifrelerinin kullanımdan kaldırılması Android 9, Bouncy Castle sağlayıcısından gelen ve onun yerine Conscrypt sağlayıcısının sunduğu birkaç şifreyi kullanımdan kaldırır. Bouncy Castle sağlayıcısından getInstance() istekte bulunan çağrılar NoSuchAlgorithmException hataya neden oluyor. Hataları çözmek için getInstance() işlevinde sağlayıcı belirtmeyin (yani varsayılan uygulamayı istemeyin).
Build.serial öğesine doğrudan erişimin kaldırılması Build.serial tanımlayıcısına ihtiyaç duyan uygulamalar artık READ_PHONE_STATE iznini istemeli ve ardından Android 9'da eklenen yeni Build.getSerial() yöntemini kullanmalıdır.
WebView veri dizininin paylaşılmasına izin verilmiyor Uygulamalar artık işlemler arasında tek bir WebView veri dizinini paylaşamaz. Uygulamanızda WebView, CookieManager veya android.webkit paketindeki başka herhangi bir API'yi kullanan birden fazla işlem varsa ikinci işlem bir WebView yöntemini çağırdığında uygulamanız kilitlenir.
Uygulamanın veri dizinine erişim SELinux tarafından engellendi Sistem, her uygulamanın özel veri dizininde uygulama başına SELinux kısıtlamaları içeren uygulama başına SELinux korumalı alanları uygular. Başka bir uygulamanın veri dizinine yol bazında doğrudan erişime artık izin verilmemektedir. Uygulamalar, IPC mekanizmalarını kullanarak (FD iletme dahil) veri paylaşmaya devam edebilir.

Android 9'u hedefleyen uygulamalarla ilgili davranış değişikliklerinin daha kapsamlı bir listesini görmek için Davranış Değişiklikleri dokümanına bakın.

Android 9'da kullanıma sunulan yeni özellikleri ve API'leri keşfetmek için Android 9 Özellikleri ve API'leri sayfasına bakın.