========================================================================= TiviMate App Architecture (v5.3.3 decompiled) ========================================================================= === PACKAGE STRUCTURE === Package: ar.tvplayer.tv Min SDK: Android 6.0 (API 23) Target SDK: Android 14 (API 34) Key classes from AndroidManifest: ar.tvplayer.tv.LibTvPlayerApplication - Application class ar.tvplayer.tv.ProtectedTvPlayerApplication - Secure variant ar.tvplayer.tv.AppComponentFactoryDP - AppComponentFactory ar.tvplayer.tv.MessageGuardException - Error guard === ARCHITECTURE LAYERS === Layer 1 - Network: com.squareup.moshi - JSON serialization (Xtream API responses) com.squareup.okhttp3 - HTTP client (User-Agent: "okhttp/5.4.0") ar.tvplayer.core.data.network.xtreamcodes.* - Xtream API: - XtreamCodes - Main API client - XtreamCodes.Params - API parameters - ServerInfo - Server connection info - UserInfo - User account info - UserAndServerInfo - Combined user+server auth - CatchupData - Catch-up/TV archive data Layer 2 - Data / Database: Not using Room (no @Entity found) Uses Parse SDK (Firebase-like) for cloud/sync SQLite through Parse for offline data Layer 3 - Player: Media3 ExoPlayer (androidx.media3.exoplayer) Custom player wrapper (C1760.java) with handler-based message queue Dual audio output path: AudioTrack (native) + ExoPlayer audio renderer SMB support for network streams (com.hierynomus.smbj) Layer 4 - UI: Custom View-based layouts (NOT Jetpack Compose) Heavily uses Canvas drawing for EPG timeline Android TV Leanback-like navigation Remote/D-pad optimized === PERMISSIONS === INTERNET ACCESS_NETWORK_STATE ACCESS_WIFI_STATE READ_EXTERNAL_STORAGE WRITE_EXTERNAL_STORAGE RECEIVE_BOOT_COMPLETED WAKE_LOCK FOREGROUND_SERVICE POST_NOTIFICATIONS READ_APP_SETTINGS (Android 14+) === LIBRARIES DETECTED === Media3 ExoPlayer - Playback OkHttp 5.4.0 - HTTP Moshi - JSON parsing Glide - Image loading (logos) Parse SDK (Back4App/Firebase) - Cloud/analytics SMBJ - SMB network streams Google Play Licensing - License verification Firebase SDKs - Analytics, crash reporting ========================================================================= ARCHITECTURE NOTES: 1. Pre-v5.x used Parse SDK for backup/sync (now likely Firebase) 2. UI is NOT Compose - all custom Views with Canvas rendering 3. Player is custom wrappers around ExoPlayer with message-passing 4. SMB support is notable - can play from network shares 5. AppComponentFactory + ProtectedApplication = anti-tamper measures =========================================================================