Android Go가 구형 Android 휴대폰의 Android 8.1 Oreo 실행을 돕는 방법

Android Go는 RAM이 적은 새로운 기기를 위해 Google에서 Android Oreo 8.1을 제거한 버전입니다. 결과적으로 구형 장치에서의 맞춤형 ROM 개발에도 도움이 될 수 있습니다.

Android Go는 Android 8.1 Oreo를 기반으로 한 Google의 Android 버전으로, RAM이 1GB 이하인 저가형 기기에 최적화된 Android 버전을 목표로 합니다. 지난 5월 구글 I/O 개발자 컨퍼런스에서 발표됐고, 결국 그해 12월에 더 자세한 내용이 공개되었습니다.. 차세대 보급형 장치용으로 제작되었다고 합니다. 개발도상국에서는 여전히 스마트폰을 사용하여 인터넷에 접속하고 앱을 사용하세요.

Go는 평균 Android Oreo 설치보다 50% 적은 저장 공간을 차지하는 것을 포함하여 다양한 성능 최적화 및 개선 사항을 제공합니다. Android 런타임(ART) 및 커널 최적화 덕분에 Android Go를 실행하는 기기는 동일한 기기에 설치된 일반 Android Oreo보다 평균 15% 더 빠르게 실행됩니다. 이러한 최적화는 Google에서 만든 다양한 특수 빌드 구성을 통해 이루어지며 이에 대해서는 나중에 설명하겠습니다.

Android Go는 다음과 같은 특별한 "Go" 애플리케이션의 이점도 제공합니다. 파일 이동, 유튜브 고 그리고 구글 지도 이동. 이는 Google에서 만든 애플리케이션의 경량 버전으로, 더 효율적으로 실행하기 위해 요구 사항을 줄였습니다. 즉, Android Go 기기를 사용하는 사용자는 일반 Android Oreo 사용자와 동일한 혜택을 대부분 누릴 수 있습니다. 주력 제품이나 약간 더 비싼 예산에 많은 돈을 쓰지 않고도 Google의 애플리케이션 제품군을 사용할 수 있습니다. 장치.

Google이 시장을 확장하는 것이 전부입니다. 하지만 Android Go가 대부분 빌드 구성과 최적화된 Google 앱 제품군으로 구성되어 있다면 개발자가 자신만의 Android Go 빌드를 만들 수 있을까요? 즉, 그래 우리는 할 수있어.

몇몇 LineageOS 개발자는 이미 Android Go에 최적화된 맞춤형 ROM을 구축하고 있습니다.

우리는 이미 XDA Recognized Developer와 같은 일부 맞춤형 ROM 개발자로부터 Android Go를 어느 정도 활용하고 있는 것을 보고 있습니다. 아드리안DC, Android Go 빌드 구성을 갖춘 LineageOS 15.1에 대한 작업 오래된 소니 휴대폰 몇 개. 문제의 기기는 Sony Xperia SP, Sony Xperia T, Sony Xperia V 및 Sony Xperia TX입니다. 이 장치는 모두 2012년과 2013년에 제작되었지만 Android를 사용하는 Android 8.1 Oreo 기반 LineageOS 15.1을 받게 됩니다. 기기가 Google 'Go' 앱을 유동적으로 실행할 수 있게 해주는 Go 빌드 구성은 결국 Gapps의 Android Go 세트가 출시된.

모든 개별 LOS 관리자는 일련의 빌드 구성 및 기타 최적화가 포함된 Android Go 구성 빌드를 도입할 수 있어야 합니다. 이것이 의미하는 바는 출시 시 Android 4.0.4 Ice Cream Sandwich를 실행하는 장치인 Sony Xperia T를 구입한 사람들이 다음을 사용할 수 있다는 것입니다. YouTube Go 및 Google Maps Go와 같은 애플리케이션을 사용하여 기기에서 Android 8.1 Oreo를 더욱 최적화했습니다. 주력 수준의 성능으로 실행되지는 않을 것입니다. 하지만 그래야 해 쓸 수 있는—특히 2012년으로 거슬러 올라가는 장치의 경우.


