Sobre o projeto

Este repositório é um conjunto de documentação, não um aplicativo executável. Ele registra descobertas de engenharia reversa de um APK Android do Spotify decompilado e de um projeto complementar chamado spotify-muter. Escopo e método A build analisada é o Spotify 9.1.84.2205 (release r1), decompilada com o JADX 1.5.6 usando deobfuscação e recuperação de código inválido. A árvore de código-fonte gerada é colocada em decompiled/sources/. Onde o JADX não consegue reconstruir um método crítico, usa-se extração direcionada com APKTool/smali, com alvos de bytecode armazenados em analysis/smali-targets/. As notas indicam que isso foi necessário para recuperar o construtor de ações do MediaSession e partes do mapeamento da interface de pular anúncios. Estrutura da documentação O README funciona como um índice para notas numeradas: escopo e limitações da engenharia reversa; arquitetura do aplicativo; reprodução e estado do player; integração com o Android MediaSession; o pipeline de publicidade; relatórios e rastreamento de anúncios; saltos e restrições de reprodução; rede (Esperanto e Cosmos); um mapa de subsistemas/pacotes; a arquitetura do Spotify Ad Muter; um índice de pesquisa com perguntas em aberto; um inventário de componentes Android; a pilha de runtime e framework; um índice de pacotes de nível superior; e um rastreamento profundo dos marcos de anúncios, atraso de salto e comportamento do skip-next do Android. Modelo mental As notas apresentam um fluxo de alto nível, do SpotifyMainActivity e das interfaces de recursos, ramificando-se para estado do player e navegação/UI. O estado do player leva a ContextTrack mais Restrictions, que alimentam tanto a exportação do MediaSession (para a interface do sistema Android e integrações externas) quanto os comandos do player para o núcleo do player do Spotify. Os anúncios são descritos como inseridos no mesmo modelo de reprodução das faixas comuns, mas carregando metadados específicos de anúncio, como is_advertisement, ad_id, ad_playback_id, ad.is_skippable e ad.skippable_ad_delay. Uma observação recorrente é que o Spotify expõe modelos de domínio estáveis, como PlayerState, ContextTrack e tipos de solicitação/resposta protobuf, enquanto grande parte da ligação ao redor é fortemente ofuscada no pacote p204p. Rotulagem de confiança A documentação distingue três níveis: Confirmado (diretamente visível no código decompilado, smali, recursos ou manifest), Inferência forte (vários caminhos de código independentes apoiam a mesma interpretação) e Incerto (a reconstrução/ofuscação ou um limite nativo/backend impede uma conclusão definitiva). As notas evitam explicitamente tratar nomes gerados pelo JADX como nomes originais do código-fonte. Para que serve Este material destina-se a leitores que estudam internals de aplicativos Android, tratamento de estado de reprodução de mídia, integração com MediaSession e lógica de publicidade/salto em um grande aplicativo ofuscado. É um recurso de pesquisa e referência, não uma ferramenta para usuários finais, e não afirma fornecer um cliente modificado funcional.