როგორ შეუძლია Android Go-ს დაეხმაროს ძველ Android ტელეფონებს Android 8.1 Oreo-ს გაშვებაში

Android Go არის Google-ის ჩამოშლილი ვერსია Android Oreo 8.1 ახალი, დაბალი ოპერატიული მეხსიერების მოწყობილობებისთვის. როგორც ირკვევა, ეს შეიძლება დაეხმაროს პერსონალური ROM-ის განვითარებას ძველ მოწყობილობებზეც.

Android Go არის Google-ის Android-ის ჩამოშლილი ვერსია, რომელიც დაფუძნებულია Android 8.1 Oreo-ზე და ის მიზნად ისახავს იყოს Android-ის ოპტიმიზებული ვერსია დაბალი დონის მოწყობილობებისთვის, 1 GB ან უფრო დაბალი ოპერატიული მეხსიერებით. ეს გამოცხადდა გასულ მაისში Google I/O დეველოპერის კონფერენციაზე და საბოლოოდ მეტი დეტალი გამოვლინდა იმავე წლის დეკემბერში. ნათქვამია, რომ იგი დამზადდა შემდეგი თაობის საწყისი დონის მოწყობილობებისთვის, რათა უზრუნველყოფილი იყოს, რომ ისინი განვითარებად ქვეყნებს ჯერ კიდევ შეუძლიათ გამოიყენონ მოქმედი სმარტფონები ინტერნეტში წვდომისთვის და გამოიყენეთ აპლიკაციები.

Go-ს აქვს შესრულების ოპტიმიზაციისა და გაუმჯობესების მრავალფეროვნება, მათ შორის 50 პროცენტით ნაკლები მეხსიერების დაკავება, ვიდრე საშუალო Android Oreo ინსტალაცია. Android Runtime-ის (ART) და ბირთვის ოპტიმიზაციის წყალობით, მოწყობილობა, რომელიც მუშაობს Android Go-ზე, საშუალოდ 15 პროცენტით უფრო სწრაფად იმუშავებს, ვიდრე ჩვეულებრივ Android Oreo-ს ინსტალაციაზე იმავე მოწყობილობაზე. ეს ოპტიმიზაცია შესრულებულია Google-ის მიერ შედგენილი სპეციალიზებული კონსტრუქციის კონფიგურაციის მეშვეობით, რომელთა ახსნასაც მოგვიანებით შევეხებით.

Android Go ასევე სარგებლობს სპეციალური "Go" აპლიკაციებით, როგორიცაა Files Go, YouTube Go და Google Maps Go. ეს არის Google-ის მიერ შექმნილი აპლიკაციების მსუბუქი ვერსიები, რომლებსაც აქვთ შემცირებული მოთხოვნები უფრო ეფექტურად მუშაობისთვის. ეს ნიშნავს, რომ Android Go მოწყობილობების მქონე პირებს შეუძლიათ ისარგებლონ იგივე უპირატესობებით, რაც ჩვეულებრივ Android Oreo მომხმარებლებს შეუძლიათ Google-ის აპლიკაციების კომპლექტის გამოყენება ფლაგმანურ ან თუნდაც ოდნავ უფრო ძვირადღირებულ ბიუჯეტში დიდი თანხის დახარჯვის გარეშე მოწყობილობა.

ეს ყველაფერი Google-ის ბაზრის გაფართოებაზეა. მიუხედავად ამისა, ჩნდება კითხვა, რომ თუ Android Go ძირითადად შედგება build-ის კონფიგურაციისგან და ოპტიმიზებული Google აპლიკაციების ნაკრებისგან, შეუძლიათ თუ არა დეველოპერებს გააკეთონ Android Go-ს საკუთარი კონსტრუქციები? Მოკლედ, დიახ ჩვენ შეგვიძლია.

LineageOS-ის რამდენიმე დეველოპერი უკვე აშენებს Android Go-ს ოპტიმიზებულ პერსონალურ ROM-ებს

