프로젝트 소개

이 저장소는 실행 가능한 애플리케이션이 아니라 문서 모음입니다. 디컴파일된 Spotify Android APK와 spotify-muter라는 동반 프로젝트에 대한 리버스 엔지니어링 발견 내용을 기록합니다. 범위와 방법 분석된 빌드는 Spotify 9.1.84.2205(release r1)이며, JADX 1.5.6으로 난독화 해제 및 bad-code recovery를 사용해 디컴파일했습니다. 생성된 소스 트리는 decompiled/sources/ 아래에 배치됩니다. JADX가 중요한 메서드를 재구성할 수 없는 경우에는 대상 APKTool/smali 추출을 사용하며, 바이트코드 대상은 analysis/smali-targets/ 아래에 저장됩니다. 노트에 따르면 이는 MediaSession 액션 빌더와 광고 건너뛰기 UI 매핑의 일부를 복구하는 데 필요했습니다. 문서 구조 README는 번호가 매겨진 노트들의 색인 역할을 합니다: 리버스 엔지니어링 범위와 한계, 애플리케이션 아키텍처, 재생 및 플레이어 상태, Android MediaSession 연동, 광고 파이프라인, 광고 보고 및 추적, 건너뛰기와 재생 제한, 네트워킹(Esperanto 및 Cosmos), 하위 시스템/패키지 지도, Spotify Ad Muter 아키텍처, 미해결 질문이 포함된 연구 색인, Android 구성 요소 목록, 런타임 및 프레임워크 스택, 최상위 패키지 색인, 그리고 광고 마일스톤, 건너뛰기 지연, Android의 다음 트랙 건너뛰기 동작에 대한 상세 추적. 전반적 구조 노트는 SpotifyApplication에서 SpotifyMainActivity와 기능 UI로 이어지며, 플레이어 상태와 탐색/UI로 갈라지는 상위 수준 흐름을 제시합니다. 플레이어 상태는 ContextTrack과 Restrictions로 이어지며, 이들은 Android 시스템 UI 및 외부 연동으로의 MediaSession 내보내기와 Spotify 플레이어 코어로 전달되는 플레이어 명령 둘 다에 입력됩니다. 광고는 일반 트랙과 동일한 재생 모델에 삽입되지만 is_advertisement, ad_id, ad_playback_id, ad.is_skippable, ad.skippable_ad_delay 같은 광고 전용 메타데이터를 갖는 것으로 설명됩니다. 반복되는 관찰 사실은 Spotify가 PlayerState, ContextTrack, protobuf 요청/응답 유형 같은 안정적인 도메인 모델을 노출하는 반면, 주변 연결 코드의 상당수는 p204p 패키지로 심하게 난독화되어 있다는 것입니다. 신뢰도 표시 문서는 세 가지 수준을 구분합니다: Confirmed(디컴파일된 코드, smali, 리소스 또는 매니페스트에서 직접 확인됨), Strong inference(여러 독립적인 코드 경로가 동일한 해석을 뒷받침함), Uncertain(재구성/난독화 또는 네이티브/백엔드 경계로 인해 결정적인 결론을 내릴 수 없음). 노트는 JADX가 생성한 이름을 원래 소스 이름으로 취급하지 않는다고 명시합니다. 활용처 이 자료는 대형 난독화 애플리케이션에서 Android 앱 내부 구조, 미디어 재생 상태 처리, MediaSession 연동, 광고/건너뛰기 로직을 연구하는 독자를 대상으로 합니다. 이는 연구 및 참고 자료이며 최종 사용자를 위한 도구가 아니고, 동작하는 개조 클라이언트를 제공한다고 주장하지 않습니다.