Android Go가 구형 Android 휴대폰의 Android Oreo 실행을 돕는 방법

Android의 빌드 구성은 기기에 플래시하기 위해 시스템 이미지를 컴파일할 때 적용되는 Android 시스템의 다양한 측면과 관련된 매개변수 세트입니다. 일반적으로 이는 시스템 작동 방식을 변경하며 Android Go의 주요 최적화는 다음에서 비롯됩니다. 이 빌드 구성.

Android Go를 컴파일하는 데 사용되는 빌드 구성입니다.

XDA Recognized Developer와 이야기를 나눴습니다. 많은, Android Go가 실제로 작동하게 만드는 변화, 즉 현재 일어나고 있는 변화를 이해하는 데 큰 도움을 주었습니다. 이러한 빌드 구성 중 일부는 다시 컴파일하지 않고는 변경할 수 없으며 ROM 자체 청사진의 일부입니다. 이는 완전히 대문자로 표시된 플래그입니다.

그러나 이러한 플래그는 모두 저장 및 메모리 사용과 관련된 Android의 다양한 측면과 관련이 있습니다. 여기에는 다음이 포함됩니다 자동 저장 관리, Android의 메모리 부족 킬러인 dex(알빅 전-실행 가능한 파일) 최적화 프로그램 및 앱 실행을 위한 RAM 제한. APK 파일은 이러한 DEX 파일로 구성되어 있으므로 어떻게 보면 APK 파일을 단순히 많은 .dex 파일이 포함된 ZIP 파일. 이는 Android가 실행할 때 실제로 실행되는 파일입니다. 애플리케이션. 대신 자동 저장소 관리는 Android 시스템이 아닌 Files Go 애플리케이션에 의해 제어됩니다.

Android Go 유틸리티 Android의 RAM 부족 모드

Android 4.4 KitKat에서 Google은 '라는 새로운 플래그를 도입했습니다.저램"는 512MB RAM을 갖춘 장치를 지원하는 것을 목표로 했습니다. 시스템을 여러 가지로 최적화합니다. 이러한 변경 사항은 RAM 장치를 낮추는 데 큰 도움이 됩니다.

향상된 메모리 관리

  • 검증된 메모리 절약 커널 구성: ZRAM으로 교체합니다.
  • 캐시되지 않고 너무 큰 경우 캐시된 프로세스를 종료합니다.
  • 대규모 서비스가 스스로를 A 서비스로 되돌리는 것을 허용하지 마십시오(따라서 런처가 종료될 수 없습니다).
  • 유휴 유지 관리가 너무 커지는 프로세스(현재 IME와 같이 일반적으로 종료할 수 없는 프로세스도 포함)를 종료합니다.
  • 백그라운드 서비스 시작을 직렬화합니다.
  • RAM이 적은 장치의 메모리 사용 조정: 더 엄격한 OOM(메모리 부족) 조정 수준, 더 작은 그래픽 캐시 등

위의 변경 사항은 기본적으로 시스템이 ZRAM을 사용하여 가능한 경우 압축된 RAM을 사용하도록 보장합니다. ZRAM은 기본적으로 스왑 파일인 RAMdisk(기기의 일반 저장소를 사용하는 것보다 훨씬 빠른 RAM을 사용하는 저장 매체)입니다. RAM 사용량이 높고 응용 프로그램에 여전히 메모리가 필요한 경우 스왑 파일이 사용됩니다. 이는 RAM보다 훨씬 느리므로 가능하면 피해야 합니다. 본질적으로 이는 단순히 메모리 내용을 압축합니다.

시스템 메모리 감소

  • system_server 및 SystemUI 프로세스를 정리했습니다(몇 MB 절약).
  • Dalvik에서 dex 캐시를 미리 로드합니다(몇 MB 절약).
  • 검증된 JIT-off 옵션(프로세스당 최대 1.5MB 절약)
  • 프로세스별 글꼴 캐시 오버헤드가 감소되었습니다.
  • ArrayMap/ArraySet을 도입하고 HashMap/HashSet에 대한 더 가벼운 공간 대체품으로 프레임워크에서 광범위하게 사용됩니다.

