Android Nougat 용 공식 Xposed 프레임 워크가 여기 있습니다 – 즐겨 사용하는 모듈을 지금 다운로드하십시오!

안드로이드 생태계가 수년에 걸쳐 성숙해지면서 점점 더 적은 수의 사용자가 자신의 기기를 근절해야하는 이유를 찾았습니다. 사용자가 만족스러운 경험을 찾거나 Google의 SafetyNet API로 고양이와 마우스 게임을하고 싶지 않기 때문에 주식 펌웨어를 유지하려는 사용자의 추세가 증가하고 있습니다. 그러나 2016 년 초에 사용자에게 전화를 건 이유를 물었다면 아마도 Xposed Framework를 설치할 수 있었던 가장 큰 이유 일 것입니다. Android 7.0 Nougat가 처음 출시 된 지 1 년이 지났지 만 오래 기다렸습니다. Android Nougat 용 공식 Xposed Framework가 마침내 출시되었습니다.

지난 1 년 동안 Xposed Framework의 수석 개발자 인 Senior Recognized Developer rovo89는 Android Nougat 용 Xposed Framework의 진행 상황에 대한 몇 가지 업데이트를 제공했습니다. 일부의 경우 대기는 대부분 Xposed Framework가 Android Marshmallow에서 제공하는 추가 기능이 많기 때문에 견딜 수있었습니다. 그러나 많은 다른 사람들은 Xposed가없는 장치로 삶을 계속했습니다.

개발자 abforce가 AOSP 7.1.2에 대한 ART 하위 모듈을 출시했을 때 프로젝트에서 새로운 흥분을 엿볼 수 있었지만, 우리 고유의 GermainZ가 지적한 것처럼 abforce의 구현으로 인해 프레임 워크가 있어야함에 따라 공식 Xposed Framework 릴리스를 기다리는 것이 좋습니다 맞춤형 ROM에 통합. 또한이 비공식적 인 구현은 불완전하여 특정 Xposed 모듈에서 일관성이 없거나 버그가있는 동작으로 이어졌습니다.

abforce는 Android 7.1 Nougat에서 비공식적 인 Xposed를 사용하는 데 큰 역할을했지만, 그의 구현은 rovo89의 Xposed에 대한 비전과 반대되었습니다. 사용자와 개발자 모두에게 신뢰할 수 있고 사용하기 쉬운 계약을 제공하는 안정적인 솔루션이어야합니다. 우리가 의미하는 것은 사용자에게 문제없이 모듈이 작동해야 할뿐만 아니라 모듈이 설정된 방식이 사용자간에 일관성이 있어야 개발자가 Xposed Module이 앱 충돌로 인한 것인지 아닌지를 알 수 있습니다.

더 이상 rovo89 (Recognized Developer wanam의 도움을 받음)가 Xposed Framework 및 Installer의 공식 업데이트를 릴리스 할 준비가 되어 Android 7.0 / 7.1 Nougat와 호환되는 문제에 대해 더 이상 걱정할 필요가 없습니다. 즉, 사용자 정의 ROM을 설치하거나 Xposed를 즐기기 위해 불안정한 불안정한 버전을 엉망으로 만들 필요가 없습니다. 전화를 뿌리고 최신 Xposed Installer 응용 프로그램 (아래 링크 됨)을 설치하면 Xposed Installer가 Xposed을 설치하는 마술을 수행합니다 당신을 위해 .

모듈 리포지토리 찾아보기 Xposed Installer

특히 안드로이드 8.0 오레오가 출시 된 지 한 달이 지났기 때문에이 기능은 약간 늦게 보일 수 있습니다. 앞으로 몇 달 동안 안정적인 버전의 Android Oreo에 액세스 할 수있는 기기는 거의 없습니다. Google의 최신 통계에 따르면 Android Oreo는 모든 Android 기기의 0.2 % (누가에서 ~ 18 %에 비해)에 불과하지만 많은 사용자는 최신 ROM을 유지하기 위해 사용자 정의 ROM을 설치하는 것을 좋아합니다.

2017 년 10 월 기준 Android 버전 배포. 출처 : Google