ჩვენ უკვე ვხედავთ Android Go-ს გარკვეულ ათვისებას ზოგიერთი მორგებული ROM დეველოპერებისგან, როგორიცაა XDA Recognized Developer AdrianDC, მისი მუშაობით LineageOS 15.1-ზე Android Go-ს build კონფიგურაციებით რამდენიმე ძველი Sony ტელეფონი. განსახილველი მოწყობილობებია Sony Xperia SP, Sony Xperia T, Sony Xperia V და Sony Xperia TX. ეს მოწყობილობები თარიღდება 2012 და 2013 წლებით, მაგრამ ისინი მიიღებენ LineageOS 15.1-ს Android 8.1 Oreo-ზე დაფუძნებული Android-ის გამოყენებით. Go build-ის კონფიგურაცია, რომელიც საშუალებას მისცემს მოწყობილობებს გაუშვან Google 'Go' აპლიკაციები, თუ საბოლოოდ იქნება Android Go Gapps-ის ნაკრები. გაათავისუფლეს.

LOS-ის ნებისმიერ ინდივიდუალურ შემსრულებელს უნდა შეეძლოს Android Go-ს კონფიგურირებული კონსტრუქციის დანერგვა, რომელიც წარმოადგენს build-ის კონფიგურაციისა და სხვა ოპტიმიზაციის კომპლექტს. ეს ნიშნავს იმას, რომ მათ, ვინც შესაძლოა იყიდეს Sony Xperia T, მაგალითად, მოწყობილობა, რომელიც მუშაობს Android 4.0.4 Ice Cream Sandwich-ზე გაშვებისას, შეეძლებათ გამოიყენონ მოწყობილობაზე Android 8.1 Oreo-ს უკეთ ოპტიმიზებული კონსტრუქცია, რომელიც იყენებს აპლიკაციებს, როგორიცაა YouTube Go და Google Maps Go. ის არ იმუშავებს შესრულების ფლაგმანურ დონეზე, მაგრამ ეს უნდა იყოს გამოსაყენებელი- განსაკუთრებით მოწყობილობისთვის, რომელიც 2012 წლით თარიღდება.


როგორ შეუძლია Android Go-ს დაეხმაროს ძველ Android ტელეფონებს Android Oreo-ს გაშვებაში

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

build-ის კონფიგურაციები, რომლებიც გამოიყენება Android Go-ს შედგენისთვის.

მე ვესაუბრე XDA აღიარებულ დეველოპერს ჯოშუო, რომელიც დიდად დამეხმარა იმის გააზრებაში, რომ მომხდარი ცვლილებები მოხდა — რა აიძულებს Android Go-ს მუშაობას. ზოგიერთი ამ build კონფიგურაციის შეცვლა შეუძლებელია ხელახალი კომპილაციის გარეშე და თავად ROM-ის გეგმის ნაწილია. ეს არის სრულად კაპიტალიზირებული დროშები.

თუმცა, ყველა ეს დროშა ეხება ანდროიდის მრავალ განსხვავებულ ასპექტს შენახვისა და მეხსიერების გამოყენებასთან დაკავშირებით. Ესენი მოიცავს ავტომატური შენახვის მართვა, Android-ის დაბალი მეხსიერების მკვლელი, dex (ალვიკი ყოფილიგამოსაშვები ფაილები) ოპტიმიზატორი და ოპერატიული მეხსიერების ლიმიტები აპლიკაციების გაშვებისთვის. APK ფაილები შედგება ამ DEX ფაილებისგან, ასე რომ, გარკვეულწილად, შესაძლებელია ვიფიქროთ APK ფაილზე, როგორც უბრალოდ ZIP ფაილი, რომელიც შეიცავს უამრავ .dex ფაილს, რაც რეალურად მუშაობს Android-ის შესრულებისას განაცხადი. მეხსიერების ავტომატურ მართვას სანაცვლოდ გააკონტროლებს Files Go აპლიკაცია და არა Android სისტემა.

Android Go Utilities Android-ის დაბალი RAM რეჟიმი

