Uygulamaları Android 9'a Taşıma

Android 9 (API düzeyi 28) kullanıma sunulan yeni özellikler ve API'ler, yararlanabileceğiniz yeni davranış değişikliklerini de içerir. Bu belgede, uygulamalarınızı Android 9'a taşımak için uygulamanız gereken iki temel aşamaya genel bir bakış sunulmaktadır:

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

    Mevcut uygulamanızın platformun yeni sürümünde tam olarak çalıştığını doğrulayın. Bu aşamada yeni API'ler kullanmıyor veya uygulamanızın targetSdkVersion değerini değiştirmiyorsunuz ancak küçük değişiklikler yapmanız gerekebilir.

  2. Yeni platformu hedefleme, Android 9 SDK'sı ile derleme ve Android 9 özellikleriyle derleme

    Google Cloud'un yeni özelliklerinden yararlanmaya platformu, targetSdkVersion uygulamasını 28 olarak 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 9 çalıştıran bir cihazı hazırlama

Uyumlu bir cihazınız varsa Cihazınız için üreticiden Android 9 sistem görüntüsü; için burayı tıklayın fabrika resimlerini Pixel cihazlar. için genel talimatlar yanıp sönen sistem görüntülerine buradan ulaşabilirsiniz.

Android Emulator için Android 9 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 API 28.

Not: Android 9 emülatör sistem resmi, 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 başlıklı makaleyi inceleyin.

Android 9 ile uyumluluk sağlama

Buradaki amaç, mevcut uygulamanızın şu anki haliyle çalışmasını sağlamaktır Android 9 Bazı platform değişiklikleri, uygulamanızın davranışını etkileyebileceğinden bazı düzenlemeler yapmanız gerekebilir ancak yeni API'ler kullanmanız veya targetSdkVersion'nizi değiştirmeniz gerekmez.

Adım adım açıklamalı Android 9 ile uyumluluğu sağlayın

Uyumluluk testi yapma

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

Ancak testin başka bir yönü de vardır: Android 9, Android platformunda targetSdkVersion değerinizi değiştirmeseniz bile uygulamanızın davranışını etkileyebilecek veya uygulamayı tamamen bozabilecek değişiklikler yapar. 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 9 cihazlarda yüklü olan telefonlar.

Değişim Özet
SDK olmayan arayüzlerle ilgili kısıtlamalar Doğrudan, JNI aracılığıyla veya yansıma yoluyla olsun, SDK olmayan belirli arayüzlere erişim artık engellenmektedir. Kısıtlanmış arayüzlere erişmeye çalışıldığında aşağıdakiler gibi hatalar ortaya çıkar: NoSuchFieldException ve NoSuchMethodException. Bkz. Kısıtlamalar SDK dışı arayüzlerdeki işlemler başlıklı makaleye göz atın.
Kripto sağlayıcı kaldırıldı Android 9'dan itibaren Crypto JCA sağlayıcısı kaldırıldı. Aramalar varış noktası: SecureRandom.getInstance("SHA1PRNG", "Crypto") NoSuchProviderException atacak.
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.
Boşta kalan uygulamaların kamera, mikrofon ve sensörlere erişimi engellendi Uygulamalar boştayken artık kamera, mikrofon veya SensorManager sensörlerine erişemez.

Android 9'da çalışan tüm uygulamalarda yapılan davranış değişikliklerinin daha kapsamlı bir listesi için Davranış Değişiklikleri belgesine bakın.

Hedef sürümünüzü güncelleme ve Android P özelliklerini kullanma

Bu bölümde, targetSdkVersion sürümünüzü 28'e güncelleyerek ve Android 9'da kullanılabilen yeni özellikleri ekleyerek Android 9 için tam desteğin nasıl etkinleştirileceği açıklanmaktadır.

