Uygulamaları Android’e Taşımak için Hızlı Geliştirici Kılavuzu 12 | by Sahil Sharma | Tem, 2022

Uygulamaları Android'e Taşımak için Hızlı Geliştirici Kılavuzu 12 |  by Sahil Sharma |  Tem, 2022

Uygulamanızı SplashScreen API, Yaklaşık Konum, PendingIntent Mutability ve çok daha fazlası için hazırlama…

fotoğrafı çeken Sebastian Bednarek üzerinde Sıçramayı kaldır

Google, Ekim 2021’de Android 12’yi (L) duyurdu ve Mart 2022’ye kadar Pixel telefonlardan başlayarak kararlı yapı piyasaya sürüldü ve kısa süre sonra diğer büyük markalar tarafından takip edildi.

Android 12, Gizlilik ve Performansa da odaklanan bazı büyük görsel ve kullanıcı deneyimi değişiklikleriyle birlikte gelir.

Google Play Store’un Kasım 2022’ye kadar tüm uygulamaları API Düzey 31’e (yani Android 12) hedefleyecek şekilde güncellemeye zorladığı ve hala birçoğunuzdan Android’e nasıl geçiş yapılacağına dair sorular aldığım için bu makalenin gerekli olduğunu düşündüm. 12, işte burada!

Bu makalede, önce önemli şeylerle hızlı bir şekilde başlayacağız ve daha sonra bahsetmeye değer bazı geliştirmeleri ve mevcut API’lerin ve özelliklerin kullanımdan kaldırılmasını gözden geçireceğiz.

Öyleyse, uygulamanızı Android 12’ye hedeflemek için yapmanız gereken tüm değişikliklere ve akılda tutulması gereken şeylere hızlıca geçelim.

Güvenli İhracat

Bildirimde herhangi bir bileşeni (Etkinlik, Hizmet ve Yayın Alıcısı gibi) tanımladığınızda, şöyle bir şey görmüş/kullanmış olmalısınız. "android:exported"

Varsayılan olarak bu öznitelik şu şekilde ayarlanmıştır: true, bu, bileşene uygulamanızın dışından erişilebileceği anlamına gelir. Örneğin, uygulamanızdaki bir etkinlik amaç filtreleri içeriyorsa, diğer uygulamaların onu başlatmasına izin vermek için bu öğeyi “true” olarak ayarlayın.

API 31’den itibaren şunları yapmanız gerekir: bu özniteliğe açıkça bir değer ayarla.

Genel bir kural şudur: Uygulama bileşeni şunları içeriyorsa: LAUNCHER kategori, küme android:exported ile true. Diğer çoğu durumda, ayarla android:exported ile false.

<service android:name="com.example.app.backgroundService"
android:exported="false">
<intent-filter>
<action android:name="com.example.app.START_BACKGROUND" />
</intent-filter>
</service>

Bunu yapmamak derleme zamanı verebilir:

Manifest merger failed : Apps targeting Android 12 and higher are required 
to specify an explicit value for android:exported when the corresponding
component has an intent filter defined.

hakkında daha fazla bilgi edinin Güvenli Bileşen Dışa Aktarma ve android:dışa aktarıldı

Bekleyen niyet değiştirilebilirliği

API seviyesi 31’den itibaren, her birinin değişebilirliğini belirtmeniz gerekecektir. PendingIntent uygulamanızın oluşturduğu nesne.

verildiğini beyan etmek PendingIntent nesne değiştirilebilir veya değişmezse, PendingIntent.FLAG_MUTABLE veya PendingIntent.FLAG_IMMUTABLE sırasıyla bayrak.

val updatedPendingIntent = PendingIntent.getActivity(
applicationContext,
NOTIFICATION_REQUEST_CODE,
updatedIntent,
PendingIntent.FLAG_IMMUTABLE or PendingIntent.FLAG_UPDATE_CURRENT
)

Bunu yapmamak, sistem bir IllegalArgumentException:

PACKAGE_NAME: Targeting S+ (version 31 and above) requires that one of 
FLAG_IMMUTABLE or FLAG_MUTABLE be specified when creating a PendingIntent.

