Substratum이 유연성 없는 TouchWiz에 더 많은 선택권을 가져온 방법

[projekt.] 팀의 Sungstratum은 Substratum을 통해 RRO-OMS의 모든 테마 기능을 Samsung Nougat 장치에 제공합니다! 더 자세히 알아보려면 계속 읽어보세요!

Android 테마는 해킹된 편집부터 Substratum에 이르기까지 많은 발전을 이루었습니다. 성스트라툼. 몇 년 전 안드로이드 토론에서 '테마'라는 단어는 '선택자'라는 단어로 자주 대체되었습니다. Android를 테마로 만드는 토대를 마련한 CyanogenMod에 있는 T-Mobile 테마 선택기 파라다이스. OS의 모양을 수정하는 기능은 사용자에게 또 다른 차원의 사용자 정의를 제공하여 장치를 훨씬 더 개인화할 수 있도록 변경할 수 있습니다.

좋은 작업은 두 가지 다른 방향으로 계속되었습니다. 테마 선택기는 CyanogenMod 테마 엔진으로 발전했지만 테마 리소스에 대한 수년간의 노력에도 불구하고 CMTE는 더 이상 사용되지 않게 되었습니다. 다른 대안이 나타났을 때.


RRO 및 레이어

대안 중 하나의 기반은 Sony가 다음과 같은 새로운 프레임워크 형태로 코드를 기여할 때 마련되었습니다. 런타임 리소스 오버레이(RRO) AOSP에 승인되었습니다. 이 프레임워크는 런타임 중에 애플리케이션 리소스(따라서 이름)를 교체하는 기능을 제공합니다. "오버레이" 자체는 Gingerbread 초기부터 Android에 존재하고 지원되었습니다. 아마도 그 이전에도 마찬가지였을 것입니다), 애플리케이션이 특정 특정 작업에서 작동하도록 하기 위해 리소스를 교체하는 데 주로 사용되었습니다. 장치. RRO에 대한 Sony의 접근 방식에는 장치에 존재하는 다른 해당 리소스에 매핑된 리소스를 사용하는 APK를 허용하도록 자산 관리자를 수정하는 것이 포함되었습니다. 그런 다음 APK의 이러한 새 리소스는 런타임에만 기본 리소스 위에 오버레이되어 시스템이 마치 이러한 새 리소스가 항상 시스템의 일부였던 것처럼 작동할 수 있도록 했습니다.

RRO 프레임워크는 Lollipop 5.0이 공개되기 전에 AOSP에 병합되었지만 5.0의 초기 몇 가지 빌드에서는 다른 변경 사항으로 인해 프레임워크의 일부가 손상되었습니다.

Android 6.0 Marshmallow의 개발자 프리뷰는 비록 제한적이긴 하지만 기능적인 RRO 프레임워크를 최초로 추가한 것입니다., 기본 Android 수준에서 맞춤설정 가능성의 문을 엽니다. 따라서 OEM이 고의로 기본 Android 테마 옵션에서 벗어나려고 시도하지 않는 한, '테마'가 구현되는 방식에 대한 접근 방식에서 일관성 수준이 유지될 수 있습니다. 기계적 인조 인간.

AOSP가 RRO를 고려하면서 모든 것을 통합할 수 있는 최선의 방법을 찾고 있는 동안 개발자 팀은 다음과 같이 말했습니다. 비트사이코 "라는 공동 노력을 함께 진행했습니다.레이어". 레이어는 Android 5.1 Lollipop의 스톡 RRO 기능을 기반으로 확장되어 스톡 RRO보다 더 복잡한 리소스 전환을 가능하게 하고 테마에 대한 더 많은 요소 제어를 허용합니다. 레이어는 RRO를 기반으로 구축되었기 때문에 모든 레이어 테마가 Marshmallow의 기본 RRO에서 작동하는 것은 아니기 때문에 ROM 제조업체는 ROM에서 레이어 기능을 활성화하기 위해 추가 코드를 추가해야 했습니다.

한편, 소니는 안드로이드 테마를 향한 자체적인 노력을 계속해 나갔습니다. 작업이 시작되었습니다 OMS(오버레이 관리자 서비스), 공급자가 동적으로 우선 순위를 제어하고 오버레이를 활성화 및 비활성화할 수 있도록 하는 오버레이 관리용 클라이언트입니다. OMS가 AOSP에 병합되어 Android O로 진출할 예정입니다.. XDA 인정 개발자 니콜라스쿰 그는 그의 소식통을 통해 Android O가 OMS를 참조한 것으로 여겨지는 "동적 오버레이"를 표시할 것임을 확인할 수 있었습니다.

