1. 개요
Xposed는 Android 애플리케이션의 동작을 수정할 수 있게 해주는 루팅된 단말용 프레임워크이다.2. 역사
2.1. 1세대 (Xposed)
Xposed는 XDA Developers의 rovo89가 처음 공개했다. 시스템 모딩이 활발하던 안드로이드 초창기 환경에서 apk 파일의 직접 수정 없이도 모듈 설치로 앱의 동작을 바꿀 수 있다는 것은 혁명과도 같은 사건이었다.Xposed가 공개되었을 때가 운없게도 Dalvik에서 안드로이드 런타임(ART)으로 전환하던 과도기였기 때문에 꽤 장기간 4.4/5.0 버전에서 실사용이 힘들었던 적이 있지만, 워낙 혁명적인 프레임워크였기에 관심이 끊이지 않았다고 할 수 있다.
Xposed의 공식 지원은 8.0 Oreo로 종료되었다.
2.2. 2세대 (EdXposed, LSPosed)
EdXposed는 Xposed API와 호환되는 Xposed 프레임워크 재구현 프로젝트로, Magisk의 모듈 중 하나인 Riru를 기반으로 작성되었다. EdXposed는 Android 11 버전을 마지막으로 지원을 종료했다.LSPosed는 EdXposed를 포크한 프로젝트로, Riru 기반으로 개발되다가 Riru의 지원 종료로 Zygisk[1] 기반으로 변경되었다.
LSPosed 팀은 오픈 소스 개발을 중단하고 텔레그램에서 비공개 버전을 배포하고 있고, 오픈 소스 LSPosed는 커뮤니티 기반으로 포크되어 유지보수되고 있다.#
3. 사용법
- 개발자 입장에서의 사용법은 Xposed Framework API 및 LSPosed wiki 참고.
- Magisk, KernelSU, APatch 등의 루트 매니저를 설치한다.
- 루트 매니저에 Zygisk 모듈을 설치한다. Zygisk 모듈에는 ZygiskNext (클로즈드 소스), ReZygisk (오픈 소스) 등이 있다. Magisk의 경우 설정에서 Zygisk를 활성화해도 된다.
- 루트 매니저에 LSPosed 모듈을 설치하고 재부팅한다.
이제 원하는 Xposed 모듈을 설치해서 사용할 수 있다. LSPosed Manager는 시스템 변조 감지를 막기 위해 기본적으로 앱 형태로 설치되지 않고 알림 상주, 바로가기 또는 루트 매니저의 모듈 탭에서 접근할 수 있게 되어있다.
3.1. 루팅 없이 사용
LSPatch 또는 NPatch 앱으로 Non-Root 환경에서도 각 앱을 패치해서 Xposed 모듈이 작동하게 할 수 있다. 앱을 패치하면 서명이 달라지기 때문에 업데이트 시 매번 패치를 수동으로 해줘야 한다.4. 관련 문서
[1] Riru의 기능을 Magisk에 통합한 것이라고 보면 된다.