포럼의 수많은 장치에서 사용할 수있는 비공식 Android 8.0 포트를 설치하더라도이 포트 중 상당수가 매일의 드라이버 상태가 아닙니다. 따라서 새로운 Google Pixel 2/2 XL, Sony Xperia XZ1 / XZ1 Compact 또는 Huawei Mate 10과 같은 곧 출시 될 장치에 대해 수백 달러를 지불하지 않는다면 짜낼 수 있습니다. Android Nougat의 Xposed Framework를 몇 개월 동안 사용했습니다.

그것이 당신처럼 들리면 Xposed Installer 및 framework zip에 대한 공식 포럼 스레드로 가서 Android Nougat 장치에서 실행하십시오.

Xposed Installer v3.1.2 다운로드 (첨부 파일)

누가 7.0 용 Xposed Installer (SDK24) 다운로드

Nougat 7.1 용 Xposed Installer (SDK25) 다운로드

Xposed Framework를 사용할 수 있거나 작동 방식에 익숙하지 않은 많은 새로운 사용자를 위해 아래에서 Xposed Framework에 대해 간단히 설명하고, 왜 흥분해야하는지, 왜 개발이 오래 걸 렸는지 설명하겠습니다. .


Xposed Framework를 설치해야하는 이유

커스텀 ROM을 플래시하지 않고 커스텀 ROM 기능을 원하십니까? GravityBox로 알려진 ROM을 조정하기위한 모든 Xposed 모듈의 어머니가 다루었습니다. 앱별로 디스플레이 설정을 사용자 정의하고 싶습니까? 앱 설정을 사용해보십시오. 행 아웃과 같은 특정 애플리케이션을 맞춤 설정하는 것은 어떻습니까? 또는 Instagram을 수정하여 원하는 게시물을 다운로드 할 수 있습니까?

GravityBox 알림 제어

앱 설정

Xposed는 개발자가 원하는대로 무엇이든 수정할 수있는 능력을 제공합니다. 주로 개별 응용 프로그램을 목표로하지만 시스템 전체 기능도 수정할 수 있습니다. 우리가 열거 한 예는 빙산의 일각에 불과합니다. 추가 할 수있는 추가 기능이나 수정 가능한 앱의 수는 놀랍습니다. 공식 Xposed Module 저장소를 검색하여 직접 확인하십시오. 이 새로운 릴리스와 Nougat 지원을 위해 일부 모듈을 업데이트해야 할 수도 있으므로 Nougat ROM에 설치하기 전에 확인하십시오!

Xposed 모듈은 어떻게 작동합니까?

Xposed Framework를 사용하면 모듈을 사용자가 설치하거나 시스템 응용 프로그램으로 사용하는 모든 응용 프로그램의 Java 메소드에 "후크" 할 수 있습니다. Xposed를 사용하면 대상 응용 프로그램의 원래 방법 이전, 중 또는 대신에 모듈이 자체 메서드 실행할 수 있습니다.

예를 들어 Gmail 애플리케이션에서 새 이메일 알림을 게시하는 방법을 사용한다고 가정 해보십시오. 기본적으로이 방법은 이메일을 보관 / 삭제 또는 회신하기위한 버튼으로 새 알림을 만듭니다. Xposed 모듈을이 방법에 연결하고 "읽은 것으로 표시"와 같은 새 버튼을 추가 할 수 있습니다 (예, 이미 해당 모듈이 있습니다).

위의 내용은 Xposed Framework가 모듈에서 수행 할 수있는 작업의 최종 결과를 지나치게 단순화 한 것입니다. 프레임 워크 자체는 엄청나게 복잡하며 사용자 지정 ROM이 필요없는 루팅 된 기기에서 거의 보편적으로 작동하게되므로 Android Nougat 용 Xposed가 완료되기까지 오랜 시간이 걸렸습니다.

Xposed 개발이 왜 그렇게 오래 걸립니까?

모듈이 다른 앱의 메소드에 연결될 수있게하는 Xposed의 마법은 Zygote 및 Android 런타임 (ART)의 작동 방식에 대한 깊은 지식이 필요합니다. 이러한 요구 사항은 이미 많은 사람들이 프로젝트에 참여하는 것을 배제하지만, rovo89가 지난 5 년간 Xposed의 주요 기여자 라는 사실로 인해 문제가 더욱 악화 되었습니다 .