Strongly consider using FLAG_IMMUTABLE, only use FLAG_MUTABLE if
some functionality depends on the PendingIntent being mutable, e.g. if
it needs to be used with inline replies or bubbles.

Yaklaşık Konum

Android 12’den başlayarak, kullanıcılar artık uygulamanız istediği zaman bile Kesin konum veya Yaklaşık Konum sağlamayı seçebilir. ACCESS_FINE_LOCATION çalışma zamanı izni.

Kullanıcıların gizliliğine saygı göstermek için şimdi her iki senaryoyu da ele almanız gerekecek, ancak uygulama kullanım durumunuz Kesin Konum gerektiren bir durumsa, aynısının kullanıcıya sorulduğundan ve uygulamanızda buna göre işlendiğinden emin olun. Devamını oku kesin konum için soran.

okumanı tavsiye ederim Konum İzinleri İstemeyle İlgili En İyi Uygulamalar.

SplashScreen API’si

Daha önce çoğumuz bir Aktivite kullanarak veya bir Aktivite üzerinde bir pencere teması ayarlayarak özel bir Açılış ekranları oluştururduk.

Daha önce Android 11 veya önceki sürümlerde özel bir açılış ekranı uyguladıysanız, uygulamanızı SplashScreen Android 12’den başlayarak doğru şekilde görüntülendiğinden emin olmak için API.

Android 11 çalıştıran cihazlarda bu bir sorun olmayacaktır ancak API seviyesini 31’i hedeflediyseniz ve yine de SplashScreen API’ye geçmediyseniz, sistem Android 12 cihazlarda bir Çalışma Zamanı İstisnası oluşturur.

Sistemin her zaman yeniyi uyguladığını da belirtmekte fayda var. Android sistem varsayılan açılış ekranı üzerinde soğuk ve sıcak başlangıçlar tüm uygulamalar için. Varsayılan olarak, bu sistem varsayılan açılış ekranı, uygulamanızın başlatıcı simgesi öğesi ve windowBackground temanızın (tek bir renkse).

Nasıl yapılacağı hakkında bilgi edinin mevcut Açılış ekranı uygulamanızı Android 12 veya sonraki bir sürüme taşıyın

hakkında daha fazla bilgi edinin Android Açılış Ekranları

Bonus: Yeni SplashScreen API’sinin yanı sıra şunları da kullanabilirsiniz: Uygulama Başlangıç ​​kitaplığı uygulama başlangıcında bileşenleri başlatmak için.

Tam alarm izni

Tam bir alarm oluşturmak için uygulamanızın, aşağıdaki pencerede görünen “Alarmlar ve hatırlatıcılar” özelliğine erişimi olması gerekir. Özel uygulama erişimi sistem ayarlarında ekran.

Bu özel uygulama erişimini elde etmek için, SCHEDULE_EXACT_ALARM manifestodaki izin.

Bunu yapmazsanız, sistem atar SecurityException.

Ancak buradaki önemli nokta, bu özel izni almak ve Google Play Store’dan onay almak için uygulamanızın aşağıdaki türden olması gerektiğidir:
1. Saat veya Zamanlayıcı uygulaması
2. Takvim veya Hatırlatma uygulaması

Web amacı çözünürlüğü

Android 12’den (API düzeyi 31) başlayarak, uygulamanızın Etkinliği artık genel web amaçlarına çözümlenemez, uygulamanız bu web amacını işlemek için onaylanana kadar sistem onları varsayılan tarayıcıya yönlendirir.

hakkında daha fazla bilgi edinin uygulamanız bu onayı nasıl alabilir?.

Ayrıca hakkında daha fazla bilgi edinin Uygulama Bağlantıları doğrulama değişiklikleri.

Şimdiye kadar, uygulamanızı Android 12’ye geçirmek için ihtiyaç duyduğunuz temel konuları ele aldık, ancak bilmeniz gereken birkaç şey var.

Kısıtlı Uygulama Bekleme Paketi

hakkında okuduk Uygulama Bekleme Paketleri önce, basitçe söylemek gerekirse, bu paketler, sistemin uygulamaların ne kadar yakın zamanda ve ne sıklıkta kullanıldığına bağlı olarak kaynakların isteklerine öncelik vermesine yardımcı olur.

