დინამიური სისტემის განახლებები Android Q-ში: როგორ გააუმჯობესებს Project Treble Android-ის მომავალ ვერსიებს

Google-მა გამოავლინა Dynamic System Update, ახალი გზა GSI-ის დაყენებისთვის Android Q-ში, რომელიც არ საჭიროებს ჩამტვირთველის განბლოკვას.

Android 8.0 Oreo-ს გამოშვებასთან ერთად, Google-მა გამოაქვეყნა პროექტი Treble: მთავარი რეარქიტექტურა Android OS-ის ჩარჩოსა და გამყიდველის HAL-ებისა და Linux-ის ბირთვის კომუნიკაციაში. Treble არის მთავარი ინიციატივა, რომელიც შექმნილია Android პლატფორმის ვერსიის შესამცირებლად და უსაფრთხოების პაჩის ფრაგმენტაციადა ყველა Android-ის ბრენდის მოწყობილობა, რომელიც გაშვებულია Android Pie-ით, საჭიროა Project Treble-ის მხარდაჭერისთვის. OEM-ები და გამყიდველები ამოწმებენ Treble-ის თავსებადობას ზოგადი სისტემის სურათის (GSI) ჩატვირთვის გზით - Android-ის სუფთა საფონდო კომპლექსი AOSP-დან და გადასცემენ გამყიდველის სატესტო კომპლექტი (VTS) და თავსებადობის ტესტის კომპლექტი ზოგადი სისტემის სურათი (CTS-on-GSI). GSI აღმოჩნდა სასარგებლო არა მხოლოდ პროგრამული უზრუნველყოფის ინჟინრებისთვის, რომლებიც მუშაობენ OEM-ებისთვის, შეამოწმონ Treble თავსებადობა, არამედ გააღო კარი. დიდი საბაჟო ROM საზოგადოება

XDA-ზე. Android Q გამოშვებისთვის Google-ს სურს GSI-ები სასარგებლო გახადოს სხვა ჯგუფისთვის: აპლიკაციების დეველოპერებისთვის.

მას შემდეგ, რაც პირველი სტაბილური გამოშვება და წყაროს კოდის ვარდნა ნებისმიერი მოცემული Android პლატფორმის გამოშვება ჩვეულებრივ მოდის აგვისტოში, დეველოპერებს, რომლებსაც სურთ Android-ის შემდეგი გამოშვების გამოცდა რეალურ მოწყობილობაზე, როგორც წესი, სჭირდებათ წვდომა Google-ის სმარტფონზე, თუ არ სურთ დაელოდონ განახლებას, რომ მიაღწევს საკუთარ აპარატურას. თუმცა, Google მუშაობდა OEM-ებთან, რათა მოეტანა Android P ბეტა შარშან რამდენიმე მოწყობილობაზე, და ისინი ამას მოჰყვა წელს Android Q ბეტა. ოფიციალურ Android Q ბეტასთან ერთად, Google-მა წელს ასევე გამოუშვა ოფიციალური Q ბეტა GSI ასე რომ, ნებისმიერ დეველოპერს, რომელსაც აქვს Project Treble-თან თავსებადი მოწყობილობა, შეუძლია დააინსტალიროს უახლესი Q გამოშვება თვეების ლოდინის გარეშე, სანამ build მიაღწევს მათ მოწყობილობებს. შემდეგი Android გამოშვების ტესტირების ეს ახალი გზა დეველოპერებს აძლევს მეტ შესაძლებლობას და, შესაბამისად, მეტ დროს, რომ გამოსცადონ თავიანთი აპლიკაციები ძირითადი ცვლილებები Android-ში.

