GMPlayer is a native mobile app workspace for collecting internet video URLs and playing them directly. The project currently has:
docs/requirements.md.design-assets/player-buttons.The root directory is not currently a Git repository in this environment, so use file inspection rather than Git history for handoff context.
Current main flow:
http or https video URL..m3u8 or .mp4.Main files:
ios/GMPlayer/PlayerViewController.swift
.m3u8 and .mp4.VideoPlayerViewController(url:).ios/GMPlayer/VideoPlayerViewController.swift
AVPlayer and AVPlayerLayer.AVPlayerViewController.ios/GMPlayer/MobilePlaybackControlsView.swift
.skip15.playlist.hiddenios/GMPlayer/PlayerControlsConfiguration.swift
ios/GMPlayer/MobileProgressBarInfoView.swift
ios/GMPlayer/MobileMainControllerButton.swift
ios/GMPlayer/MobileSkipButton.swift
UIVisualEffectView with .systemUltraThinMaterialDark.Temporary native system player testing was removed. There should be no SystemVideoPlayerViewController.swift.
Player button assets live in:
ios/GMPlayer/Assets.xcassets/player_button_play.imagesetios/GMPlayer/Assets.xcassets/player_button_pause.imagesetios/GMPlayer/Assets.xcassets/player_button_replay.imagesetios/GMPlayer/Assets.xcassets/player_button_go_backwards_15.imagesetios/GMPlayer/Assets.xcassets/player_button_go_forward_15.imagesetios/GMPlayer/Assets.xcassets/player_button_skip_backward.imagesetios/GMPlayer/Assets.xcassets/player_button_skip_forward.imagesetApp icon assets are in:
ios/GMPlayer/Assets.xcassets/AppIcon.appiconsetKnown working simulator:
68D65FB5-95B9-4E38-8552-2A1934459005Build:
xcodebuild -project ios/GMPlayer.xcodeproj -scheme GMPlayer -destination 'platform=iOS Simulator,name=iPhone 17,OS=26.5' build
Install and launch:
open -a Simulator
xcrun simctl boot 68D65FB5-95B9-4E38-8552-2A1934459005
xcrun simctl install 68D65FB5-95B9-4E38-8552-2A1934459005 /Users/flyzto/Library/Developer/Xcode/DerivedData/GMPlayer-bikaarnrdbqjvfbzwmpbnythjtrj/Build/Products/Debug-iphonesimulator/GMPlayer.app
xcrun simctl launch 68D65FB5-95B9-4E38-8552-2A1934459005 com.gmplayer.app
Last verified iOS run:
Known warning:
PlayerViewController.swift uses deprecated UIButton.contentEdgeInsets; currently harmless for this scaffold.Main files:
android/app/src/main/java/com/gmplayer/app/MainActivity.kt
AndroidPlayerScreen after a valid URL is added.AndroidPlayerScreen uses Android VideoView with Compose overlays.android/app/src/main/java/com/gmplayer/app/MobilePlaybackControls.kt
Skip15PlaylistHiddenandroid/app/src/main/java/com/gmplayer/app/MobileMainControllerButton.kt
android/app/src/main/java/com/gmplayer/app/MobileProgressBarInfo.kt
android/app/src/main/java/com/gmplayer/app/PlayerControlsConfiguration.kt
Button resources were copied from design-assets/player-buttons into Android resource folders. Current button names include:
player_button_playplayer_button_pauseplayer_button_replayplayer_button_go_backwards_15player_button_go_forward_15player_button_skip_backwardplayer_button_skip_forwardThis environment currently does not have:
android/gradlewgradleSo Android has not been compiled locally after the latest player overlay changes. Open android/ in Android Studio or add/sync a Gradle wrapper before verifying:
cd android
./gradlew :app:assembleDebug
iOS currently has the most complete custom player implementation:
Android has the matching overlay behavior at the Compose level, but playback is currently implemented with VideoView. If parity matters for HLS behavior and richer controls, consider moving Android playback to Media3 ExoPlayer.
The player UI was based on the Figma file:
Video Player For Web Mobile CommunityApvSwPRpW7jYhJ0xUohpT4Relevant Figma nodes previously inspected/used:
21:443240:99The user exported button PNGs at @1x, @2x, and @3x. Figma default @1x export has no suffix; these were mapped into iOS imagesets and Android drawable resources.
AVPlayerViewController, for the product direction..systemUltraThinMaterialDark.VideoView to Media3 ExoPlayer for robust .m3u8 and .mp4 parity.gradlew.VideoView with Media3 ExoPlayer.