Şimdi yeni bir Uygulama Bekleme Kovası tanıtıldı: Kısıtlı.

Belgelere göre, sistem, uygulamanızı kısıtlı kovaya yerleştirip yerleştirmemeye karar vermek için kullanım kalıplarına ek olarak uygulamanızın davranışını da dikkate alır. Uygulamanız sistem kaynaklarını daha sorumlu bir şekilde kullanıyorsa, uygulamanızın kısıtlı pakete alınma olasılığı daha düşüktür. Ayrıca, kullanıcı doğrudan uygulamanızla etkileşim kurarsa sistem uygulamanızı daha az kısıtlayıcı bir klasöre yerleştirir.

hakkında daha fazla bilgi edinin Kısıtlı Uygulama Bekleme Paketi.

Mikrofon ve kamera göstergeleri ve geçiş

Durum çubuğundaki Kamera ve Mikrofon göstergeleri. (Kaynak)

Tıpkı Apple ürünlerinde olduğu gibi, Android de artık cihazınızın Kamerası veya Mikrofonu kullanımdayken durum çubuğunda bir gösterge göreceğiniz bu özelliğe sahiptir.

Ayrıca, Android 12 veya sonraki sürümleri çalıştıran desteklenen cihazlar, kullanıcıların tek bir geçiş seçeneğine basarak cihazdaki tüm uygulamalar için kamera ve mikrofon erişimini etkinleştirmesine ve devre dışı bırakmasına olanak tanır.

hakkında daha fazla bilgi edinin daha hassas izinlere erişmek için en iyi uygulamalar.

Kök başlatıcı etkinlikleri artık Geri basıldığında bitmiyor

Aktiviteniz kök aktivite ise (yani görev yığınındaki son aktivite), geri düğmesine basıldığında öldürülmez, sadece arka plana alınır. Tıpkı ana sayfa düğmesine nasıl basıldığı gibi.

Bu değişiklik, uygulamanızdan çıkmak için Geri’yi kullanan kullanıcıların, uygulamanızı bir sıcak durumuygulamayı tamamen yeniden başlatmak yerine soğuk hal.

Ayrıca, aşağıdakiler için AndroidX Etkinlik API’lerinin kullanılması önerilir. özel geri navigasyon sağlamageçersiz kılmak yerine onBackPressed()

Okumak bu konuda daha fazlası.

Bouncy Castle uygulaması kaldırıldı

Android 12 birçok şeyi kaldırır Şişme kale Tüm AES algoritmaları dahil olmak üzere, daha önce kullanımdan kaldırılmış olan kriptografik algoritmaların uygulamaları. Sistem bunun yerine şifrele Bu algoritmaların uygulamaları.

Okumak bu konuda daha fazlası.

Display#getRealSize ve getRealMetrics : kullanımdan kaldırıldı

Aşağıdaki yöntemler kullanımdan kaldırıldı:

Bu yöntemler yerine Jetpack kullanılması önerilir. WindowManager içeren bir kütüphane, WindowMetrics Android 4.0’ı (API düzeyi 14) ve üstünü destekleyen sınıf.

Uygulamalar sistem iletişim kutularını kapatamaz

Android 12’den itibaren, sistem iletişim kutularını şu şekilde kapatamazsınız: ACTION_CLOSE_SYSTEM_DIALOGS niyet eylemi kullanımdan kaldırıldı. Bu amacı başlatmaya çalışırsanız, sistem basitçe bir SecurityException . Android 11 cihazlarda sistem amacı görmezden gelir.

Ancak birkaç özel durum vardır, Devamını oku değiştirmek.

Önerilerinizi bana bildirin ve Android 12’de önemli bir değişiklikten bahsetmeyi özlediğimi düşünüyorsanız.

Artık harika uygulamanızı Android 12’ye taşımak için her şeyi bildiğinize göre, ne bekliyorsunuz?

Bir dahaki sefere görüşürüz.

Teşekkürler!

Bir cevap yazın

E-posta hesabınız yayımlanmayacak.