Android O არღვევს აპებს, რომლებიც გადაფარავს სტატუსის ზოლს

Android O უარყოფს TYPE_SYSTEM_OVERLAY-ს TYPE_APPLICATION_OVERLAY-ის სასარგებლოდ, რის შედეგადაც იშლება აპები, რომლებიც გადაფარებულია სტატუსის ზოლის თავზე.

შეტყობინებების ნაკადი, რომლებიც ასახავს მომხმარებლის წინაშე არსებულ ახალ ფუნქციებს Android O ახლა იწყებს შენელებას, როდესაც მომხმარებლებს რამდენიმე კვირა ჰქონდათ პროგრამული უზრუნველყოფის შესამოწმებლად მათ მოწყობილობაზე. თუმცა, ბევრი, ბევრი ცვლილებაა გაკეთებული ქუდის ქვეშ, რომლებიც ნელ-ნელა იხსნება. ჩვენ გამოვაქვეყნეთ ერთი ასეთი ცვლილების შესახებ ცოტა ხნის წინ, Nexus და Pixel მოწყობილობების შესახებ, რომლებიც მუშაობენ Android O SDCardFS-ის მიღება. მაგრამ დღეს ჩვენ გვსურს განვიხილოთ ცვლილება, რომელიც გავლენას მოახდენს გარკვეული აპლიკაციების დეველოპერებზე, განსაკუთრებით მათზე გადაფარვა სტატუსის ზოლის თავზე. როგორც ჩანს, ეს აპლიკაციებია გატეხილია Android O Developer Preview-ში, რომელიც ერთი შეხედვით შეიძლება უარყოთ, როგორც მარტივი შეცდომა, მაგრამ უფრო ღრმად ჩავუღრმავდებით საცნობარო დოკუმენტაციას, ეს შეიძლება იყოს დაგეგმილი ცვლილება Google-ის მიერ.


Android O არღვევს სტატუსის ზოლის გადაფარვას

ერთ-ერთი ჩემი საყვარელი რამ ანდროიდის შესახებ არის ის, თუ რამდენად კონფიგურირებადია ის. მომხმარებლებს, რომლებსაც აქვთ root ან გაშვებული Custom ROM-ები, შეუძლიათ თავიანთი სისტემის სტატუსის ზოლების თემატიკა, ძირითადად, შეზღუდვების გარეშე, მაგრამ თუ თქვენი მოწყობილობა არ არის როუტირებული, თქვენ გაქვთ ნაკლები ვარიანტი. საბედნიეროდ, Google Play Store-ში ბევრი აპლიკაციაა, რომლებიც საშუალებას გაძლევთ შეცვალოთ როგორ გამოიყურება სტატუსის ზოლი საბაზისო დონეზე. ეს შესაძლებელია სისტემის გადახურვის Windows-ის ჭკვიანური კომბინაციის წყალობით, რათა აჩვენოს მორგებული სტატუსის ზოლი არსებულზე, შეტყობინებების მსმენელები შეტყობინებების საჩვენებლად და, სურვილისამებრ, ხელმისაწვდომობის სერვისი, რომელიც საშუალებას მოგცემთ კონტექსტურად დახატოთ მორგებული სტატუსის ზოლი.

ზემოთ მოყვანილი ორი ეკრანის სურათი გვიჩვენებს, თუ როგორი იქნება ჩემი შეტყობინებების ზოლი Play Store-ზე ხელმისაწვდომი სტატუსის ზოლის გადაფარვის აპებიდან ერთ-ერთის გამოყენებისას. ეს ეკრანის ანაბეჭდები გადაღებულია დაუსაბუთებელ Huawei Mate 9-ზე, რომელიც მუშაობს EMUI 5.0. მათთვის, ვინც არ იცნობს EMUI-ს, სტატუსის ზოლი არ ჰგავს ზემოთ მოცემულ ეკრანის სურათებს. ამის ნაცვლად, ასე გამოიყურება:

თუ არ გაწუხებთ თქვენი აქციების სტატუსის ზოლის გარეგნობა, მაშინ აპები, როგორიცაა სტატუსი ან მასალის სტატუსის ზოლი არიან ღვთის საჩუქრები. მაგრამ თუ ან როდესაც თქვენი მოწყობილობა განახლდება Android O-ზე, ეს აპლიკაციები შეიძლება აღარ იმუშაოს. აი, როგორ გამოიყურება ეს ორი აპი Google Pixel-ზე, რომელიც მუშაობს Android O Developer Preview-ზე:

იმის ნაცვლად, რომ გადაფარვა დაბლოკოს ორიგინალური სტატუსის ზოლი, ის ჰგავს გადაფარვას გადახურვები ორიგინალური სტატუსის ზოლით, რაც იწვევს უზარმაზარ არეულობას.

სამწუხაროდ, ეს ეფექტურად ხდის ასეთ აპებს უსარგებლო. და ეს არ არის მხოლოდ თქვენი ტიპიური სტატუსის ზოლის თემატური აპლიკაციები, რომლებზეც გავლენას ახდენს ეს - ყველა აპი, რომელიც მოითხოვს გადაფარვის ჩვენებას სტატუსის ზოლის თავზე, დაზარალდება.