სამწუხაროდ, ამჟამინდელი მეთოდი GSI-ის დაყენება შეიძლება რთული იყოს. ის მოითხოვს ჩამტვირთველის განბლოკვას, რაც გულისხმობს მომხმარებლის ყველა მონაცემის წაშლას და/ან გარანტიის გაუქმებას და გამოსახულების ციმციმს სწრაფი ჩატვირთვის პროტოკოლით. ეს არ არის სწრაფი და მარტივი პროცესი აპლიკაციის შემქმნელისთვის, თუ მათი მოწყობილობა ჩამტვირთველის განბლოკვის საშუალებასაც კი იძლევა. ამიტომ, ამისთვის გასული რამდენიმე თვეGoogle-მა GSI-ების ჩატვირთვის ახალ გზაზე იმუშავა. შეიყვანეთ ახალი ფუნქცია სახელწოდებით Dynamic System Update, ან DSU.

(ეს ფუნქცია ადრე შემუშავებული იყო სახელწოდებებით "Live Image", "Dynamic Android" და "Android on Tap", ასე რომ არ გაგიკვირდეთ, თუ Google მას სხვაგვარად უწოდებს რამდენიმე კვირაში ან თვეში.)

დინამიური სისტემის განახლებები Android Q-ში

DSU ფუნქციის მიზანია დეველოპერს დაუშვას ჩატვირთვა GSI-ში მიმდინარე ინსტალაციაში ჩარევის გარეშე. ეს ნიშნავს, რომ ჩამტვირთველი არ საჭიროებს განბლოკვას და მომხმარებლის მონაცემების წაშლას. ინსტალაციის პროცესი ასევე მნიშვნელოვნად გამარტივებულია, რადგან Google-მა უზრუნველყო ბრძანების ხაზის ინტერფეისი ADB-ის საშუალებით და აპი, რომლის კონტროლიც შესაძლებელია მიზნების საშუალებით. აი, როგორ გამოიყურება GSI-ის ჩატვირთვა DSU-ს გამოყენებით:

ამ ვიდეოში*, Google Pixel 3 XL, რომელიც მუშაობს Android Q ბეტა 3-ზე, გადაიტვირთება GSI-ში. ამ გარემოში, აპლიკაციის შემქმნელს შეუძლია დააინსტალიროს და შეამოწმოს თავისი აპლიკაცია Q API თავსებადობაზე. როდესაც ისინი დაასრულებენ ტესტირებას, მათ შეუძლიათ უბრალოდ გადატვირთონ მოწყობილობაზე რეგულარული Q beta 3 პროგრამული უზრუნველყოფა. თქვენ ძირითადად ორმაგად ჩატვირთავთ GSI-ს, ასე რომ თქვენ შეგიძლიათ უსაფრთხოდ შეამოწმოთ თქვენი აპლიკაცია!

*ჩვენ ჩავწერეთ ეს ვიდეო Google I/O 2019-ზე, როდესაც DSU ჯერ არ იყო საჯაროდ ხელმისაწვდომი, ამიტომ გადაღებულ Pixel 3 XL-ზე Q beta 3-ის კონსტრუქცია ოდნავ შეიცვალა Google-ის მიერ, რათა მოიცავდა DSU მხარდაჭერას. მოწყობილობები, რომლებიც მუშაობენ Q beta 4 და უფრო ახალ ვერსიაზე, შეუძლიათ მიიღონ DSU მხარდაჭერა, თუ ისინი აკმაყოფილებენ ქვემოთ მოცემულ მოთხოვნებს.

მოთხოვნები დინამიური სისტემის განახლებისთვის

არსებითად ორმაგი ჩატვირთვა და გაშვება არ იყო ადვილი ამოცანა Google-ისთვის. მნიშვნელოვანი ცვლილებები უნდა განხორციელებულიყო დანაყოფების მართვაში Pixel 3-ზე, Google-ის საცდელ პლატფორმაზე DSU-სთვის. ამრიგად, DSU მხარდაჭერისთვის პირველი ძირითადი მოთხოვნა არის მოწყობილობის მხარდაჭერა დინამიური ტიხრები. დინამიური დანაყოფები მოიცავს მეხსიერების ერთ რეალურ დანაყოფს, რომელიც დაყოფილია ზომის შეცვლად ლოგიკურ დანაყოფებად, როგორიცაა სისტემა, გამყიდველი, odm, oem, პროდუქტი და ა.შ. GSI-ის ინსტალაციის დროს სივრცე რეზერვირებულია ახალი სისტემისა და მომხმარებლის მონაცემების ტიხრებისთვის, არსებული მომხმარებლის მონაცემების დანაყოფიდან გამოუყენებელი ბლოკების აღებით. იმის გამო, რომ ეს ახალი დანაყოფები შეიძლება იყოს რამდენიმე გიგაბაიტის ზომა, DSU მხარდაჭერა მხოლოდ ლოგიკურია დანაყოფები, წინააღმდეგ შემთხვევაში, მოწყობილობას დასჭირდება მუდმივად დაჯავშნოს რამდენიმე გიგაბაიტი საცავის ადგილი GSI-სთვის დანადგარები.

