이 기사에서는 rovo89의 다가오는 Nougat용 Xposed 릴리스와 Nougat에 사용 가능한 현재 구현 간의 차이점을 살펴봅니다.
Xposed 프레임워크는 거의 모든 장치와 호환되며 거의 모든 세부 사항을 조정할 수 있는 모듈을 쉽게 설치할 수 있도록 Android 장치를 사용자 정의하는 주요 방법이었으며 지금도 그렇습니다.
플래시를 사용하지 않고도 맞춤형 ROM이 제공하는 모든 기능을 사용하고 싶으십니까?중력상자 또는X터치위즈 그렇게 할 것입니다. 특정 앱의 DPI 변경과 같이 앱별로 특정 설정을 조정하고 싶으십니까?앱 설정 당신은 다루었습니까? 애플리케이션 개발자가 Google에서 허용하는 것과 같은 특정 기능을 추가하는 것을 생각했으면 좋겠습니다.행아웃을 맞춤설정하세요 또는 Facebook에서 다음을 수행할 수 있습니다.마음에 드는 Instagram 게시물을 다운로드하세요? 글쎄, Xposed는 개발자에게 거의 모든 것을 수정할 수 있는 권한을 제공하기 때문에 그럴 필요가 없습니다. 사용자 정의 ROM이 필요한 시스템 전체 기능이거나 특정 기능에 대한 조정이 필요합니다. 애플리케이션.
Xposed 프레임워크는 개발자에게 개발 용이성이라는 주요 이점을 제공합니다(ROM 조정을 위해 AOSP를 컴파일해야 하거나 Smali 코드를 편집해야 하는 것과 비교하여). 또한 사용자에게 다음과 같은 큰 이점을 제공합니다. 편의, 더 이상 원하는 모든 기능을 제공하는 ROM을 찾아서 플래시하도록 강요하지 않기 때문입니다. (대신 독립 모듈을 혼합하여 사용할 수 있음) 안정성과 안정성의 균형을 목표로 삼고 있습니다. 성능. 그것은 또한 만든다 응용 프로그램 조정 다른 서명을 처리할 필요가 없기 때문에 훨씬 쉽습니다. 결과적으로 사용자는 원본을 제거해야 합니다. 버전을 변경하거나 애플리케이션이 서명을 확인할 때 특정 과정을 뛰어넘습니다(수정된 YouTube 클라이언트가 처리하는 작업). 사례).
유일한 문제는 무엇입니까? 그 성격과 자유 시간의 양으로 인해 Xposed의 개발자(우리 자신의 수석 인정 개발자,
rovo89) Android 릴리스보다 뒤처지는 경우가 많습니다.Lollipop을 지원하도록 업데이트하는 데 약 4개월이 걸렸습니다., 그리고 누가가 오기까지 1년 정도 걸립니다. 생각해 보면 생각만큼 나쁘지는 않습니다. 실제로 누가(Nougat)를 사용하는 안드로이드 사용자 수 (약 13.5%, 하지만 Xposed의 대상 고객인 Android 매니아도 Nougat를 사용할 가능성이 더 높다는 점을 명심하세요. 그러나 좋아하는 Xposed 모듈을 사용하는 동시에 가장 뛰어난 최신 Android 버전을 사용할 수 없다는 것은 여전히 상당히 짜증나는 일입니다.Xposed 프레임워크의 소스 코드를 사용할 수 있게 되면(적어도 안정적인 릴리스 버전의 경우) 개발자는강제로 Rovo89의 수정 사항 중 일부를 Nougat에 포팅할 수 있는지 확인하기로 결정했습니다. 다른 더 간단한 접근 방식을 선택하여 abforce는 본질적으로 실제로 Xposed의 일부를 조정했습니다. 일단 설치되면 마법을 수행하고 자신의 ROM을 컴파일할 때 포함할 수 있도록 했습니다(그 후에는 다른 해결 방법이 나타났습니다). 이 접근 방식은 틀림없이 매우 다릅니다. 모든 사람이 쉽게 사용할 수 있는 Xposed의 핵심 장점 중 하나를 무시하기 때문입니다. 그러나 모든 진전은 환영하며 여러 명의 헤드가 작업을 처리하는 것이 유리할 수 있으며 새로운 통찰력을 제공할 수 있습니다. 우리가 보는 바와 같이 주요 문제는 이 개발을 둘러싼 잘못된 정보(다른 "개발자" 및 일부 블로그에 의해 퍼짐)와 커뮤니티의 일부 반응입니다. 이 기사를 통해 전체 그림이 더 명확해지기를 바랍니다.
우선, 공식 Xposed 프레임워크와 abforce 버전에 포함된 작업과 현재 진행 중인 작업을 이해하려면 프레임워크가 어떻게 작동하는지 살펴봐야 합니다. 프레임워크 자체는 프로젝트의 일부일 뿐, 우리는 일반적으로 프레임워크와 설치 프로그램을 모두 의미합니다. 왜냐하면 프레임워크는 많은 작업이 들어가는 범용 설치 프로그램이 없으면 많은 장점을 잃기 때문입니다.
Xposed의 강력한 기능은 간단한 개념에서 비롯됩니다. 즉, 모든 메소드를 "연결"할 수 있습니다(메소드는 작습니다). 모든 프로그램을 구성하는 부분) Xposed 모듈의 코드가 이전, 이후 또는 대신 실행되도록 합니다. 그것. 간단한 예를 들어보겠습니다. 메뉴 버튼을 클릭할 때 Instagram이 "showMenuOptions"라는 메서드를 사용하고 해당 메서드가 "신고" 및 "공유" 버튼 표시를 처리한다고 가정합니다. 예를 들어 Xposed 모듈을 생성하면 해당 메서드를 수정하여 이미지를 공유하는 대신 이미지를 다운로드하는 추가 버튼을 추가할 수 있습니다. 수정 범위는 간단한 조정(예: Play 스토어 변경 로그) 대대적인 점검(예: 중력상자, 이는 맞춤형 ROM이 가질 수 있는 모든 기능을 제공하는 것을 목표로 합니다)!
이는 Xposed를 강력하게 만들어 주지만 이는 방정식의 일부일뿐입니다. 다른 부분은 다재다능함, 즉 지원되는 Android 버전이 있는 거의 모든 장치에서 실제로 Xposed를 사용할 수 있다는 점과 사용 용이성입니다. 모든 사용자가 해야 할 일은 설치 프로그램을 가져오는 것뿐입니다. 설치 프로그램은 Xposed를 통합하기 위해 시스템을 동적으로 패치하고 마술을 부리는 것입니다. 모듈을 적용하려면 모듈을 설치하고 활성화한 후 재부팅하기만 하면 됩니다. 번거로움이 필요 없고 맞춤 ROM을 플래시할 필요가 없으며(특히 맞춤 ROM이 항상 실행 가능한 선택이 아닌 경우), 다른 서명으로 서명된 다른 APK를 설치하기 위해 APK를 제거할 필요가 없습니다. 필요한 것은 루트뿐입니다(사용자 정의 ROM을 가질 수 있으며 이는 많은 경우 의미가 있습니다. 그러나 Xposed는 맞춤형 ROM이 제공할 수 있는 대부분의 기능을 제공할 수 있지만 그 이상이기도 합니다.
하지만 이러한 단순함 뒤에는 많은 작업이 필요합니다.
- 모듈 개발자에게 제공되는 API는 안정적이고 작동이 보장되어야 합니다. Xposed 프레임워크는 특정 ROM 및/또는 후크 조합으로 인해 무작위로 실패할 수 없습니다(예외적인 경우 제외). 즉, 사용자에게 문제가 있는 경우 해당 문제는 사용자의 잘못이어야 합니다(예: 무언가를 올바르게 설치/활성화하는 것) 또는 모듈 개발자의 잘못(시스템에 버그가 있는 경우) 기준 치수). 그러나 프레임워크 자체가 의도한 대로 작동하고 있으며 사용자를 실망시키고 개발자를 혼란스럽게 만드는 오류의 원인이 아니라는 것은 거의 확실해야 합니다.
- 사용자의 경우, 프레임워크는 장치와 ROM에 쉽게 설치할 수 있어야 합니다., 최신 버전의 TouchWiz를 실행하는 삼성 기기나 LineageOS가 설치된 Nexus를 사용하는 경우에도 마찬가지입니다. Xposed 설치 프로그램은 모든 작업을 배후에서 처리합니다. 다양한 장치와 ROM 조합에서 설치 프로그램과 프레임워크를 테스트하려면 많은 작업이 필요합니다. OEM의 구현 차이로 인해 오류가 발견되는 경우가 많으므로 모든 사용자의 안정성을 보장하기 위해 수정해야 합니다.
- 주요 Android 개정으로 인해 때로는 주요 변경 사항이 발생할 수 있으며, 이를 위해서는 이러한 변경 사항에 적응하기 위해 프레임워크 아키텍처의 일부를 다시 생각해야 합니다. 때로는 최신 버전에서 추가 기회가 나타나기 때문에 더 나은 제품을 만드는 데 약간의 추가 시간이 필요합니다. 예를 들어 ART가 처음 도입되었을 때 Xposed는 후킹이 올바르게 작동할 수 있도록 특정 최적화를 비활성화했습니다. 누가의 경우,JIT(Just-In-Time) 컴파일러 에 기회를 가져온다최적화를 유지하세요.
위의 작업 중 대부분은 사소한 세부 사항으로 진행되며 대부분의 프레임워크는 의도한 대로 작동하지만 불일치와 사소한 문제로 인해 사용자가 사용하기에는 도박이 되고 모듈에 대한 지원 및 개발은 악몽이 됩니다. 개발자. 하지만 출시된 제품은 누구나 놀라지 않고 사용할 수 있는 것을 목표로 하고 있습니다. 물론 일부 OEM의 변경 사항에 적응하려면 더 많은 노력이 필요하기 때문에 몇 가지 예외가 있습니다. 규모가 작으며 대다수의 사용자(및 개발자)는 안정적이고 신뢰할 수 있는 Xposed를 즐길 수 있습니다. 경험. 발생한 모든 예외는 다음과 같이 문서화됩니다.명확한 면책조항 아무도 놀라지 않도록.
위 사항을 염두에 두고 Xposed에 대한 rovo89의 비전은 사용자와 개발자에게 안정적이고 사용하기 쉬운 계약을 제공하는 안정적인 솔루션이 되는 것입니다. 동의하지 않을 수도 있지만 그의 철학은 간단하고 이해하기 쉽습니다. 의도한 대로 사용할 준비가 되었을 때 해제하면 이전에 해제하는 것보다 더 많은 문제가 발생하기 때문입니다. 이익.
Abforce의 Nougat용 Xposed ART 하위 모듈
우리는 abforce의 작업을 "포트" 또는 "비공식 Xposed"라고 부르는 것을 꺼립니다. 이는 부정확하고 오해의 소지가 있기 때문입니다. 지금까지 살펴본 것처럼 Xposed에는 두 가지 주요 구성 요소가 있습니다.
- 후킹 방법의 마법을 처리하는 Xposed 프레임워크 자체의 핵심입니다.
- 프레임워크가 모든 장치에 쉽게 올바르게 설치되도록 보장하는 Xposed 설치 프로그램.
abforce가 한 일은 첫 번째 부분(Xposed 프레임워크만 해당)에 있는 rovo89의 Marshmallow 코드를 Nougat에 포트하는 것이었습니다. 이 방식은 사용자 정의 ROM을 컴파일하는 동안 변경 사항을 구워야 하는 방식이었습니다. 게다가 프레임워크의 많은 사소하지만 중요한 부분이 Nougat에 완전히 적용되지 않았습니다. 따라서 동작은 일관되지 않을 수 있으며 대부분 작동하지만(하지만 ~ 아니다~을 위한모든 사람), 신뢰할 수 없습니다. 모듈 개발자와 사용자의 경우 불완전하고 일관성 없는 구현에 의존하는 것은 관련된 모든 당사자에게 나쁜 경험을 제공합니다., 와 함께 일부 모듈이 전혀 작동하지 않거나 장치가 부팅되지 않습니다.. 많은 사용자가 아무것도 아닌 것보다는 뭔가, 개발자의 관점은 여전히 완벽하게 이해할 수 있습니다(특히 고지 사항이 가짜 지원 질문과 징징거림을 멈추지 않는다는 점을 명심한다면).
(위의 두 가지 주요 사항 외에도 Nougat에 도입된 변경 사항을 활용하기 위해 최종 공식 Xposed 프레임워크에 추가 변경이 있을 것으로 예상됩니다.)
대부분이 단순히 대화하는 것으로 만족했을 때 abforce가 훌륭한 작업을 수행했다는 점에 유의해야 합니다., 그러나 그의 작업은 완전한 Xposed 경험과는 거리가 멀고 어떤 개발자나 블로그도 달리 주장하지 않습니다. 다시 한 번 말씀드리지만, 우리는 이 일에 실제 작업과 노력을 쏟고 있는 모든 실제 개발자들에 대해 존경심을 갖고 있습니다.) 사실, 잠시 후에 다루겠지만, 커뮤니티의 일부 반응(사용자든 "개발자든")은 이러한 개발 체인에서 유일하게 신랄한 부분입니다.
추적을 중단하고 바로 요점으로 들어가겠습니다. 모든 커뮤니티에는 나쁜 요소와 측면이 있습니다. Android 매니아만큼 큰 커뮤니티에서는 나쁜 요소가 작은 부분일 때 큰 부분처럼 보일 수 있습니다(크기는 크지만 상대적인 측면에서는 여전히 미미함). 그러나 설탕 코팅 없이는 Xposed for Nougat 개발에 대한 커뮤니티의 많은 반응이 극도로 유치하고, 사려 깊지 않거나 무책임했습니다.
첫 번째 주요 문제는 누가(Nougat) 출시에 너무 오랜 시간이 걸리기 때문에 "Xposed의 죽음"에 대해 많은 사람들이 보여준 거만한 태도였습니다. 이것은 rovo89에도 불구하고 업데이트그리고보증ART의 초기 버전이 도입되었을 때 Lollipop에서 발생한 정확한 시나리오에도 불구하고 말이죠. Xposed 사용을 중단하는 것은 괜찮지만 다른 사람의 능력을 모욕하거나 다른 철학을 가지고 있거나 번쩍이는 요구 사항이 즉시 충족되지 않는다는 이유로 다른 사람을 공격하는 것은 아닙니다. 이는 개발자가 자신의 개발 방법론과 그 이유를 표현한 완전 무료 프로젝트의 경우 더욱 그렇습니다.
커뮤니티 반응의 또 다른 문제는 abforce 작업의 본질을 오해하여 많은 사람들이 이를 새로운 Xposed로 환영하거나 Nougat용 포트로 광고한다는 것입니다. 이에 대한 주요 문제는 "개발자"가 단점을 이해(또는 신경 쓰지 않고) 플래시 가능한 버전을 제공하려고 서두르는 것입니다. 일부 스레드에서는 전혀 제공되지 않으며 일부는 rovo89(Xposed에 대한 대부분의 작업 뒤에 있는 사람)가 아니라 abforce를 인정하기까지 합니다. 기여자.
마지막으로 rovo89의 개발 철학을 다시 한번 언급해야 할 것 같습니다. 많은 사용자들은 최신 변경 사항을 오픈 소스로 유지하는 것이 도움이 될 것이라고 주장합니다. 이론상으로는 좋아 보이지만,실제로는 쉽지 않다 특히 rovo89의 설명을 고려한다면:
[...] 나는 현재 상태를 밀어내는 것만으로는 프로젝트에 도움이 되지 않을 것이라고 믿습니다. 우리는 코드를 컴파일하는 사람들이 "일부" 릴리스를 매우 빠르게 볼 수 있을 것입니다. 그들이 인식하지 못하는 문제와 해야 할 일에도 불구하고 잘 작동하고 "그들의 포트"로 게시합니다. 의. 그러니 저를 이기적이라고 부르세요. 하지만 저는 이렇게 반쯤 완성된 릴리스를 보고 싶지 않습니다.[원천]
실제로 여러 "개발자"가 지원하면서 현재 상황에 대한 상당히 좋은 예측임이 입증되었습니다. abforce의 변경 사항과 최소한의 경고, 불완전한 크레딧으로 플래시 가능한 ZIP을 제공하는 동시에 다음을 요청합니다. 기부.
이러한 설명을 통해 귀하의 의심이 일부 해결되고 귀하가 가졌을 수 있는 오해가 해결되기를 바랍니다. Xposed는 열정적이고 화려한 커뮤니티의 큰 부분을 차지한 놀라운 프로젝트였으며 Nougat용 Xposed는 기회로 가득한 또 하나의 거대한 이정표가 될 것입니다. GravityBox와 같은 모듈 사용 이미 Nougat 지원을 제공하고 있는 rovo89의 완성된 프로젝트는 다양한 옵션으로 돌아올 것입니다.
Nougat ROM의 Xposed를 기대하시나요? 댓글로 알려주세요!