Android 9, size yeni API'ler sunmanın yanı sıra bazı davranışlar da targetSdkVersion sürümünüzü 28'e güncellediğinizde değişecektir. Bazı davranış değişiklikleri, uygulamanızın çalışmasını engellememek için kod değişiklikleri gerektirebileceğinden, targetSdkVersion değerini değiştirdiğinizde uygulamanızın nasıl etkilenebileceğini anlamak için öncelikle Android 9'u hedefleyen uygulamalar için davranış değişikliklerinin tümünü inceleyin.

Not: Aşağıdaki adımları izleyerek platform uyumluluğunu sağlayın: Dolayısıyla, öncelikle 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ı edinme

Android Studio 3.1 veya sonraki sürümleri kullanarak uygulamanızı Android 9 ile derlemek için SDK paketlerini edinebilirsiniz. Android 9'daki yeni özelliklere henüz ihtiyacınız yoksa ve yalnızca platformun bu sürümüne göre derlemek 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 Böylece, Android 9'u hedeflerken düzgün şekilde çalışmasını sağlayabilirsiniz. (API düzeyi 28). Bu, kampanya performansını incelemek için Temel Uygulama Kalite Yönergeleri ve En İyi Test Uygulamaları.

Uygulamanızı targetSdkVersion değeri P olarak ayarlayarak oluşturduğunuzda dikkat etmeniz gereken belirli platform değişiklikleri vardır. Bu değişikliklerin bazıları, Android 9'da yeni özellikler uygulamasanız bile uygulamanızın davranışını önemli ölçüde etkileyebilir veya uygulamanızı tamamen bozabilir.

Tablo 2'de, daha fazla bilginin bağlantılarını içeren bu değişikliklerin listesi 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 iznini istemesi gerekiyor. Bu normal bir izin olduğundan sistem, istekte bulunan uygulamaya otomatik olarak verir. İzin olmadan ön plan hizmeti başlatıldığında SecurityException hatası oluşur.
Bouncy Castle şifrelerinin desteğinin sonlandırılması Android 9, Bouncy Castle'ın sağlayıcısından gelen birkaç şifreyi kullanımdan kaldırarak bunların lehine sonuçlanıyor Conscrypt sağlayıcısı tarafından sağlanır. getInstance() için yapılan aramalar Bouncy isteğinde bulun Kale sağlayıcı NoSuchAlgorithmException hata oluşturuyor. Hataları gidermek için getInstance() işlevinde bir sağlayıcı belirtin (yani, varsayılan uygulamayı isteyin).
Build.serial'e doğrudan erişim kaldırıldı Build.serial tanımlayıcısına ihtiyaç duyan uygulamalar artık READ_PHONE_STATE isteğinde bulunmalıdır. izninin ardından Android 9'a eklenen yeni Build.getSerial() yöntemini kullanın.
WebView veri dizininin paylaşılmasına izin verilmez Uygulamalar artık işlemler arasında tek bir WebView veri dizinini paylaşamaz. Uygulamanızda WebView, CookieManager veya android.webkit paketindeki başka bir API kullanan birden fazla işlem varsa ikinci işlem bir WebView yöntemi çağırdığında uygulamanız kilitlenir.
Uygulamanın veri dizinine erişim SELinux tarafından engellendi Sistem, uygulama başına SELinux korumalı alanlarını uygular ve her birinde uygulama başına SELinux kısıtlamaları uygulanır uygulamanın gizli veri dizini. Başka bir uygulamanın veri dizinine yola göre doğrudan erişmeye artık izin verilmiyor. Uygulamalar, FD'leri iletmek de dahil olmak üzere IPC mekanizmalarını kullanarak veri paylaşmaya devam edebilir.

Android 9'u hedefleyen uygulamalarda davranış değişikliklerinin daha kapsamlı bir listesi için Davranış Değişiklikleri belgesine bakın.

Android 9'da sunulan yeni özellikleri ve API'leri keşfetmek için Android 9 Özellikleri ve API'leri başlıklı makaleyi inceleyin.