OMS는 전통적으로 이러한 기능이 테마의 통제하에 있었기 때문에 레이어와 충돌을 일으켰습니다. OMS에서 제기된 문제를 처리하고 레이어의 기능을 확장하기 위해 BitSyko는 다시 팀을 구성했습니다. [프로젝트]) 만들다 하층. Substratum은 OMS 기능을 갖춘 클라이언트입니다. 레이어 기능을 OMS와 조화시키려고 시도하고 과거의 다른 테마 솔루션에서 다른 요소도 차용합니다. 오버레이는 더 이상 개별 요소를 주제로 서로 겹치지 않았으며 이제 필요한 모든 요소가 단일 오버레이에 주입되었습니다. 장치에서 컴파일과 같은 기능을 사용하면 변경 사항 사이에 재부팅할 필요 없이 테마를 적용할 수 있습니다. 상당히 최종 사용자가 테마를 시험해보고 실험하기가 더 쉽습니다. Substratum은 처음부터 적극적으로 개발되어 왔으며 모든 기능과 기능을 나열했습니다. 추가된 기능은 이 기사의 범위를 벗어나므로 이 기사의 실제 주제로 넘어가겠습니다. 조각.


하층을 성층으로

이전 섹션에서 설명했듯이 Substratum은 재고 OMS 기능과 재고 RRO 기능(레이어를 통해)을 확장하는 방법으로 시작되었습니다. Substratum은 대부분의 다른 OEM이 충돌하는 변경을 했기 때문에 AOSP 기반 ROM과 함께 사용되도록 의도되었습니다. 이는 Substratum이 Samsung의 스킨과 같이 편집된 UX 스킨의 수정 사항과 공존하는 것을 허용하지 않습니다. 예.

삼성은 자체적으로 누가(Nougat)에서 자체 기기 전반에 걸쳐 사용할 수 있는 테마 솔루션을 개발 중이었습니다. Sony와 달리 삼성은 테마 코드를 AOSP에 다시 기여하는 데 관심을 보이지 않았습니다. 그러나 삼성의 솔루션은 상당히 기본적이었기 때문에 AOSP는 실제로 많은 것을 잃지 않았습니다. Touchwiz에 내장된 삼성의 테마 솔루션은 Samsung Galaxy S6에서 실제로 모습을 드러냈지만 앞서 언급했듯이 달성할 수 있는 기능이 상당히 제한되었습니다. 그 전에는 갤럭시 알파를 시작으로 제한된 실험이 있었지만 대부분의 시스템 UI 요소는 범위를 벗어났습니다. 테마는 배경 화면과 아이콘은 물론 다이얼러, 연락처, 메시지, 알림 영역과 같은 몇 가지 삼성 기본 앱도 변경할 수 있습니다.

결과적으로 삼성의 테마 엔진은 연장하다 AOSP에 있는 RRO입니다. 또한 삼성은 RRO를 확장한 후 자체 내부 버전의 OMS를 다시 만들었으므로 RRO와 OMS 구현이 AOSP와 다릅니다. 그러나 놀랍게도 그 양은 그리 많지 않습니다. 이는 Touchwiz의 독특함과 복잡성을 고려할 때 비정상적인 동작입니다. 최신 삼성 플래그십을 사용하는 테마 사용자들은 RRO 오버레이를 설치하고 타사 애플리케이션 테마를 지정할 수 있다고 보고했습니다.

이것은 [프로젝트] 팀이 Substratum에서 삼성 장치를 공식적으로 지원하는 방법을 조사해야 하는 단서였습니다. 팀은 앱의 RRO/레거시 섹션에서 소량의 코드를 변환했지만 루트를 요청하고 재부팅을 요청하면서 오버레이가 설치되도록 특정 인텐트를 실행했습니다. 그런 다음 팀은 다음 실행 시 전체 자산을 새로 고칠 수 있도록 테마를 통해 영향을 받는 애플리케이션이 백그라운드에서 강제 종료되었는지 확인하기 위해 노력했습니다.

우리는 XDA 인정 개발자에게 물었습니다. 니콜라스쿰 삼성의 RRO-OMS 비공개 소스 구현에 맞서 작업할 때 팀이 직면한 과제에 대한 통찰력을 제공합니다.

우리가 직면한 문제는 지식이 많지 않은 많은 사람들에게 다소 모호하고 알려지지 않았습니다. 오픈 소스든 폐쇄 소스든 테마 시스템 이해 - 모든 것에는 자체 시험판이 있고 오류 단계. 이 경우 삼성과 협력하면서 많은 문제를 발견했지만 가장 큰 문제는 시스템 의도가 그렇지 않다는 것입니다. 설치가 완료된 후 오버레이에 대해 실행됩니다(예: 방송 수신기 활용). “android.intent.action. PACKAGE_ADDED” - 테마 서비스는 특정 Samsung의 시스템 서명의 일부가 아닌 모든 것을 거부합니다. 테마 서비스 권한을 받기 때문에 가장 어려운 부분은 해결 방법을 찾아야 한다는 것입니다. 약.