그래서 Xposed의 마지막 공개 릴리스 이후 Xposed에 대한 수정 사항을 공개 소싱하라는 요구가 거부되었습니다. 그것은 그의 두뇌의 자식이며, 그것을 이해하고 수정하는 데 최고입니다. 따라서 그러한 늦은 단계에서 프로젝트에 더 많은 인력을 추가하면 프로젝트를 더 지연시킬 수 있습니다.

또한 rovo89가 소스를 지속적으로 업데이트 한 경우 누군가가 완성되지 않은 코드를 사용하여 범용 Xposed Installer없이 반 기능적 Xposed 프레임 워크를 빌드 할 것이라고 걱정했습니다. (이 정확한 일은 어쨌든 abforce 구현으로 발생했으며 다양한 설치 방법의 혼란은 rovo89의 주저를 정당화했습니다.)

따라서 우리가 할 수있는 최선의 방법은 rovo89에게 애완 동물 프로젝트를 할 시간을주는 것입니다. Xposed는 그의 전체 또는 시간제 직업이 아닙니다. 그것은 단순히 취미, 그가 5 년간 공동체의 이익을 위해 행한 일입니다. Xposed와 같이 복잡한 프로젝트에는 작업을 수행 한 다음 테스트 할 시간이 필요합니다. 다른 의무 때문에 자주하지 않았던 시간입니다. rovo89가 마지막으로 Xposed Framework 자체와 Xposed Installer가 모두 릴리스 될 준비가 될 때까지이 문제에 대한 공개 업데이트 중 일부를 문서화 한 것처럼 지난 1 년간 진전 이있었습니다 .

누가에서 Xposed가 작동하도록 rovo89는 무엇을 했습니까?

새로운 Android 릴리스에서는 때때로 ART 작동 방식이 변경되어 Xposed의 일부를 재 작업해야 할 수도 있습니다. Android 7.0 Nougat는 ART 용 Just-in-Time 컴파일러를 도입하여 예를 들어 애플리케이션의 런타임 성능을 향상시키는 데 도움을줍니다. 그러나 abforce의 비공식 Xposed Framework는 단순히 많은 ART 최적화를 비활성화하여 메소드 후킹이 올바르게 작동하도록합니다.

안드로이드 누가의 예술 최적화. 출처 : Google

반대로 rovo89의 구현은 JIT를 사용하여 메소드의 호출자를 재 컴파일하고 메소드 후크를 그대로 유지하여 Android Nougat의 모든 ART 최적화를 유지합니다 . 즉, ART 최적화를 강제로 비활성화하여 성능을 희생하지 않고도 Xposed 모듈의 이점을 누릴 수 있습니다.

Android Nougat 용 Xposed에서 rovo89가 마지막으로 안정적인 후킹 방법을 달성하기 위해 수행 한 작업에 대한 자세한 내용은 아래에서 제공 한 내용을 읽어보십시오.

rovo89의 전체 내용

Xposed의 핵심은 분명히 Java 메소드를 연결하는 기능입니다. 즉, 모듈이 이러한 메소드의 앞이나 뒤 또는 대신에 코드를 실행하도록합니다. 다른 모든 기능은이 기능을 기반으로하므로 항상 예상대로 작동하는 것이 중요합니다. 5 년 전 Xposed를 발명 한 이후 일반적인 개념은 동일했으며, 방법의 진입 점을 변경해야합니다. 실행 중에 진입 점이 확인되지 않으면 이는 실패하기 시작합니다. 실제로 ART의 일부 최적화의 경우입니다.

예를 들어, 컴파일 시점에 진입 점이 이미 알려진 경우 호출자가이 주소를 찾지 않고 직접이 주소로 이동할 수 있습니다. 또 다른 예는 인라인입니다. 이 예제를 고려하십시오.

ART는 twice () 메소드가 매우 단순하여 다음과 같이 doSomething () 메소드에 로직을 내장한다는 것을 알기에 충분히 똑똑합니다.

여전히 twice () 메서드를 연결할 수 있지만 런타임에 doSomething ()에서 더 이상 호출되지 않으므로 콜백이 발생하지 않습니다. 예술은 훨씬 더 영리합니다. 마법은 항상 42이므로 조건을 충족시킬 수 없습니다. 따라서 전체 doSomething () 메소드는 실제로 작동하지 않습니다.

