Android 12'de Compatibility API


Görsel Referansı


Android dünyası, Android 12'nin duyurulmasıyla birlikte büyük bir ivme kazandı. Özellikle yeni duyurulan özellikler geliştiricilerin yüzünü güldürdü. Bu yazımızda Android 11 ile duyurulan ve Android 12 ile daha da büyüyen Compatibility kütüphanesini inceleyeceğiz.


Compatibility kütüphanesi, uygulamanın Android versiyonları ile uyumluluğunu test etmemizi sağlayan araçtır. Uygulama geliştirme sürecini kolaylaştıracak bu araç sayesinde mevcut uygulamalarımızın yeni Android versiyonları ile uyumluluğunu test edebiliriz. Bunu yaparken uygulamanın Android SDK versiyonunu değiştirmeden uygulamanın davranışını demo edebiliriz. Uygulamanın kaynak kodunu değiştirmeden, uygulamayı yeni Android versiyonu ile test etmek işlerimizi kolaylaştıracak ve geliştiricileri hızlandıracaktır. Buradaki asıl amaç, uygulamanın farklı Android versiyonlarında, özellikle yeni çıkan versiyonlarla, mükemmel şekilde çalışmasından emin olmaktır.


⚠️ Sadece debug ve test ortamlarında debuggable uygulamalar ile kullanımı uygundur.

İlk duyurulduğunda yaklaşık 36 değiştirilebilir (toggleable) özellik ile gelen Compatibility kütüphanesi, yeni versiyonda bu sayıyı 53'e kadar çıkardı. Bu özellikleri ve uygulamanın davranış değişikliklerini geliştirici seçenekleri veya ADB komut satırı aracını kullanarak test edebiliriz.


Geliştiri Seçenekleri ile Uyumluluk Yönetimi


Geliştiri seçenekleri üzerinden uyumluluk yönetimi için, geliştirici seçeneklerine eklenen “Uygulama Uyumluluğuyla İlgili Değişiklikler” sayfasındaki listeden uygulamamızı seçerek değişiklikleri yapabiliriz.


ADB Komutları ile Uyumluluk Yönetimi


  • ADB komutları üzerinden uyumluluk yönetimi için, aşağıdaki shell komutu ile bütün uygulamalara ait değişiklikleri tanımlı id’ler üzerinden görebiliriz.


Change ID: Uygulamayı etkileyen değişikliği gösterir. Name: Uygulamayı etkileyen değişikliğin adını gösterir. targetSDKVersion: Değişikliğin hangi Android versiyonu ile desteklenmeye başladığını gösterir. Package overrides: Değişiklik açıldığıysa “true”, kapatıldıysa “false” gösterilir.


⚠️ Target SDK versiyonunu tanımlamak için kullanılan enableAfterTargetSdk, enableSinceTargetSdk olarak güncellenmiştir.

ADB komutları ile yapmak istediğimiz değişiklikleri ‘change id’ ve ‘change name’ kullanarak yapabiliriz.



# adb shell am compat enable|disable|reset (CHANGE_ID