Android 7.1 Nougat용 비공식 Xposed 프레임워크

click fraud protection

이제 Xposed Framework를 Android 7.1 Nougat ROM에 제공하는 플래시 가능한 zip을 사용할 수 있습니다. 지퍼는 OnePlus 3T뿐만 아니라 다른 많은 휴대폰에서도 작동합니다!

몇 달 간의 기다림 끝에 마침내 Nougat ROM에 대한 Xposed Framework 지원이 이루어졌습니다(비공식적이긴 하지만). 자체 XDA 포럼의 일부 재능 있는 개발자 덕분에 이제 플래시 가능한 zip을 통해 Android Nougat ROM에 Xposed Framework를 설치할 수 있습니다.

지금까지 Nougat에서 Xposed의 미래는 다소 불안해 보였습니다. Rovo89 - Xposed Framework의 개발자 - 일주일 전에 Android Nougat 지원에 대한 업데이트를 제공했습니다.. Rovo89는 Xposed가 Nougat에서 제대로 작동하려면 아직 해야 할 일이 많이 남아 있으며 인내심을 가져야 한다고 말했습니다.

다행히 임시방편을 기다리셨던 분들을 위해 임시방편이 나온 것 같습니다. PurifyOS 팀은 개발자가 제공한 ART 모듈을 확보했습니다. 강제로 작업을 하고 있었습니다 (그리고 오늘 초쯤에 올라온거), 플래시 가능한 zip을 통해 다른 사용자 정의 ROM에 설치할 수 있도록 조정했습니다(ROM을 컴파일할 때 구현하지 않아도 됨).

현재 Xposed SDK25를 포함하여 다양한 플랫폼에 사용 가능한 세 가지 버전이 있습니다. ARM64, Xposed SDK25 및 Xposed SDK25 엑스86. PurifyOS 팀은 Android 7.1을 기반으로 OxygenOS를 실행하는 OnePlus 3T를 사용하여 이 새 버전의 Xposed를 테스트했지만 다음 환경에서도 작동해야 합니다. Android Nougat를 실행하는 다른 휴대폰과 사용자들은 이미 이를 다른 ROM에 성공적으로 설치할 수 있었다고 보고하고 있습니다. 장치. 예를 들어, OnePlus 5의 몇몇 사용자는 이 기능이 작동한다고 보고했습니다(OnePlus에서 실행된다는 점을 고려하면 놀랄 일도 아닙니다). 3T는 괜찮습니다). 그러나 Samsung Galaxy S6용 AOSP 기반 ROM을 실행하는 사용자도 그것이 효과가 있다고 보고했습니다.

알아내야 할 특이한 점이 있을 것이며 지금까지 모든 사람이 이 기능을 작동하도록 관리한 것은 아니며 일부 사용자는 강제 종료 및 기타 이상한 현상을 경험했습니다. 그러나 이러한 경우에도 이전 버전의 Android OS가 출시된 이후 Nougat에서 Xposed가 출시되기를 기다리고 있었다면 여전히 시도해 볼 수 있습니다. 기존의 모든 Xposed Framework 모듈이 즉시 작동하는 것은 아니지만 Amplify와 같은 일부 인기 있는 모듈은 작동하는 것으로 보고되었습니다.

장치나 ROM이 지원되는지 여부가 확실하지 않은 경우 정기적으로 백업하고 스레드를 주의 깊게 읽으십시오. 마지막으로, 중복 질문을 남기기 전에 '검색' 기능을 꼭 이용해 주세요. Android O가 곧 출시될 수도 있지만 속담처럼 "안하는 것보다 늦게하는 것이 낫다." 또한 많은 사용자가 꽤 오랫동안 자신의 기기에서 Android O를 보지 않을 것이므로 Xposed는 뒤처진 느낌이 들지 않도록 좋은 치료법이 될 것입니다.


업데이트: Rovo89의 답변

Xposed Framework를 기반으로 개발된 원본, XDA Senior Recognized Developer rovo89는 이러한 최근 개발에 대한 자신의 생각을 Github에 답변하고 있습니다.

내 경험에 의하면 기본을 갖추는 것은 그리 어렵지 않지만 세부적인 내용을 익히는 데는 엄청난 시간이 걸린다고 말할 수 있습니다. 80-20 규칙과 비슷하지만 95-5 정도에 더 가깝습니다.