აქ მოცემულია რამდენიმე პოპულარული აპლიკაციის სია, რომლებიც შეიძლება გამოუსადეგარი გახდეს:

  • სტატუსი (500,000 - 1,000,000 ინსტალაცია)
  • მასალის სტატუსის ზოლი (1,000,000 - 5,000,000 ინსტალაცია)
  • Cool Tool - სისტემის სტატისტიკა (500,000 - 1,000,000 ინსტალაცია)
  • ტელეკინი (50,000 - 100,000 ინსტალაცია)
  • გაასუფთავეთ სტატუსის ზოლი (100,000 - 500,000 ინსტალაცია)
  • თინიკორი (100,000 - 500,000 ინსტალაცია)

და ზოგიერთი აპლიკაციის სია, რომლებიც იმუშავებენ, მაგრამ აღარ შეუძლიათ სტატუსის ზოლის თავზე გადაფარვა (წინა ფუნქციონირების შეზღუდვა):

  • ბინდი (5,000,000 - 10,000,000 ინსტალაცია)
  • Თავები მაღლა (100,000 - 500,000 ინსტალაცია)
  • რესურსების მონიტორი მინი (50,000 - 100,000 ინსტალაცია)
  • ქსელის მონიტორი მინი (1,000,000 - 5,000,000 ინსტალაცია)

Play Store-ზე კიდევ ბევრი აპია, რომლებიც იყენებენ ერთგვარ გადაფარვას სტატუსის ზოლის თავზე, მაგრამ თქვენ უკვე შეგიძლიათ გითხრათ, რომ ასეთი ცვლილება გავლენას მოახდენს ბევრ აპზე, რომელსაც პოტენციურად მილიონობით იყენებს მომხმარებლები. მერე რა ხდება აქ?


TYPE_SYSTEM_OVERLAY მოძველებულია

Android-ის ყოველი ახალი გამეორებით, Google შემოაქვს და უარყოფს (ასახელებს მოძველებულად და ამოსაღებად) სხვადასხვა ფუნქციებს. ამჯერად, ფუნქცია, რომელიც ჭრის ბლოკზეა არის TYPE_SYSTEM_OVERLAY. ციტირებისთვის საცნობარო გვერდი რისთვისაც ამ ფუნქციამ შესთავაზა დეველოპერებს:

TYPE_SYSTEM_OVERLAY

ფანჯრის ტიპი: სისტემის გადაფარვის ფანჯრები, რომლებიც უნდა იყოს ნაჩვენები ყველა დანარჩენზე. ამ ფანჯრებმა არ უნდა მიიღოს შეყვანის ფოკუსი, წინააღმდეგ შემთხვევაში ისინი ხელს უშლიან კლავიატურას. მრავალ მომხმარებლის სისტემებში ნაჩვენებია მხოლოდ მფლობელი მომხმარებლის ფანჯარაში.

არსებითად, ფანჯრის ეს ტიპი საშუალებას აძლევს აპლიკაციას დახატოს ეკრანის ნებისმიერი ელემენტის თავზე - სტატუსის ზოლის ჩათვლით. თუმცა, Android O-დან დაწყებული, ფანჯრის ეს ტიპი მოძველებულია. არასისტემური აპებისთვის, Google გირჩევთ, რომ დეველოპერებმა გამოიყენონ TYPE_APPLICATION_OVERLAY. ციტირებისთვის საცნობარო გვერდი რას აკეთებს ეს ახალი ტიპის ფანჯარა:

TYPE_APPLICATION_OVERLAY

ფანჯრის ტიპი: აპლიკაციის გადაფარვის ფანჯრები ნაჩვენებია ყველა აქტივობის ფანჯრის ზემოთ (ტიპებს შორის FIRST_APPLICATION_WINDOW და LAST_APPLICATION_WINDOW) მაგრამ კრიტიკული სისტემის ფანჯრების ქვემოთ, როგორიცაა სტატუსის ზოლი ან IME.

სისტემამ შეიძლება ნებისმიერ დროს შეცვალოს ამ ფანჯრების პოზიცია, ზომა ან ხილვადობა, რათა შეამციროს მომხმარებლის ვიზუალური არეულობა და ასევე მართოს რესურსები.

სისტემა დაარეგულირებს ამ ტიპის ფანჯრის მქონე პროცესების მნიშვნელობას, რათა შეამციროს დაბალი მეხსიერების მკვლელის მოკვლის შანსი.

მრავალ მომხმარებლის სისტემებში ნაჩვენებია მხოლოდ მფლობელი მომხმარებლის ეკრანზე.

