ARVIO - A media hub application with a modern, beautiful interface.
翻译准备中
取自仓库 README
正在加载完整 README。
查看完整 README ↗ARVIO includes no movies, series, live channels or third-party subscriptions. Connect your own authorized services and sources. Catalog artwork and listings are for discovery, not a grant of access to the content.
Get ARVIO · Features · Get started · Collections · Self-host · Build · Contribute
| Where you watch | How to get it |
|---|---|
| Android TV, Google TV, Fire TV, Android phones and tablets | Free app. Install from Google Play where available, or download the signed APK from GitHub Releases. |
| Your own computer or server | Free self-hosting. Run the web app with Docker Compose or Node.js and your own integration credentials. Setup instructions. |
The GitHub APK supports Android 6.0+; the Play build requires Android 7.0+. The standard APK contains ARMv7 and ARM64 builds. Device, codec and service support can vary.
For GitHub updates through Obtainium, add https://github.com/ProdigyV21/ARVIO as the app source. The Obtainium guide includes an import file and APK filtering instructions.
What's new? See the latest release notes and changelog. This README and the tour describe the current main branch, which can include improvements not yet in a published APK. Features can differ between Android, web and distribution builds.
Browser playback depends on the source, CORS, codecs and browser. It is not a guarantee that every source playable on Android will play in a browser. See the browser playback guide.
All setup guides · Plex / Emby / Jellyfin · Ask the community
Catalogs are rows of titles, such as a trending feed or a personal list. Collections organize supported catalogs and discovery sources into browsable folders with their own artwork.
Use Collection Studio to create a collection, then import its JSON in Settings. You can also paste a supported collection document or a direct JSON URL hosted on GitHub or another public host. Direct file uploads are not supported yet.
Imported collections do not include streaming access. You still need your own sources, and any subscriptions required by the connected service.
ARVIO Web is the browser version for desktop, iPhone, iPad and TV browsers. Self-host it on your own computer or server with Docker Compose or Node.js, using your own TMDB key and optional integration credentials.
For Node.js, install Node.js 22.19+ and Git, then:
git clone https://github.com/ProdigyV21/ARVIO.git
cd ARVIO/web
npm ci
npm run setup:selfhost
Edit .env.local and set your own TMDB API v3 key as TMDB_API_KEY. Keep this file private. Then:
npm run check:selfhost
npm run build
npm run start -- --hostname 127.0.0.1
Open http://localhost:3000, create a local profile and connect your sources in Settings.
For Docker Compose, configuration details and updates, follow the web README. Read the self-hosting guide before exposing it to your network or the internet; the commands above bind only to the local computer.
Self-hosted profiles and settings are local to each browser; this mode does not provide ARVIO Cloud cross-device sync. Connected Trakt/SIMKL accounts can still synchronize the data those services support. Media and access to third-party services are not included.
Never post passwords, API keys, tokens, private playlist URLs or unredacted account information in an issue or screenshot.
This repository contains the Android app, web app, public website and supporting services. Android uses Kotlin and Jetpack Compose; web setup is documented separately in web/README.md.
Requirements: JDK 17, Android SDK 36, Android Studio or the SDK command-line tools, and the tracked Gradle wrapper.
git clone https://github.com/ProdigyV21/ARVIO.git
cd ARVIO
cp secrets.defaults.properties secrets.properties
# Configure the integrations you want to test in secrets.properties.
./gradlew :app:assembleSideloadDebug
On Windows PowerShell:
git clone https://github.com/ProdigyV21/ARVIO.git
cd ARVIO
Copy-Item secrets.defaults.properties secrets.properties
# Configure the integrations you want to test in secrets.properties.
.\gradlew.bat :app:assembleSideloadDebug
The debug APK is written to app/build/outputs/apk/sideload/debug/. For an x86/x86_64 emulator, add -PincludeX86Abis=true; APK builds otherwise include ARMv7 and ARM64.
Use your own TMDB, Trakt, SIMKL, Telegram and other application credentials for the integrations you test. Placeholder values do not provide working authentication. Cloud/auth features also require appropriate backend configuration. Keep secrets.properties, keystores and signing credentials out of Git.
Test on an emulator or dedicated device. Ordinary debug builds use the production package ID but a different signing key, so they cannot update an official signed installation. Do not uninstall a user's app just to install a debug build.
| Variant | Purpose |
|---|---|
play | Google Play distribution; in-app self-update disabled. |
sideload | Direct APK distribution; in-app self-update enabled. |
debug | Development build with debugging enabled. |
staging | Release-like beta in the separate com.arvio.tv.beta package; uses release signing when configured, otherwise debug signing. |
release | Optimized production build. Configure your own private release keystore before distribution. |
./gradlew :app:installSideloadDebug
./gradlew :app:assemblePlayDebug
./gradlew :app:testSideloadDebugUnitTest
For an emulator, include -PincludeX86Abis=true in the build/install command. For a network-connected test device:
adb connect <device-ip>:5555
adb -s <device-ip>:5555 install -r app/build/outputs/apk/sideload/debug/app-sideload-debug.apk
Discord Rich Presence requires Discord's separately licensed Android Partner SDK. Place the approved AAR at app/libs/discord_partner_sdk.aar and configure DISCORD_CLIENT_ID. Builds without it remain valid and show Discord as unavailable. Do not commit or redistribute the SDK without the required permission.
The speech-recognition AAR is downloaded and checksum-verified by Gradle. Integration availability can differ by distribution: for example, Sync by Hearing is currently a sideload feature.
Debug builds disable crash reporting. Fork maintainers should use their own Firebase client configuration before distributing builds. See Firebase diagnostics for configuration, consent and symbol-upload instructions.
Copy keystore.properties.template to keystore.properties, configure a private release keystore, and keep both out of version control. A locally built APK does not share the official release signing key.
./gradlew :app:testSideloadDebugUnitTest
./gradlew :app:assemblePlayRelease
./gradlew :app:assembleSideloadRelease
./gradlew :app:bundlePlayRelease
Smoke-test startup, profile switching, playback, source fallback, audio/subtitles, IPTV/EPG, add-on management, search, settings, sync and repeated player open/close on the supported device classes. Complete the release content/rights checklist before publishing.
Bug fixes, tests, translations, documentation and accessibility improvements are welcome. Open a focused pull request, explain the change, and include testing details and screenshots for UI work. Discuss larger changes in an issue first.
Keep credentials and private media out of submissions. Public demo assets need documented permission. AI-assisted contributions are welcome under the same review and testing standards as other changes; ARVIO itself has been developed with significant AI assistance.
Thank you to all contributors, testers, translators and community members. Individual release credits are preserved in the changelog and release notes.
This product uses the TMDB API but is not endorsed or certified by TMDB. Other integrated services, trademarks, SDKs and artwork belong to their respective owners; compatibility does not imply endorsement.
The optional Kaptain collection import example retains credit to Kaptain / ImKaptain, Kaptain Collection and nuvio-art. See collection credits and reuse notes. ARVIO's built-in collection queries are maintained separately.