이전 릴리스용으로 설계한 후킹 접근 방식은 상당히 안정적이며 최신 릴리스에도 적용될 수 있습니다. 나는 당신이 모든 장소를 확인하는 데 대부분의 시간이 필요하다고 가정합니다. IsProxyMethod() 그리고 IsDirect() 호출되어 새로운 메소드 수정자를 고려해야 하는지 여부를 결정합니다(예: 매개변수 사용). true 또는 아닙니다). 그렇게 하지 않았다면 그러한 호출이 새로 도입된 곳을 놓쳤을 수도 있습니다. 다음과 같은 방법도 마찬가지입니다. InstallStubsForMethod(), 이는 후크된 메소드를 위해 호출되는 경우에도 원래의 원래 메소드로 작동해야 합니다. 이것이 관련될 수 있는 더 많은 장소를 확인해야 합니다. 아직 시간이 걸리겠지만, 이를 놓치면 디버그하기 매우 어려운 모호한 충돌이나 오작동을 볼 수 있습니다.

게다가 처음부터 완전히 컴파일된 ROM에 대해서만 후크가 제대로 작동하는 접근 방식을 취했습니다. 기본 ROM 및 대부분의 사용자 정의 ROM(빌드하는 동안 포트를 포함하지 않음)은 물론 장치가 이전에 컴파일했을 수 있는 모든 앱에도 적용됩니다. 따라서 특수 ROM을 실행하는 지워진 장치로 모든 것을 다시 시작해야 합니다. 그렇지 않은 경우 최적화(예: 인라인)으로 인해 메서드가 전혀 호출되지 않을 수 있으므로 후크가 작동하지 않습니다. 이것에 대한 최악의 점은 정확한 동작이 ROM 또는 심지어 사용자가 장치를 사용하는 방식에 따라 달라진다는 것입니다(이제 앱은 프로필을 기반으로 컴파일됩니다). 모듈은 무작위로 실패하고 모듈 개발자는 자신이 무엇을 잘못했는지 궁금해할 것입니다(대답: 없음). 모든 전제 조건이 충족되지 않으면 매우 신뢰할 수 없는 API입니다. Google이 다음과 같은 업데이트를 게시했다고 상상해 보세요. OnClickListener ROM을 처음부터 컴파일하지 않는 한 버튼이 호출되지 않는 경우가 있습니다. 개인적으로 이것은 큰 한계입니다.

그는 계속한다:

이 포트는 처음부터 ROM을 다시 컴파일하기 위한 용도로만 사용되므로 플래시 가능한 ZIP을 게시하는 것은 전혀 의미가 없습니다..

그리고 우려했던 대로, API 계약을 이행하지 못하는 경우가 많은 불완전한 포트라는 경고는 단 한 번도 없습니다.. 😠 이는 개발자와 사용자에게 좋지 않습니다. 최소한 지원/사용 여부를 결정할 수 있도록 불완전하다는 점을 알아야 합니다. 나는 큰 경고 없이는 감히 그런 일을 할 수 없습니다. 사실 저는 완벽주의자이기 때문에 불완전한 버전을 전혀 게시하지 않을 것입니다. 신뢰성은 저에게 매우 중요합니다.

방금 Git 로그를 확인했고 10월에 기본 후킹(이 포트에서와 같이)이 준비되었습니다. 그 이후로 저는 한계를 없애는 작업을 해왔습니다. 미리 컴파일된 ROM에서 더 안정적으로 만들기 위해 재컴파일 부분도 포팅할 수 있었지만 여전히 이상적이지는 않습니다. 위에서 설명했듯이 이제 JIT를 사용하면 모든 최적화를 유지하면서 후킹의 직접적인 영향을 받는 메서드만 무효화(및 재컴파일)할 수 있습니다. 이는 단순한 복사 및 붙여넣기 이상의 작업이므로 매우 어렵습니다. 그리고 이것이 끝나기 전까지는 아무것도 출판하지 않을 것입니다. (지금까지) 9개월은 정말 긴 시간이라는 건 알지만, 여가 시간이에요. 이사로 인해 새 아파트에 왔기 때문에 몇 달 동안(!) Xposed에서 작업을 전혀 할 수 없었고, 그 외에는 시간이 매우 제한되어 있었습니다.

우리는 이러한 최근의 발전이 여러분 모두가 알고 있는 진정한 "Xposed"가 아니라는 점을 분명히 해야 합니다. 좋아하지만 기능적으로는 현재 Android에서 일부 Xposed 프레임워크 모듈을 사용할 수 있습니다. 누가. 우리는 Android용 Xposed Framework의 공식적이고 안정적이며 호환 가능한 버전을 기다리지 않았다고 해서 여러분을 비난하지 않을 것입니다. Nougat, 그러나 우리는 이 반복이 단지 일부 사용자의 요구를 충족시키기 위한 임시방편일 뿐이라는 점을 분명히 하고 싶습니다. 지금. 앞으로는 Xposed가 처리되는 방식이 아닐 것 같습니다.


XDA 포럼에서 Nougat용 비공식 Xposed 프레임워크 다운로드