როგორც ხედავთ, ფანჯრის ეს ახალი ტიპი საშუალებას აძლევს აპებს გადაფარონ შინაარსი ყველა სხვა აქტივობის ფანჯრის თავზე გარდა "კრიტიკული სისტემის ფანჯრები, როგორიცაა სტატუსის ზოლი ან IME" (IME ეხება კლავიატურას). ეს კარგია ისეთი აპებისთვის, როგორიცაა Facebook Messenger, რადგან ამ აპის მიერ მოწოდებულ ჩატჰედებს სტატუსის ზოლის თავზე ჯდომა არ აქვს დანიშნულება, მაგრამ ეს უარყოფითად აისახება აპლიკაციების უმეტესობაზე, რომლებიც ადრე აღვნიშნე.

გარდა ამისა, ამ დროისთვის დეველოპერებისთვის გამოსაყენებელი გამოსავალი არ ჩანს. შეიძლება ველოდოთ, რომ Android O-ზე ამ პრობლემის თავიდან ასაცილებლად, დეველოპერები უბრალოდ ქმნიან თავიანთ აპებს SDK 25 (Android 7.1.1) მიზნებისთვის. თუმცა, როგორც აღნიშნა სტატუსის შემქმნელი Reddit-ზე, Google-ს აქვს შეცვალა TYPE_SYSTEM_OVERLAY TYPE_APPLICATION_OVERLAY-ით და ცვლილება არის დამოუკიდებელი სამიზნე SDK-სგან ვერსია. დეველოპერებმა, რომლებიც იყენებენ TYPE_SYSTEM_OVERLAY-ს, ამჟამად უნდა გამოიყენონ TYPE_APPLICATION_OVERLAY თავსებადობის შესანარჩუნებლად, შესაბამისად, არ აქვს მნიშვნელობა რომელ სამიზნე SDK ვერსიას ეფუძნება კონკრეტული აპლიკაცია, მას შეუძლია აღარ გამოიყენოთ TYPE_SYSTEM_OVERLAY Android O-ზე.


რა შეიძლება გაკეთდეს ამის შესახებ?

ზუსტად არ არის ნათელი, რატომ გააკეთა Google-მა ეს ცვლილება, რადგან მათ ჯერ არ გაუკეთებიათ ოფიციალური განმარტება. ჩემი ვარაუდით, ეს არის ანდროიდის უსაფრთხოების გაუმჯობესების მცდელობა, უეჭველი მომხმარებლების თავიდან აცილების გზით, შემთხვევით დააინსტალირონ აპები, რომლებიც მავნებლად ბლოკავს ან ცვლის მათ სტატუსის ზოლს. სამწუხაროდ, ეს ცვლილება იჭერს ბევრ სრულიად ლეგიტიმურ აპლიკაციას, რომლებიც იყენებენ TYPE_SYSTEM_OVERLAY-ს შეჯვარებისას.

დეველოპერებმა, რომლებიც იყენებენ ამ ფუნქციას, გახსნეს შეცდომების ანგარიშები Android-ის Issue Tracker-ზე (#260787 და #36574245) ცვლილებების გასაპროტესტებლად და ალტერნატიული API-ის მოთხოვნით, მაგრამ Googler-მა კომენტარი გააკეთა ტრეკერზე შემდეგი განცხადება:

სტატუსი: არ გამოსწორდება (განზრახული ქცევა)

ჩვენ მივყვეთ პროდუქტისა და საინჟინრო გუნდს და მივიღეთ შემოთავაზება, რომ დეველოპერებს შეეძლოთ SHOW_WHEN_LOCKED აქტივობების გამოყენება აჩვენე, როდესაც მოწყობილობა დაბლოკილია, მაგრამ განზრახ აღარ არის შესაძლებელი დაბლოკვის ეკრანზე / შეტყობინებების ჩრდილში

ამ დროისთვის, როგორც ჩანს, ამ დეველოპერებს არ გაუმართლათ, რადგან დეველოპერებმა აღნიშნეს, რომ FLAG_SHOW_WHEN_LOCKED ჯერ კიდევ არ იძლევა ფანჯრების გადაფარვას სტატუსის ზოლის თავზე. გაურკვეველია, რისი გაკეთება შეუძლიათ ამ აპების დეველოპერებს გარდა იმისა, რომ ილოცონ Google-ისთვის, რომ შეცვალოს რამე, ან ჯოჯოხეთი აღძრას ამის შესახებ.

ვინაიდან ეს მხოლოდ პირველი დეველოპერის გადახედვაა Android O-სთვის, Google-ისთვის მაინც შესაძლებელია მათი შეცვლა გაითვალისწინეთ და უზრუნველყოთ ეს ფუნქცია აპებისთვის, რომლებიც არ არის გამიზნული Android O-სთვის, ან Google-ისთვის აღდგენისთვის TYPE_SYSTEM_OVERLAY. მაგრამ თუ ყველაფერი ისე დარჩება, როგორც ამჟამად არის, შეგიძლიათ კოცნა ამ აპებს მშვიდობით. და ეს სირცხვილი იქნება.


მადლობა ელი ირვინს, რომ გამოსცადა ბევრი ეს აპლიკაცია ჩემთვის!