========================================================================= 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 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 with handler-based message queue (30+ commands) 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 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, RECORD_AUDIO, BILLING, SYSTEM_ALERT_WINDOW === 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 Google Play Billing 9.1.0 - Subscriptions ========================================================================= ARCHITECTURE NOTES: 1. Pre-v5.x used Parse SDK for backup/sync 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 =========================================================================