Android 4.4 KitKat-ში Google-მა შემოიტანა ახალი დროშა სახელწოდებით "დაბალი ram", რომელიც მიზნად ისახავდა მოწყობილობების მხარდაჭერას 512 მბ ოპერატიული მეხსიერებით. ის ახორციელებს სისტემის უამრავ ოპტიმიზაციას. ეს ცვლილებები ძალიან სასარგებლოა RAM მოწყობილობების დაქვეითებისთვის.

გაუმჯობესებული მეხსიერების მართვა

  • დადასტურებული მეხსიერების დაზოგვის ბირთვის კონფიგურაციები: Swap to ZRAM.
  • მოკალით ქეშირებული პროცესები, თუ ისინი უნდა იყოს uncached და ძალიან დიდი.
  • არ მისცეთ უფლება დიდ სერვისებს დააბრუნონ თავი A Services-ში (ასე რომ მათ არ შეუძლიათ გამოიწვიონ გამშვების მოკვლა).
  • გააუქმეთ პროცესები (თუნდაც ჩვეულებრივ შეუსაბამო პროცესები, როგორიცაა ამჟამინდელი IME), რომლებიც ძალიან დიდი ხდება უმოქმედო მოვლის დროს.
  • ფონური სერვისების გაშვების სერიალიზაცია.
  • მეხსიერების მორგებული გამოყენება დაბალი ოპერატიული მეხსიერების მოწყობილობებისთვის: მეხსიერების გარეშე (OOM) რეგულირების უფრო მჭიდრო დონეები, უფრო მცირე გრაფიკული ქეში და ა.შ.

ზემოთ მოყვანილი ცვლილებები ძირითადად უზრუნველყოფს, რომ სისტემა დარწმუნდება, რომ გამოიყენოს შეკუმშული ოპერატიული მეხსიერება, სადაც ეს შესაძლებელია, ZRAM-ის გამოყენებით. ZRAM ძირითადად არის RAMdisk (საცავის საშუალება, რომელიც იყენებს RAM-ს, ბევრად უფრო სწრაფად, ვიდრე მოწყობილობაზე ჩვეულებრივი მეხსიერების გამოყენება), როგორც swap ფაილი. Swap ფაილი გამოიყენება, როდესაც RAM-ის მოხმარება მაღალია და აპლიკაციებს ჯერ კიდევ სჭირდება მეხსიერება. ეს ბევრად, ბევრად ნელია ვიდრე RAM და თავიდან უნდა იქნას აცილებული, სადაც ეს შესაძლებელია. არსებითად, ის უბრალოდ შეკუმშავს მეხსიერების შინაარსს.

შემცირდა სისტემის მეხსიერება

  • შემცირდა system_server და SystemUI პროცესები (შენახულია რამდენიმე მბაიტი).
  • წინასწარ ჩატვირთეთ dex ქეში Dalvik-ში (შენახულია რამდენიმე MB).
  • დადასტურებული JIT-off ვარიანტი (ზოგავს 1,5 მბ-მდე თითო პროცესზე).
  • შემცირდა თითო პროცესის შრიფტის ქეში ზედნადები.
  • გააცნო ArrayMap/ArraySet და ფართოდ გამოიყენებოდა ჩარჩოში, როგორც HashMap/HashSet-ის უფრო მსუბუქი ჩანაცვლება.

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

Android Go იყენებს შეცვლილ დაბალი მეხსიერების მკვლელს და dex ოპტიმიზაციებს

იმის გათვალისწინებით, რომ Android Go ძირითადად განკუთვნილია 1 GB ოპერატიული მეხსიერების მქონე მოწყობილობებისთვის ან ნაკლები, საჭირო იქნება მეხსიერების უფრო აგრესიული მართვა. Android Go ცვლის დაბალი მეხსიერების მკვლელს (LMK) რამდენიმე განსხვავებული გზით. პირველი, როდესაც დიდი რაოდენობით ოპერატიული მეხსიერება გამოიყენება, დაბალი მეხსიერების მკვლელი მიდის "კრიტიკული წნევა"სახელმწიფო. ეს იმიტომ ხდება, რომ როდესაც მეხსიერების გამოყენება მაღალია, სისტემა დუნე გახდება მოწყობილობის საცავში არსებული swap ფაილზე წვდომის მუდმივი მცდელობის გამო. ოპერატიული მეხსიერების მკაფიო შენარჩუნება თავიდან აიცილებს სისტემას ამ სვოპ ფაილის გამოყენებას და ხელს შეუშლის მეხსიერების დაშლას. მეხსიერების გაფუჭება ხდება მაშინ, როდესაც მოწყობილობის მეხსიერება სავსეა და მუდმივად უწევს სვოპ ფაილის გვერდის გადატანა მოწყობილობის საცავში, რაც მნიშვნელოვნად ამცირებს შესრულებას.