삼성의 테마 엔진과 함께 Substratum을 사용하는 방식은 동일한 시스템을 활용하는 것입니다. 그들은 RRO로 축약되거나 Substratum 사용자들 사이에서 레거시로 알려진 Sony Resource Runtime Overlay 시스템의 고도로 수정된 버전을 사용합니다. 그러나 차이점은 삼성 테마에는 설정에서 이러한 오버레이를 숨기는 추가 권한이 있으므로 수동으로 하나씩 제거할 수 없다는 것입니다. 우리는 동일한 시스템을 사용하지만 AOSP/Sony의 구현을 활용하므로 Samsung Themes는 완전한 테마 프레임워크를 사용할 수 있습니다. Substratum 오버레이는 "fwk" 존재하지 않는 중재자 대상을 건드릴 수 없습니다. 우리 모두 프레임워크가 "Android" 패키지라는 것을 알고 있기 때문입니다. 이름.

[project.]가 삼성의 RRO 구현과 함께 상대적으로 쉽게 작업할 수 있다는 것이 이상해 보였습니다. 삼성 기기를 사용해 본 사람이라면 누구나 삼성이 얼마나 어려운 일을 하는지 증명할 수 있을 것입니다. 우리는 팀이 포팅 중에 직면한 특정 블록에 대해 문의했습니다.

실제로 몇몇 사용자에게 영향을 미치는 일종의 보안 메커니즘이 있습니다. 즉, 시작 시 오버레이가 되돌아갑니다. 이는 삼성이 장치를 부팅하는 방식 때문입니다. TouchWiz/Samsung Experience에서는 대부분 7.0을 사용하고 있기 때문에 "앱 최적화"라는 새로운 방법을 사용합니다. Android Nougat 아이콘과 함께 백그라운드에서 업그레이드 중이라는 알림이 표시됩니다. 따라서 이 앱 최적화 방법은 대상도 언로드합니다. 이로 인해 부팅 시 궁극적으로 idmapping 프로세스가 중단되고(대상 패키지가 존재하지 않기 때문에) 일부 사용자는 재부팅.

또한 몇몇 삼성 테마, 특히 @envy~의 Dark/Black 테마에서도 이런 일이 일어나는 것을 볼 수 있습니다. 디스플레이 -> 탐색 모음의 기본 탐색 모음 색상을 검정색으로 만듭니다. 실제 기본 색상은 다음과 같습니다. 하얀색. 검은색으로 설정한 후 키보드를 열 수 있으며 탐색 표시줄은 검은색으로 유지됩니다. 많은 장치에서 재부팅 시 무작위로 되돌려집니다.

테마가 다시 부각되면서 Sungstratum과 같은 사이드 브랜치에 대한 Substratum의 앞으로 계획은 무엇입니까?

앞으로 우리는 현재 사용자를 위해 작은 앱을 애드온에 병합하여 그들이 장치에 설치된 모든 테마가 다음에서 설치되면 Samsung Theme Service를 중지할 수 있습니다. XDA. 따라서 XDA에서 삼성 테마 형식의 테마를 사용하는 사람들은 애드온을 사용하여 이러한 문제를 방지할 수 있습니다. 삼성의 서비스는 재부팅할 때마다 기본 테마로 되돌립니다(삼성 스토어에서 설치되지 않았기 때문에). 공무상). 해당 사이트에서 얻을 수 있는 무료 삼성 개발자 키가 필요하지만 sungstratum 애드온 다운로드와 함께 사전 번들로 제공됩니다.


AOSP 및 Android O의 최근 및 향후 변경으로 인해 Google의 초기 OS는 훨씬 더 많은 개인화 기능을 사용자에게 전달할 것으로 보입니다. 일부 OEM에서는 맞춤형 사용자 인터페이스와 UX 추가 기능을 제거할 계획도 있습니다. AOSP를 선호하고 삼성과 같은 다른 업체들은 자체 테마 솔루션을 사용하여 충분히 근접합니다. 우리는 테마가 훨씬 더 많은 사람들의 사용자 경험에서 중요한 역할을 하는 미래를 상상합니다. 장치의 모양을 실제로 제어할 수 있는 곳, 사용자 인터페이스 미학을 귀하가 원하는 대로 맞춤화할 수 있는 곳 너. 그리고 이 멋진 커뮤니티와 Substratum과 같은 프로젝트의 집단적 힘이 없었다면 우리는 그러한 미래에 도달할 수 없었을 것입니다.


Substratum 포럼에서 Samsung Nougat용 Substratum 통합을 확인해 보세요!GitHub의 하층