이전 버전에서 Xposed는 이러한 최적화를 완전히 비활성화하고 모든 것을 다시 컴파일해야했습니다. 그것은 몇 가지 단점이 있습니다. 우선, ART 개발자는 최적화를 통해 성능을 최대화하는 데 환상적인 일을하고 있으며, 이를 비활성화하면 부분적으로 성능이 저하 될 수 있습니다 (얼마나 많은 양을 측정하지는 않았 음). 그런 다음 재 컴파일 자체가 항상 쉬운 것은 아니며 특히 처음에 많은 두통을 유발했습니다. 마지막으로, 재 컴파일 된 파일은 / system의 사전 컴파일 된 파일 외에 공간을 차지합니다.

Nougat의 비공식 버전도 이러한 최적화를 비활성화하지만 재 컴파일을 강제하지 않습니다 (원래 포트가 원래 ROM에 통합 되었기 때문에). 따라서 후크가 때때로 실행되지 않을 수 있습니다.

공식 버전을 사용하면 최적화 된 코드를 유지하면서도 안정적인 연결 고리를 얻을 수 있습니다. 어떻게 작동합니까? Xposed는 모든 호출을 기록합니다. APK가 컴파일되는 동안 또는 사전 최적화 된 코드를위한 별도의 패스에서 발생합니다. 이 추가 데이터는 많은 공간을 차지하지 않지만 Xposed가 특정 메소드가 인라인 된 위치를 찾을 수 있도록합니다. 따라서 메소드가 연결되면 모든 호출자가 최적화되지 않습니다. 즉, 코드가 더 이상 사용되지 않습니다. 이를 통해 후크 콜백이 확실히 호출됩니다. 그리고 호출자가 많이 사용되면 이번에는 메소드가 연결되어 일부 최적화가 적용되지 않는다는 사실을 알고 JIT로 다시 컴파일됩니다. 이것은 후킹 방법의 효과가 최소한으로 줄어든다는 것을 의미합니다. 예이!

이제 시도해보십시오. 파일 기반 암호화를 지원하도록 구성 경로를 변경해야했기 때문에 Xposed Installer 3.1.2를 사용해야합니다.

결론

우리는 Android 7.X Nougat 용 Xposed의 출시에 대해 찬성하기를 바랍니다. 대기 시간은 길지만 Xposed의 복잡한 복잡성을 피할 수는 없습니다. Xposed가 무엇인지 또는 어떻게 작동하는지 여전히 혼란 스럽다고 걱정하지 마십시오. (우리를 포함하여) 극소수의 사람들이 실제로 어떻게 작동하는지 이해합니다. rovo89와 같은 개발자는 작업을 패키징하는 데 최선을 다하므로 실제로 수행되는 작업을 이해할 필요가 없습니다.

Xposed Framework가 마음에 드십니까? 그가하는 멋진 일을 위해 rovo89에 기부하는 것을 고려하십시오. 프로젝트에 기여하는 데 필요한 것이 있다고 생각되면 rovo89의 GitHub 페이지를 확인하십시오.

rovo89에 기부

Xposed에 기여

Xposed 모듈을 찾고 계십니까? Xposed Framework Module 하위 포럼을 확인하거나 Labs 애플리케이션을 다운로드하고 Xposed Modules 컬렉션을 찾아보십시오.

Xposed 모듈 포럼

실험실 다운로드

안드로이드 오레오 진행

궁금한 점이 있다면 Android Oreo에서 Xposed를 얻는 과정이 다음과 같습니다.

이미 Android 8.0에서 작업을 시작했습니다. 살펴 봐야 할 몇 가지 새로운 언어 기능이 있지만 일반적인 개념은 여전히 ​​작동합니다. 여기에는 메소드가 연결될 때 호출자의 컴파일 된 코드를 무효화하는 모든 작업이 포함됩니다. 그래서 이번에는 훨씬 더 빠를 것이라고 확신합니다. 안드로이드 8.1은 크게 다르지 않으므로 추가 작업이 많이 필요하지 않습니다.