Treble

덤프버전 :

파일:나무위키+넘겨주기.png   관련 문서: 안드로이드(운영체제)

파일:다른 뜻 아이콘.svg
은(는) 여기로 연결됩니다.
축구 관련 내용에 대한 내용은 트레블 문서
트레블번 문단을
트레블# 부분을
, {{{#!html }}}에 대한 내용은 문서
#s-번 문단을
#s-번 문단을
# 부분을
# 부분을
, {{{#!html }}}에 대한 내용은 문서
#s-번 문단을
#s-번 문단을
# 부분을
# 부분을
, {{{#!html }}}에 대한 내용은 문서
#s-번 문단을
#s-번 문단을
# 부분을
# 부분을
, {{{#!html }}}에 대한 내용은 문서
#s-번 문단을
#s-번 문단을
# 부분을
# 부분을
, {{{#!html }}}에 대한 내용은 문서
#s-번 문단을
#s-번 문단을
# 부분을
# 부분을
, {{{#!html }}}에 대한 내용은 문서
#s-번 문단을
#s-번 문단을
# 부분을
# 부분을
, {{{#!html }}}에 대한 내용은 문서
#s-번 문단을
#s-번 문단을
# 부분을
# 부분을
, {{{#!html }}}에 대한 내용은 문서
#s-번 문단을
#s-번 문단을
# 부분을
# 부분을
, {{{#!html }}}에 대한 내용은 문서
#s-번 문단을
#s-번 문단을
# 부분을
# 부분을
참고하십시오.





1. 개요
2. 적용 기준
3. 특징
3.1. 안드로이드 프레임워크와 제조사 하드웨어 작동 코드의 분리
3.2. VTS
3.3. GSI
3.4. GKI
3.5. 그 외
4. 효과
4.1. 구글의 경우
4.2. 제조사의 경우
4.3. 커스텀 펌웨어 개발자 및 헤비유저들의 경우
4.4. 일반 유저들의 경우
5. 관련 항목



1. 개요[편집]


파편화 문제 해결을 위해 도입된 안드로이드의 설계 방식으로 안드로이드 8.0 (오레오)에서 도입되었다.


2. 적용 기준[편집]


안드로이드 8.0 (오레오) 및 그 이후의 버전으로 출시되는 모든 안드로이드 기기들은 반드시 트레블을 지원하도록 규정되어 있다. 즉 안드로이드 7.1.2 (누가) 이하의 버전으로 출시되었으나 오레오 이후의 버전으로 업데이트를 받는 기종들은 트레블을 지원할 의무가 없는 것.



3. 특징[편집]


구글 블로그의 안드로이드 트레블 소개 (영어)

3.1. 안드로이드 프레임워크와 제조사 하드웨어 작동 코드의 분리[편집]


기존에 안드로이드는 제조사가 하드웨어를 작동시키는 부분[1]과 안드로이드 프레임워크[2]가 명확하게 분리가 되어 있지 않았으며, 이 때문에 새로운 버전의 OS가 출시될 때마다 매번 제조사가 새로운 OS에 맞춰 자사의 하드웨어 작동 코드를 리메이크해야만 하는 문제점이 있었다. 이는 안드로이드 기기 OS 업데이트의 난이도를 높여 늦은 업데이트, 제조사 역량 부족으로 인한 업데이트 포기, 그리고 업데이트 지연 및 미실시로 인한 각종 호환성 및 보안 문제와 같은 문제점을 불러왔다.[3]

그러나 트레블이 도입된 후로는 제조사 하드웨어를 작동시키는 코드와 안드로이드 프레임워크가 분리되었기 때문에[4] 제조사의 하드웨어 구현을 그대로 두고 OS만을 업데이트하는 것이 가능해 졌다. 즉 제조사 입장에서는 자사의 하드웨어 구현 코드를 새 OS에 맞게 리워크할 필요 없이 새로운 OS에 최소한의 수정[5]만을 하면 바로 업데이트를 적용할 수 있게 되었다. 즉 기존 대비 업데이트 난이도가 대폭 낮아진 것인데, 이는 제조사들이 업데이트를 기존보다 적은 비용으로 보다 신속하게 제공할 수 있도록 하는 효과를 불러온다.

또한 기존에는 OS 업데이트 시 하드웨어 작동 부분의 리워크가 반드시 동반되었기 때문에 칩셋 제조업체가 비협조적일 경우 업데이트 구현 난이도가 매우 높아지거나 아예 불가능해지기도 했는데[6], 트레블이 도입된 이후로는 하드웨어 구현 부분의 수정이 불필요해지는 만큼 이와 같은 사례는 발생하지 않을 것이라고 기대할 수 있다.


3.2. VTS[편집]


안드로이드 홈페이지의 VTS 설명

트레블이 적용된 이후로 도입된 테스트로, 공급업체 테스트 모음(Vendor Test Suite)의 줄임말이다. 간단하게 요약하면 제조사의 하드웨어 작동 코드 및 커널 설계 규정 준수 여부를 확인하는 테스트인데, 안드로이드를 탑재한 기기를 출시하기 위해서는 이 테스트를 통과해야만 한다.


3.3. GSI[편집]


안드로이드 홈페이지의 GSI 설명
안드로이드 홈페이지의 안드로이드 11 GSI 다운로드 페이지[7]

일반 시스템 이미지(Generic System Image)의 줄임말로, 특정 기기 및 제조사와 관련된 코드가 전혀 없는, 말 그대로 완전 순정의 안드로이드 시스템 이미지다. 트레블이 적용된 모든 기종들에 설치할 수 있으며, 해당 기종의 CPU 아키텍처[8] 및 파티션 구조[9]만을 선택하면 된다. 즉 엑시노스 탑재 기종이나 스냅드래곤 탑재 기종이나 둘 다 64비트 지원 기종일 경우 같은 ARM64 이미지를 설치하게 되는 것. 또 한가지의 특징이 있다면 현재 실행 중인 OS보다 더 최신의 이미지를 설치할 수도 있다는 점인데, 이는 하드웨어 코드 변경 없이 OS 업데이트가 가능하다는 것을 보여주는 부분이기도 하다. 즉 과거에는 구글 레퍼런스 기종이 아니라면 별도로 포팅되지 않은 이상 사용할 수 없었던 순정 안드로이드 롬을 누구나 사용할 수 있게 되었으며, 제조사가 공식적으로 업데이트를 제공하지 않아도 최신 OS를 사용할 수 있게 되었다는 것이다.

물론 헤비유저가 아닌 일반 사용자가 GSI를 설치 및 사용하는 것은 결코 쉽다고 할 수는 없다. 일단 부트로더 언락이라는 루팅에 준하는 과정을 거쳐야만 설치를 할 수 있으며, 제조사에서 아예 부트로더 언락을 미지원하는 일부 기기들에는 설치 자체가 불가능하다. 여기에 삼성전자 출시 기종들은 녹스 워런티가 깨져 삼성 페이 등의 일부 기능들을 영구히 쓸 수 없게 된다. 설치 과정 또한 상당히 복잡한데, 기본적으로 안드로이드 SDK의 도구들인 adb 및 fastboot을 다룰 수 있어야 하며[10], 삼성전자 기종의 경우 순정 펌웨어를 분해해서 Odin으로 플래싱 가능한 이미지를 만들어 내는 상당히 귀찮은 작업을 해야 한다.[11] 더군다나 GSI는 기본적으로 개발 및 테스트용으로 빌드되기 때문에 사용자 편의성과는 거리가 먼 편이라는 점까지 감안해야 한다.[12] 그러나 이런 불편함을 감안하더라도 최신 버전의 순정 안드로이드를 누구나 사용할 수 있게 되었다는 것은 큰 의의가 있다.


3.4. GKI[편집]


안드로이드 GKI 설명 페이지

안드로이드 일반 커널 설명 페이지

일반 커널 이미지(Generic Kernel Image)의 줄임말로, 특정 기기 및 제조사에 특화된 코드가 전혀 없는 공용 리눅스 커널 이미지를 의미한다. 기존에는 제조사가 리눅스 커널 소스코드를 직접 수정해서 각 기종에 맞는 커널 이미지를 만들어 냈지만, GKI가 도입된 이후로는 동일한 CPU 아키텍처(ARM64 등)을 가진 모든 기종들이 같은 커널 이미지를 공유하게 되며, 각 기종별로 필요한 부분들은 커널 모듈로 분리하여 부팅 시 로딩하는 방식으로 변경된다. 이를 위해 기존에 커널 및 램디스크를 포함하던 boot 파티션이 GKI를 탑재하는 boot 파티션과 각 제조사별로 요구되는 커널 모듈을 탑재하는 vendor_boot 파티션으로 분리되었다. 이 설계는 안드로이드 11에서 5.4 커널을 탑재하여 출시하는 기종들부터 적용된다.[13]

  • GKI 1.0은 안드로이드 11에서 5.4 커널을 탑재한 기종들부터 적용되며, 시판되는 기기에는 제조사가 수정한 커널 이미지가 탑재되기는 하지만 해당 이미지를 구글이 제공하는 GKI로 교체해도 상기한 VTS를 통과할 수 있도록 GKI와의 호환성을 유지하는 것을 목적으로 한다.
  • GKI 2.0은 안드로이드 12에서 5.10 커널(또는 그 이상)을 탑재한 기종들부터 적용되며, 시판되는 기기에도 구글이 제공하는 GKI가 탑재된다. GKI로 인해 큰 성능 저하가 발생하지 않도록 하고, CPU 아키텍처 별로 사용되는 커널 이미지를 하나로 통일시키게 된다.


3.5. 그 외[편집]


이 외에도 구글은 마이크로 커널을 적극 활용하고 현재까지 커널에 통합되어 분리하기 힘들었던 GPU 드라이버 같은 부분을 Google Play에서 업데이트 형식으로 배포하는 등의 트레블 이후의 계획도 가지고 있다고 하며, 실제로 퀄컴은 스냅드래곤 865부터는 GPU의 별도 업데이트 계획을 발표했다.


4. 효과[편집]



4.1. 구글의 경우[편집]


제조사들이 업데이트를 더욱 효율적으로 빠르게 제공할 수 있게 됨에 따라 파편화 및 구형 기기들에 대한 보안 문제와 관련된 부담이 줄어드는 효과가 있을 것으로 예상된다. 또한 트레블의 적용으로 기기 간의 OS 설계의 차이가 줄어들어 호환성과 관련된 부담 또한 낮아질 것으로 보인다.


4.2. 제조사의 경우[편집]


트레블 이전에는 출시된 기종의 OS 업데이트를 하려면 하드웨어 관련 코드를 새롭게 수정해야만 했지만, 트레블 적용 이후에는 이에 대한 부담이 현저히 낮아지면서 업데이트 제공을 기존보다 훨씬 적은 비용으로 쉽게 제공할 수 있게 된다. 물론 새롭게 출시된 OS에 자사의 UI를 적용하는 등의 수정 작업은 트레블 이후에도 여전히 존재하지만, 적어도 기존에 비해 업데이트를 제공하기 훨씬 쉬워졌으며 소프트웨어 사후지원에 대한 부담이 전반적으로 낮아질 것으로 기대된다.

실제로 트레블이 도입된 후 삼성전자갤럭시 S10부터 자사의 플래그십 모델 및 일부 상위 보급형 기종들에 안드로이드 OS 업데이트를 3회 제공할 것이라고 발표했으며 갤럭시 A10e와 같은 최하위급 보급형 기종들에도 업데이트를 2회 제공하고 있는데[14], 이 또한 트레블의 영향이 있는 것으로 보인다.

물론 트레블의 영향이 미미하다고 보는 시선도 있는데, 일단 트레블이 적용되어도 제조사 입장에서는 OS 업데이트에 대한 부담이 전보다 낮아졌을 뿐, 완전히 없어지지는 않았기 때문이다. 위 기사에 따르면, 트레블이 적용된 후에도 OS 업데이트에 소요되는 기간이 이전과 큰 차이가 없었다고 한다.


4.3. 커스텀 펌웨어 개발자 및 헤비유저들의 경우[편집]


트레블의 도입 덕분에 이론상으로 프로그래밍을 전혀 할 수 없는 유저들도 안드로이드 구조에 대한 기본적인 이해만 있다면 누구든지 커스텀 펌웨어를 포팅할 수 있게 되었다. 단적으로 말해, 아무런 커스텀 펌웨어가 없는 국내 단독 출시 기종이여도 GSI 이미지에 순정 vendor 이미지 및 커널을 조합하고 플래싱하여 기본적인 버그들만 잡으면 끝. 참 쉽죠? 물론 실전에서는 SELinux 정책 작성과 각종 버그 픽스, 성능 향상과 같은 부분 때문에 아무나 커스텀 펌웨어를 개발할 수 있게 된 것 까지는 아니지만, 적어도 기존에 비해서는 훨씬 난이도가 내려간 것이 맞다.

또한 트레블 도입 이후로 XDA Developers 등지에서 GSI를 모든 기종에 설치할 수 있다는 점을 응용하여 Lineage나 RR롬 같은 커스텀 롬을 하나의 통일된 이미지로 빌드하여 다수의 기기에 설치할 수 있도록 하는 방식으로 발전시키고 있다.


4.4. 일반 유저들의 경우[편집]


커스텀 펌웨어 및 루팅에 관심이 없는 유저들은 직접적으로 트레블의 효과를 체감하기는 힘들다. 트레블이 안드로이드의 구조를 획기적으로 변경시킨 것은 맞지만, 이 변경사항들은 어디까지나 기기 간 설계 파편화를 줄이고 업데이트 난이도를 낮추는 등 백엔드 중심으로 적용되었기 때문에 일반적인 유저들은 트레블이 적용되었다는 점 만으로 무언가를 체감할 수는 없기 때문.

다만 일반적인 유저들도 간접적으로는 효과를 체감할 수 있는데, 사용 중인 기기에 대한 소프트웨어 지원이 예전보다 개선된다는 점 때문이다. 기기에 대한 OS 업데이트 및 보안 패치는 일반 유저들 입장에서도 분명히 관심사항일 수 밖에 없는데[15], 예전보다 업데이트가 더욱 신속하게, 더욱 자주 이뤄지게 된다면 이는 분명한 혜택이다.


5. 관련 항목[편집]




파일:크리에이티브 커먼즈 라이선스__CC.png 이 문서의 내용 중 전체 또는 일부는 2023-11-04 15:51:45에 나무위키 Treble 문서에서 가져왔습니다.

[1] 이를 하드웨어 추상화 계층, 영어로 HAL이라고 부른다.[2] 사용자가 직접 사용하는 부분으로, 각종 애플리케이션 및 그 외의 시스템 코드를 뜻한다.[3] Windows에 비유를 해보자면 각 컴퓨터에 맞는 디바이스 드라이버들이 따로 설치/제거가 되지 않고 OS에 붙어 있어서 제조사가 컴퓨터에 맞는 설치 이미지를 만들어 주지 않으면 새로운 OS로 업데이트 자체가 불가능한 상황인 것이다.[4] 기존의 /system 파티션이 안드로이드 프레임워크만을 탑재하는 /system 파티션과 제조사 하드웨어 작동 코드가 탑재된 /vendor 파티션으로 분리되었다. 이 외에도 하드웨어를 구현시키는 HAL의 구조가 완전히 변경되어 프레임워크와 분리되었다.[5] 모델명 추가, 보안 서명 추가 등. 물론 현실에서는 각 제조사별로 자사의 UI(예를 들면 One UI 등)을 적용시키고 통신사 앱을 탑재하는 등 다양한 수정이 들어간다.[6] 대표적인 예시로 과거에 안드로이드 4.0 업데이트가 좌절된 모토로라 아트릭스가 있다.[7] 구글 앱스가 탑재되지 않았다.[8] ARM, ARM64, x86, x86_64[9] A/B 업데이트와 관련된 부분이다.[10] 물론 이들은 아주 기본적인 도구들이기 때문에 CLI를 다룰 수 있다면 사용이 매우 쉽다.[11] XDA Developers에 작성된 갤럭시 A21sGSI 펌웨어 제작 가이드.[12] 당장 한국어 키보드 애플리케이션부터 직접 설치해야 한다(...)[13] 갤럭시 S21에서 이 방식을 사용하고 있다.[14] 참고로 과거에는 갤럭시 M 스타일과 같이 OS 업데이트를 단 1회도 제공받지 못하는 보급형 기종들도 존재했으며, LG전자의 경우 명백한 플래그십 기종인 옵티머스 LTE IILG G Pro 2와 같은 기종들에도 업데이트를 단 1회만 제공하기도 했다.[15] OS 업데이트 지원이 끊기면 최신 기능을 사용할 수 없게 될 뿐만이 아니라 각종 보안 문제에도 취약해진다.

관련 문서