სხვა მოთხოვნები მოიცავს ramdisk-ს, რომელიც წყვეტს, ჩაიტვირთოს აღდგენაზე, სისტემაზე თუ ლოგიკურ დაყოფაზე, და მეტამონაცემების დანაყოფი GSI-ის მეტამონაცემების შესანახად. ზოგადად, DSU მხარდაჭერის სამშენებლო ბლოკები არის Android Q გაშვების მოთხოვნებიProject Treble-ის წამყვანი ილია მალჩევის თქმით. ჩვენ არ ვართ დარწმუნებული, თუ ყველაფერი რაც საჭიროა DSU-ს მხარდასაჭერად არის Android Q-ის გაშვების მოთხოვნა, მაგრამ შეგვიძლია ვივარაუდოთ, რომ Android Q-ით გაშვებული მოწყობილობების უმეტესობა თუ არა შეუძლია DSU-ს მხარდაჭერა მაშინაც კი, თუ Google ამჟამად არ მოითხოვს მათ. ჯერჯერობით მხოლოდ Pixel 3-ს, Pixel 3 XL-ს, Pixel 3a-სა და Pixel 3a XL-ს აქვს დინამიური ტიხრები და ამ მოწყობილობებიდან მხოლოდ Pixel 3-სა და Pixel 3 XL-ს აქვს DSU მხარდაჭერა Android Q ბეტა 4-ში. მიუხედავად იმისა, რომ DSU მხარდაჭერა არ არის საჭირო, Google იმედოვნებს, რომ OEM-ები მაინც ჩართავს ფუნქციას, რადგან ეს ამარტივებს უსაფრთხოდ ტესტირებას Treble-ის თავსებადობაზე. მაგალითად, OEM პროგრამულ ინჟინერს შეუძლია დააყენოს GSI SD ბარათზე ასე რომ, მათ შეუძლიათ სწრაფად ჩატვირთონ მრავალ მოწყობილობაზე Treble თავსებადობის შესამოწმებლად.

უსაფრთხოება დინამიური სისტემის განახლებისთვის

ვინაიდან DSU აერთიანებს არსებითად მეორე ოპერაციულ სისტემას, Google-მა უნდა დარწმუნდეს, რომ ამ ახალი ინსტალაციის ხელყოფა არ შეიძლება მოწყობილობის მთლიანობის დარღვევისთვის. ამრიგად, GSI ინსტალაციისთვის არის იგივე ძირითადი უსაფრთხოების დაცვა ორიგინალური ინსტალაციისთვის: Android Verified Boot და SELinux-ის წესები. გარდა ამისა, მხოლოდ აპებს, რომლებსაც აქვთ INSTALL_DYNAMIC_SYSTEM ხელმოწერა|პრივილეგირებული ნებართვა, შეუძლიათ GSI-ის ინიცირება ინსტალაცია, ხოლო აპებს, რომლებსაც აქვთ MANAGE_DYNAMIC_SYSTEM ხელმოწერის ნებართვა, შეუძლიათ ჩართონ/გამორთონ ან წაშალონ GSI ინსტალაცია. ეს ნიშნავს, რომ მხოლოდ სანდო, სისტემის დონის აპებს შეუძლიათ იმუშაონ DSU-სთან.

