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 yapmanız 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 cihazınızı 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 görüntüsünü edinin; Pixel cihazlardaki 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ında Google API'leri Intel x86 Atom Sistem Görüntüsü olarak listelenir.

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 bölümüne 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 davranış şeklini etkileyebileceği için bazı ayarlamalar yapılması gerekebilir ancak yeni API'ler kullanmanız veya targetSdkVersion öğenizi değiştirmeniz gerekmez.

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

Uyumluluk testi yapma

Genel olarak, Android 9 ile uyumluluk testi, uygulamanızı yayınlamaya hazırlanırken yaptığınız test türünü gerektirir. Bu, Temel Uygulama Kalitesi Yönergeleri'ni ve Testlerle İlgili En İyi Uygulamaları incelemek için iyi bir zamandır.

Ancak testin bir yönü daha var: Android 9'un Android platformunda, targetSdkVersion değiştirmeseniz bile uygulamanızın davranışını etkileyebilecek veya uygulamayı tamamen bozabilecek değişiklikler vardı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 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ıma üzerinden, belirli SDK olmayan arayüzlere erişim artık engellenmektedir. Kısıtlanmış arayüzlere erişim denemeleri 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ıyı kaldırma Crypto JCA sağlayıcısı, Android 9 sürümünden itibaren kaldırılmıştır. SecureRandom.getInstance("SHA1PRNG", "Crypto") numaralı telefona yapılan aramalar NoSuchProviderException hatası verir.
Daha katı 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.
Boşta kalma uygulamalarının kameraya, mikrofona ve sensörlere erişim engellendi Uygulamalar boşta kaldığında artık kamera, mikrofon veya SensorManager sensörlerine erişemez.

Android 9'da çalışan tüm uygulamalarla ilgili davranış değişikliklerinin daha kapsamlı bir listesi 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, yeni API'ler sunmanın yanı sıra targetSdkVersion cihazınızı 28'e güncellediğinizde bazı davranış değişiklikleri de sunar. Bazı davranış değişikliklerinin bozulmasını önlemek için kod değişikliği gerektirmesi nedeniyle, ö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 Android 9 ile uygulamanızı 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ı derleyip Android 9'u (API düzeyi 28) 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 P'ye ayarlı olarak derlerken dikkat etmeniz 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, 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 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 izni istemesi gerekir. Bu normal bir izin olduğundan sistem, bunu istekte bulunan uygulamaya otomatik olarak verir. İzin olmadan ön plan hizmeti başlatıldığında SecurityException atılır.
Bouncy Castle şifrelerinin kullanımdan kaldırılması Android 9, Bouncy Castle sağlayıcısından gelen bazı şifreleri kullanımdan kaldırıp yerine Conscrypt sağlayıcısının sağladıkları şifreler sunar. Bouncy Castle sağlayıcısını isteyen getInstance() çağrıları NoSuchAlgorithmException hatası oluşturuyor. Hataları çözmek için getInstance() işlevinde bir sağlayıcı belirtmeyin (yani varsayılan uygulamayı isteyin).
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 paketinde başka bir API 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ına sahip uygulama başına SELinux korumalı alanlarını uygular. Başka bir uygulamanın veri dizinine yol bazında doğrudan erişime artık izin verilmemektedir. Uygulamalar, FD'lerin iletilmesi de dahil olmak üzere IPC mekanizmalarını kullanarak veri paylaşmaya devam edebilir.

Android 9'u hedefleyen uygulamalarla ilgili davranış değişikliklerinin daha kapsamlı bir listesi 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 konusuna bakın.