Android O, Durum Çubuğunun Üstüne Yerleşen Uygulamaları Kırıyor

Android O, TYPE_SYSTEM_OVERLAY'i kullanımdan kaldırarak TYPE_APPLICATION_OVERLAY'i tercih etti; bu da durum çubuğunun üzerine yer paylaşımlı uygulamalar uygulanmasına neden oldu.

Kullanıcının karşılaştığı yeni özellikleri özetleyen çok sayıda gönderi Android Ç Kullanıcıların yazılımı cihazlarında test etmek için haftaları olduğu için artık yavaşlamaya başlıyor. Ancak, yavaş yavaş ortaya çıkan, arka planda yapılan pek çok değişiklik var. Geçen gün Android O çalıştıran Nexus ve Pixel cihazlarla ilgili böyle bir değişikliği yayınlamıştık. SDCardFS'yi benimsemek. Ancak bugün, belirli uygulamaların geliştiricilerini, özellikle de aşağıdakileri etkileyecek bir değişikliği tartışmak istiyoruz: durum çubuğunun üst kısmında yer paylaşımı. Görünüşe göre bu uygulamalar Android O Geliştirici Önizlemesinde bozukİlk bakışta basit bir hata olarak değerlendirebileceğiniz ancak referans belgelerin daha derinlerine indiğinizde bu amaçlanan değişiklik Google tarafından.


Android O Durum Çubuğu Kaplamalarını Kırıyor

Android ile ilgili en sevdiğim şeylerden biri ne kadar özelleştirilebilir olduğu. Root erişimi olan veya özel ROM'lar çalıştıran kullanıcılar, sistem durum çubuklarının temasını temelde hiçbir kısıtlama olmadan yerel olarak düzenleyebilirler, ancak cihazınız root edilmemişse, kullanabileceğiniz daha az seçenek vardır. Neyse ki, Google Play Store'da durum çubuğunun görünüşünü temel düzeyde değiştirmenize olanak tanıyan birçok uygulama var. Bu, mevcut durum çubuğunun üzerinde özel bir durum çubuğu görüntülemek için Sistem Yerleşimi Pencerelerinin akıllı bir kombinasyonu sayesinde mümkündür. Bildirimleri görüntülemek için Bildirim Dinleyicileri ve isteğe bağlı olarak özel içeriğin bağlamsal olarak renklendirilmesine izin veren bir Erişilebilirlik Hizmeti durum çubuğu.

Yukarıdaki iki ekran görüntüsü, Play Store'da bulunan birçok durum çubuğu kaplama uygulamasından birini kullanırken bildirim çubuğumun nasıl görüneceğini göstermektedir. Bu ekran görüntüleri, EMUI 5.0 çalıştıran, köklenmemiş bir Huawei Mate 9'da çekildi. EMUI'ye aşina olmayanlar için durum çubuğu yukarıdaki ekran görüntülerine hiç benzemiyor. Bunun yerine şöyle görünüyor:

Hisse senedi durum çubuğunuzun nasıl göründüğünü sorun etmiyorsanız, aşağıdaki gibi uygulamalar Durum veya Malzeme Durum Çubuğu Tanrının bir lütfudur. Ancak cihazınız Android O'ya güncellendiğinde veya güncellendiğinde bu uygulamalar artık çalışmayabilir. Aynı iki uygulamanın Android O Geliştirici Önizlemesini çalıştıran bir Google Pixel'de nasıl göründüğü:

Orijinal durum çubuğunu engelleyen kaplama yerine, kaplamaya benziyor örtüşmeler büyük bir karmaşaya neden olan orijinal durum çubuğuyla.

Maalesef bu, bu gibi uygulamaları etkili bir şekilde işe yaramaz hale getiriyor. Ve bundan etkilenenler yalnızca tipik durum çubuğu tema uygulamalarınız değil; durum çubuğunun üstünde bir yer paylaşımının gösterilmesini gerektiren tüm uygulamalar etkilenir.

İşe yaramaz hale gelebilecek bazı popüler uygulamaların listesi:

  • Durum (500.000 - 1.000.000 yükleme)
  • Malzeme Durum Çubuğu (1.000.000 - 5.000.000 yükleme)
  • Harika Araç - Sistem İstatistikleri (500.000 - 1.000.000 yükleme)
  • Telesine (50.000 - 100.000 yükleme)
  • Durum Çubuğunu Temizle (100.000 - 500.000 yükleme)
  • Tinycore (100.000 - 500.000 yükleme)

Ve çalışacak ancak artık durum çubuğunun üstüne yerleştirilemeyecek (önceki işlevleri kısıtlayan) bazı uygulamaların listesi:

  • Alacakaranlık (5.000.000 - 10.000.000 yükleme)
  • Dikkat et (100.000 - 500.000 yükleme)
  • Kaynak Monitörü Mini (50.000 - 100.000 yükleme)
  • Ağ Monitörü Mini (1.000.000 - 5.000.000 yükleme)

Play Store'da durum çubuğunun üstünde bir çeşit yer paylaşımı kullanan çok daha fazla uygulama var, ancak Böyle bir değişikliğin potansiyel olarak milyonlarca kişi tarafından kullanılan birçok uygulamayı etkileyeceğini şimdiden söyleyebiliriz. kullanıcılar. Peki burada neler oluyor?


TYPE_SYSTEM_OVERLAY Kullanımdan Kaldırılıyor

Android'in her yeni versiyonunda, Google çeşitli özellikleri hem tanıtmakta hem de kullanımdan kaldırmaktadır (modası geçmiş ve kaldırılacak olarak belirtmektedir). Bu sefer kesme bloğunda yer alan özellik TYPE_SYSTEM_OVERLAY. Alıntı yapmak için referans sayfası bu özelliğin geliştiricilere sundukları:

TYPE_SYSTEM_OVERLAY

Pencere türü: Her şeyin üstünde görüntülenmesi gereken sistem yer paylaşımı pencereleri. Bu pencereler giriş odağını almamalıdır, aksi takdirde tuş kilidine müdahale ederler. Çok kullanıcılı sistemlerde yalnızca sahibi olan kullanıcının penceresinde gösterilir.

Temelde bu pencere türü, bir uygulamanın durum çubuğu da dahil olmak üzere ekrandaki herhangi bir öğenin üzerine çizim yapmasına olanak tanır. Ancak Android O'dan başlayarak bu pencere türü kullanımdan kaldırıldı. Sistem dışı uygulamalar için Google, geliştiricilerin bunun yerine TYPE_APPLICATION_OVERLAY kullanmasını önerir. Alıntı yapmak için referans sayfası bu yeni pencere türünün yaptığı şey:

TYPE_APPLICATION_OVERLAY

Pencere türü: Uygulama yer paylaşımı pencereleri tüm etkinlik pencerelerinin üzerinde görüntülenir (arasındaki türler) FIRST_APPLICATION_WINDOW Ve LAST_APPLICATION_WINDOW) ancak durum çubuğu veya IME gibi kritik sistem pencerelerinin altında.

Sistem, kullanıcının görsel karmaşasını azaltmak ve aynı zamanda kaynakları yönetmek için bu pencerelerin konumunu, boyutunu veya görünürlüğünü istediği zaman değiştirebilir.

Sistem, düşük bellek öldürücünün işlemleri öldürme olasılığını azaltmak için bu pencere türüyle işlemlerin önemini ayarlayacaktır.

Çok kullanıcılı sistemlerde yalnızca sahibi olan kullanıcının ekranında gösterilir.

Gördüğünüz gibi bu yeni pencere türü, uygulamaların diğer tüm etkinlik pencerelerinin üzerine içerik yerleştirmesine olanak tanıyor hariç "durum çubuğu veya IME gibi kritik sistem pencereleri" (IME klavyeyi ifade eder). Bu, Facebook Messenger gibi uygulamalar için iyidir, çünkü bu uygulama tarafından sağlanan sohbet kafalarının durum çubuğunun üstünde durmasının hiçbir amacı yoktur, ancak bu, daha önce bahsettiğim uygulamaların çoğunu olumsuz yönde etkiler.

Ayrıca, şu anda geliştiricilerin kullanabileceği bir geçici çözüm yok gibi görünüyor. Android O'da bu sorunu önlemek için geliştiricilerin uygulamalarını SDK 25'i (Android 7.1.1) hedefleyecek şekilde geliştirmeleri beklenebilir. Ancak, belirtildiği üzere Reddit'te Durum geliştiricisi, Google'ın değiştirildi TYPE_APPLICATION_OVERLAY ile TYPE_SYSTEM_OVERLAY ve değişiklik: hedef SDK'dan bağımsız versiyon. TYPE_SYSTEM_OVERLAY kullanan geliştiricilerin uyumluluğu korumak için şu anda TYPE_APPLICATION_OVERLAY kullanması gerekiyor; dolayısıyla, belirli bir uygulamanın hangi hedef SDK sürümünü temel aldığına bakılmaksızın, artık Android O'da TYPE_SYSTEM_OVERLAY kullanılmıyor.


Bu konuda ne yapılabilir?

Henüz resmi bir açıklama yapmadıkları için Google'ın bu değişikliği neden yaptığı tam olarak belli değil. Benim tahminime göre bu, şüphelenmeyen kullanıcıların durum çubuğunu kötü niyetli olarak engelleyen veya değiştiren uygulamaları kazara yüklemelerini önleyerek Android'de güvenliği artırma girişimidir. Ne yazık ki bu değişiklik, çapraz ateşte TYPE_SYSTEM_OVERLAY kullanan birçok tamamen meşru uygulamayı yakalıyor.

Bu özelliği kullanan geliştiriciler, Android'in Sorun İzleyicisinde hata raporları açtılar (#260787 Ve #36574245) değişikliği protesto etmek ve alternatif bir API istemek için, ancak bir Google çalışanı izleyiciye şu şekilde yorum yaptı: aşağıdaki ifade:

Durum: Düzeltilmiyor (Amaçlanan Davranış)

Ürün ve mühendislik ekibiyle görüştük ve geliştiricilerin SHOW_WHEN_LOCKED etkinliklerini şu amaçlarla kullanabileceği yönünde öneri aldık: cihazın kilitlendiğini göster ancak artık kilit ekranı/bildirim gölgesi üzerinden gösterilmesi artık mümkün değil

Geliştiriciler FLAG_SHOW_WHEN_LOCKED'in hala pencerelerin durum çubuğunun üzerine yerleştirilmesine izin vermediğini belirttiğinden, şimdilik bu geliştiricilerin şansı yaver gitmemiş gibi görünüyor. Bu uygulamaların geliştiricilerinin, Google'ın bazı şeyleri değiştirmesi için dua etmekten veya bu konuda ortalığı karıştırmaktan başka ne yapabilecekleri belli değil.

Bu, Android O için yalnızca ilk Geliştirici Önizlemesi olduğundan Google'ın bu önizlemeyi değiştirmesi hâlâ mümkün. Android O'yu hedeflemeyen uygulamalar veya Google'ın geri yüklemesi için bu işlevi sağlayın TYPE_SYSTEM_OVERLAY. Ancak işler şu anda olduğu gibi kalırsa, bu uygulamalara veda edin. Ve bu çok utanç verici olurdu.


Bu uygulamaların çoğunu benim için test ettiği için Eli Irvin'e teşekkürler!