여기서 주로 일어나는 일은 장치에서 실행되는 다양한 프로세스의 메모리 소비를 가능한 한 보수적으로 줄이는 것입니다. 모든 메가바이트의 RAM이 중요하므로 백그라운드에서 가능한 한 적은 메모리를 사용하기 위해 필수 시스템 서비스가 제거되었습니다.

Android Go는 수정된 낮은 메모리 킬러 및 dex 최적화를 사용합니다.

Android Go는 주로 RAM이 1GB 이하인 기기에 사용된다는 점을 감안할 때 더욱 적극적인 메모리 관리가 필요합니다. Android Go는 몇 가지 다른 방식으로 LMK(Low Memory Killer)를 수정합니다. 첫째, RAM을 많이 사용하면 메모리 부족 킬러는 "임계 압력" 상태. 메모리 사용량이 높으면 기기 저장소의 스왑 파일에 지속적으로 액세스하려고 시도하여 시스템이 느려지기 때문입니다. RAM을 깨끗하게 유지하면 시스템이 이 스왑 파일을 사용할 필요가 없고 메모리 스래싱을 ​​방지할 수 있습니다. 메모리 스래싱은 장치의 메모리가 가득 찼을 때 발생하며 지속적으로 장치 저장소의 스왑 파일을 페이징해야 하므로 성능이 크게 저하됩니다.

서비스 및 Wi-Fi 서비스가 '로 설정되어 있습니다.속도 프로필," 이는 이러한 서비스의 선택 메소드가 AOT(Ahead-of-Time)로 컴파일됨을 의미합니다. (메서드는 이름으로 언제든지 호출할 수 있는 코드 세트를 나타냅니다.) 이렇게 하면 RAM 사용량이 줄어들고 Android 시스템은 Android에서 실행되는 필수 서비스를 지속적으로 다시 컴파일할 필요가 없기 때문에 장치. 한편, 공유 APK는 더 나은 성능을 얻기 위해 dex 명령을 최적화하여 추가 배터리 수명과 추가 CPU 주기를 제공하도록 설계된 "quicken"으로 설정됩니다.

dex 최적화 측면에서 Android Go는 상당히 많은 작업을 수행합니다. 우선, 10일 후에는 애플리케이션을 다운그레이드하다 공간을 절약하는 데 사용되지 않는 경우. 여기서 다운그레이드한다는 것은 애플리케이션의 실제 버전 번호가 감소하는 것을 의미하는 것이 아니라 해당 앱의 dalvik_cache가 지워진다는 의미입니다. Dalvik 캐시는 기기가 앱을 다시 컴파일할 필요 없이 가장 필요한 부분만 컴파일하고 캐싱하는 데 사용됩니다. 나머지는 애플리케이션이 실행될 때 JIT(Just in Time) 컴파일러를 사용하여 컴파일됩니다. 그러나 애플리케이션을 10일 동안 사용하지 않으면 사전 컴파일된 애플리케이션의 필수 부분도 제거됩니다. 이는 가능한 한 많은 공간을 확보하기 위해 수행됩니다. 또 다른 간단한 변경 사항은 앱이 기기의 RAM을 모두 사용할 수 없도록 앱의 RAM 사용량이 256MB를 초과하는 것을 허용하지 않는다는 것입니다.


Android Go는 저가형 기기용 맞춤 ROM 개발의 미래인가요?

현재로서는 이에 대한 답을 알 수 없지만 구형 장치에서의 맞춤형 ROM 개발의 미래는 밝아 보입니다. 기기에서 최신 버전의 Android를 실행하는 데에는 다른 문제가 있을 수 있지만 이론적으로는 Android Oreo를 기반으로 더욱 최적화된 Android Go로 업그레이드하는 것이 좋습니다. ~해야 한다 오래된 저가형 장치를 더 잘 작동하게 만듭니다.