მომხმარებლის ორიგინალური მონაცემების დაცვის უზრუნველსაყოფად, Google-მა დაამატა დამატებითი დაცვის მექანიზმი Android Q-ში. ე.წ.გამშვები პუნქტი" ფუნქცია იცავს მომხმარებლის მონაცემების განადგურებისგან საგუშაგო განყოფილებების თავდაპირველ მდგომარეობაში აღდგენით. გამშვები პუნქტები სასარგებლოა არა მხოლოდ DSU-სთვის. ისინი ასევე გამოიყენება გაფუჭებისგან დასაცავად პროექტის მთავარი ხაზი APEX მოდული და A/B OTA განახლებები. (მოწყობილობები A/B ტიხრებით უკვე აქვს უკან დაბრუნების დაცვა, მაგრამ ეს დაბრუნება მოითხოვს ქარხნული მონაცემების გადატვირთვას, ხოლო მომხმარებლის მონაცემების გამშვები პუნქტები არა.)

GSI-ის დაყენება

თუ თქვენი მოწყობილობა მხარს უჭერს DSU-ს, როგორიცაა Pixel 3 სერია, მაშინ ადვილია GSI-ის დაყენება. თქვენ ჯერ უნდა დარწმუნდეთ, რომ დინამიური სისტემის ფუნქციის დროშა ჩართულია ორიდან ერთი გზით:

  1. თუ თქვენ იყენებთ მომხმარებლის შეცდომის კონსტრუქციას, ჩართეთ settings_dynamic_android დროშა აქ: პარამეტრები > სისტემა > დეველოპერის პარამეტრები > ფუნქციების დროშები.
  2. თუ მომხმარებლის build-ზე ხართ, გაუშვით შემდეგი adb shell ბრძანება:
    setproppersist.sys.fflag.override.settings_dynamic_system 1

შემდეგ, ჩამოტვირთეთ უახლესი Android Q ბეტა GSI-დან Google ან თქვენი მოწყობილობის OEM. (DSU მხოლოდ Google-ის ან OEM-ის მიერ ხელმოწერილი GSI-ების დაყენების საშუალებას იძლევა.) ჩამოტვირთვის შემდეგ გამოიყენეთ simg2img მწირი გამოსახულების ნედლეულ სურათად გადაქცევა. გამოიყენეთ gzip ნედლეული სურათის შესაფუთად და შემდეგ დააკოპირეთ მიღებული არქივი თქვენს მოწყობილობაში არსებულ ადგილას გარე მეხსიერება (მაგ. /data/media/0/Download) ან ფაქტობრივი გარე მეხსიერების საშუალება (როგორიცაა ფიზიკური SD ბარათი). და ბოლოს, გაუშვით DynamicSystemInstallationService აპი ინსტალაციის დასაწყებად სწორი განზრახვით:

adb shell am start-activity \ -n com.android.dynsystem/com.android.dynsystem.VerificationActivity \ -a android.os.image.action.START_INSTALL \ -d file:///storage/emulated/0/Download/system_raw.gz \ --el KEY_SYSTEM_SIZE $(du -b system_raw.img|cut -f1) \ --el KEY_USERDATA_SIZE 8589934592

გადატვირთვის დაწკაპუნების შემდეგ, თქვენ ჩატვირთავთ GSI-ში. მოწყობილობის გამოყენებადობა GSI-ში დამოკიდებულია იმაზე, თუ რამდენად კარგად არის თქვენი მოწყობილობის OEM დანერგილი Treble (უფრო სწორად, რამდენად ცოტა არღვევს მათ Treble-ს თავსებადობა.) ზოგიერთი მოწყობილობა უკეთესად იმუშავებს GSI-ებთან, ვიდრე სხვები, მაგრამ ზოგადად, ნუ ელოდებით ამ ინსტალაციის ყოველდღიურ გამოყენებას მძღოლი. თქვენ უნდა შეამოწმოთ თქვენი აპი და შემდეგ გამოხვიდეთ გადატვირთვით. თუ გსურთ დარჩეთ GSI ინსტალაციაში შემდგომი ტესტირებისთვის, მაშინ შეგიძლიათ გამოიყენოთ gsi_tool shell ბრძანება.