სერვისები და WiFi სერვისები დაყენებულია "სიჩქარის პროფილი", რაც ნიშნავს, რომ ამ სერვისებში შერჩეული მეთოდები შედგენილია დროზე ადრე (AOT). (მეთოდი ეხება კოდის ერთობლიობას, რომელიც შეიძლება ნებისმიერ წერტილში გამოიძახოთ სახელით.) ეს ამცირებს RAM-ის გამოყენებას და საცავი, რადგან ანდროიდის სისტემას არ დასჭირდება განუწყვეტლივ ხელახლა შედგენა ძირითადი სერვისები, რომლებიც მუშაობს მასზე მოწყობილობა. იმავდროულად, გაზიარებული APK-ები დაყენებულია „სწრაფად“, რომელიც შექმნილია დამატებითი ბატარეის მუშაობისა და CPU-ის დამატებითი ციკლების მისაცემად, დექს ინსტრუქციების ოპტიმიზაციის გზით უკეთესი შესრულების მისაღებად.

dex ოპტიმიზაციის თვალსაზრისით, Android Go საკმაოდ ბევრს აკეთებს. დამწყებთათვის, 10 დღის შემდეგ იქნება განაცხადის დაქვეითება თუ ის არ გამოიყენება სივრცის დაზოგვისთვის. აქ დაქვეითება არ ეხება აპლიკაციის ფაქტობრივი ვერსიის ნომრის შემცირებას, არამედ ნიშნავს, რომ აპლიკაციის dalvik_cache წაიშლება. Dalvik-ის ქეში გამოიყენება ისე, რომ მოწყობილობას არ სჭირდება აპლიკაციების ხელახალი კომპილაცია, სამაგიეროდ, ის აგროვებს მის მხოლოდ ყველაზე საჭირო ნაწილებს და ქეშირებს. დანარჩენი კომპილირებულია Just in Time (JIT) შემდგენელის გამოყენებით, როდესაც აპლიკაცია გაშვებულია. თუ აპლიკაცია არ არის გამოყენებული 10 დღის განმავლობაში, მაშინ ასევე წაიშლება აპლიკაციის ძირითადი ნაწილები, რომლებიც წინასწარ არის შედგენილი. ეს კეთდება რაც შეიძლება მეტი სივრცის გასათავისუფლებლად. კიდევ ერთი მარტივი ცვლილება ის არის, რომ აპის ოპერატიული მეხსიერების მოხმარება არ უნდა აღემატებოდეს 256 მბ-ს, ასე რომ აპს არ შეუძლია გამოიყენოს მოწყობილობის მთელი ოპერატიული მეხსიერება.


არის თუ არა Android Go მორგებული ROM-ის განვითარების მომავალი დაბალი დონის მოწყობილობებზე?

ამჟამად, ჩვენ არ ვიცით ამაზე პასუხი, მაგრამ მომავალი ნათელია ჩვეული ROM-ის განვითარებისთვის ძველ მოწყობილობებზე. შეიძლება იყოს სხვა პრობლემები Android-ის უახლესი ვერსიის მოწყობილობაზე გაშვებისას, მაგრამ თეორიულად, განახლება უფრო ოპტიმიზირებული Android Go-ზე, რომელიც დაფუძნებულია Android Oreo-ზე. უნდა გააუმჯობესეთ ძველი, დაბალი დონის მოწყობილობა.