სრული GSI ინსტალაციის ინსტრუქციები DSU-სთვის შეგიძლიათ იხილოთ აქ. შეცდომების დაფიქსირება შესაძლებელია Google Issue Tracker,Reddit, ან Stack Overflow.

დინამიური სისტემის განახლების მიზეზი

როდესაც მე ვესაუბრე ილიან მალჩევს Google I/O-ზე, მან გაიმეორა ის, რაც ჰუნგ-ინგ ტიანმა თქვა Treble-ის გუნდიდან ადრეული GSI წვდომის შესახებ ნოემბრის Android Dev Summit. Google-მა DSU-ს შექმნა მოითხოვეთ გამოხმაურება რაც შეიძლება ფართო აუდიტორიისგან. მიზანია GSI-ის ხარისხის გაუმჯობესება, რაც თავის მხრივ აუმჯობესებს Android-ის მომავალი გამოშვების ხარისხს რადგან GSI არის Android-ის ყველაზე სუფთა ფორმა. Google ამჟამად ერთადერთი კომპანიაა, რომელიც ამოწმებს შემდეგი ვერსიის GSI თავსებადობას (მაგალითად, რამდენად კარგად მუშაობს Android Q სისტემის სურათი Android P-ის თავზე. გამყიდველის დანერგვა), მაგრამ რაც უფრო მეტი ადამიანი ანათებს GSI-ებს და გამოთქვამს გამოხმაურებას, OEM-ებს შეუძლიათ გამოასწორონ Treble თავსებადობის დარღვევები, ასე რომ GSI-ები კიდევ უფრო უკეთ იმუშავებენ მომავალი. ილიანი ამბობს, რომ დიდი ინტერესია OEM-ების და მოვაჭრეების მხრიდან, როგორიცაა Qualcomm, გამოიყენონ გამყიდველის სურათები წინა Android გამოშვებიდან შემდეგი ვერსიის სისტემის სურათით. ინიციატივები, როგორიცაა DSU, ეხმარება Google-ს და OEM-ებს დაფარონ უფსკრული ავტომატური ტესტებიდან, როგორიცაა VTS და CTS-on-GSI. ამრიგად, Google იღებს უფრო მეტ ბეტა ტესტერს, რათა გამოაქვეყნონ გამოხმაურება Android-ის შემდეგ გამოშვებაზე, ამასთან, გაიგოს Treble-ის თავსებადობის დარღვევის შესახებ, რათა OEM-ებმა გააუმჯობესონ თავიანთი მუშაობა.

დინამიური სისტემის განახლებების დამატება Android Q-ში მისასალმებელია, მაგრამ ეს არ იქნება ორმაგი ჩატვირთვის გამოსავალი, რომლის იმედიც ზოგიერთი თქვენგანი იქნება. როგორც უკვე აღვნიშნეთ, შესაძლებელია მხოლოდ Google-ის ან OEM-ის მიერ ხელმოწერილი სისტემის სურათების დაყენება. როდესაც ილიანს ვკითხე DSU-ის გაფართოების შესაძლებლობის შესახებ ალტერნატიული ანდროიდის ეკოსისტემის მხარდასაჭერად სისტემების თქმით, ეს ტექნიკურად შესაძლებელია, რადგან DSU უბრალოდ სისტემის მიწოდების არხია სურათები. ნებისმიერ OEM-ს შეუძლია გამოიყენოს ის, როგორც უნდა სანამ საბოლოო შედეგი შეესაბამება Android-ს. Google-ს აქ არ შეუქმნია OTA სისტემის ალტერნატივა და DSU არ არის განკუთვნილი ნამდვილი ორმაგი ჩატვირთვისთვის გამოსაყენებლად. მიუხედავად იმისა, რომ Google-მა შეასრულა Treble-ზე მუშაობა Android-ს უფრო მოდულურს ხდის, ამიტომ არ გამიკვირდება, თუ ორიგინალური ორმაგი ჩატვირთვა რეალობად იქცევა.