Skip to content

sang765/ArchiveTune-Nightly

Folders and files

NameName
Last commit message
Last commit date

Latest commit

ย 

History

478 Commits
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 
ย 

Repository files navigation

Archivetune

ArchiveTune Icon ArchiveTune Nightly ArchiveTune Icon

CI build for Nightly version of ArchiveTune. Redefining the YouTube Music Experience on Android.
๐Ÿ•› Runs at 0:00 AM every day, UTC 0 time zone ๐Ÿ•›

Don't forget to leave a โญ for this repository if you visit. Thank you so much โ™ฅ๏ธ

GitHub Actions Workflow Status GitHub Stars GitHub Downloads (all assets, latest release) GitHub Release GitHub License

Download

Download Download Download Download Download Download Download Download

Stable Nightly
Stable build
GitHub downloads GitHub downloads
Nightly build
GitHub downloads GitHub downloads

Warning

  • This is unofficial Nightly build of AchieveTune. If you wanna download official ArchiveTune, please check out this repository.
  • We DO NOT ACCEPT any issues, bug reports, or new ideas on "this repository". If you wanna create an issue or bug report, please create it here.

This repository contains the nightly build setup for ArchiveTune, an advanced YouTube Music client for Android. Read bellow to read more about this app.

โ„น๏ธ ArchiveTune README โ„น๏ธ

ArchiveTune Logo

ArchiveTune

Redefining the YouTube Music Experience on Android.
Itโ€™s high-performance, totally private, and packed with features for people who really care about their experience.

Official Website โ€ข Features โ€ข Download โ€ข Screenshots โ€ข Support

Latest Version Downloads Stars License MVVM Architecture Kotlin Language Jetpack Compose Toolkit Material Design 3 Telegram

ArchiveTune | Trendshift

ArchiveTune isnโ€™t just another generic YouTube Music wrapper. Itโ€™s a fully custom-built player made from the ground up, because we think your music should stay private, look clean, and work exactly the way you expect. If you care about sound quality and want something that actually feels good to use, this is it.


Important

Geographic Availability: If YouTube Music is not supported in your region, a VPN or proxy set to a supported region is required for initial data fetching.


๐Ÿ“ธ Showcase

Browse Live Lyrics Theme Customization Live Statistics Artist Album Player Settings

โœจ Features

Playback

  • Ad-free playback with background listening
  • Your playlists, liked songs, and subscriptions appear after sign-in
  • Fast startup and lightweight performance
  • Built for a private, uninterrupted listening experience

Audio

  • EBU R128 loudness normalization
  • Tempo, pitch, and playback speed controls
  • Crossfade between tracks
  • System equalizer and spatial audio integration

Lyrics & Discovery

  • Live synced lyrics
  • Lyrics translation and romanization
  • Music recognition for songs around you
  • Listening statistics whenever you want them

Sync & Social

  • YouTube Music account integration
  • Last.fm scrobbling
  • ListenBrainz history sync
  • Discord rich presence support

Interface

  • Material 3 design language
  • Album-art powered dynamic colors
  • Responsive layouts for different screen sizes
  • Clean browsing, player, artist, album, and lyrics views

Customization

  • Deep playback and interface settings
  • Gesture customization
  • Animation and layout tuning
  • Flexible controls to shape the app around your workflow

๐Ÿ“ฅ Download Now

Stable Release

Obtainium IzzyOnDroid
Get ArchiveTune on Obtainium Get ArchiveTune on IzzyOnDroid
GitHub
Get ArchiveTune on GitHub
OpenAPK Doyo.cn
Get ArchiveTune on OpenAPK Get ArchiveTune on Doyo.cn

Nightly Build

GitHub Actions
Download the latest ArchiveTune nightly build

โ“ Need Help or Have Questions?

Join Our Telegram Channels for Support and Discussion.

Telegram


๐ŸŒ Globalization

ArchiveTune belongs to everyone. Help us localize the experience for your region.

โœจ Project Contributors

๐Ÿ› ๏ธ Development & Engineering

Interested in building the project or contributing? ArchiveTune is built on a high-performance Kotlin stack. Read the Build & Contribution Guide โ†’


๐Ÿค Acknowledgments

We stand on the shoulders of open-source giants:


โš–๏ธ Legal Disclaimer

ArchiveTune is an independent third-party client.

  • Not affiliated with Google LLC or YouTube.
  • Does not bypass YouTube's technical protections.
  • Users are encouraged to support artists by purchasing music via official channels.

ArchiveTune Banner

If ArchiveTune elevated your music experience, please consider giving us a โญ


ArchiveTune Banner

๐Ÿ‘ฅ ArchiveTune CONTRIBUTING ๐Ÿ‘ฅ

๐Ÿ› ๏ธ Engineering & Build Guide

This document defines the protocols for setting up the development environment, understanding the underlying technology stack, and compiling ArchiveTune from the source.


๐Ÿ—๏ธ Operational Readiness

To ensure build stability and environment parity, the following hardware and software configurations are mandatory.

Development Environment

  • IDE: Android Studio Ladybug (2024.2.1) or newer.
  • Java Runtime: JDK 17 (Amazon Corretto or Azul Zulu recommended for deterministic builds).
  • Android SDK: API Level 34+ (Upside Down Cake).
  • Version Control: Git 2.40+.

Technical DNA (Skill Requirements)

The ArchiveTune codebase is built on a modern, reactive architecture. Contributors are expected to have a high level of familiarity with:

  • Kotlin (Advanced): Proficiency in Coroutines, Flow API, and functional paradigms.
  • Jetpack Compose: Understanding of State Hoisting, Recomposition optimization, and Material 3 design systems.
  • Gradle (KTS): Ability to navigate Kotlin DSL build scripts and Version Catalogs (libs.versions.toml).
  • Modern Android Architecture: Deep understanding of MVVM, Repository patterns, and UDF (Unidirectional Data Flow).

๐Ÿ“ Architectural Manifesto

ArchiveTune follows a strict Clean Architecture approach. This separation of concerns ensures that the audio engine remains independent of the UI layer.

  1. UI Layer (Compose): Handles user interactions and renders state emitted by ViewModels.
  2. Domain Layer: Contains business logic, Use Cases, and high-level audio processing interfaces.
  3. Data Layer: Manages the single source of truthโ€”coordinating between the YouTube Music API (Retrofit) and the local encrypted cache (Room).
  4. Service Layer (Media3): A specialized background layer managing the MediaSession and low-latency audio pipelines.

๐Ÿš€ Environment Initialization

  1. Clone the Source:
git clone https://github.com/koiverse/ArchiveTune.git
cd ArchiveTune
  1. Secret Management: ArchiveTune uses a modular properties system. If your build requires specific API keys (e.g., Discord Client IDs), define them in your local.properties:
# Path to your Android SDK
sdk.dir=/Users/yourname/Library/Android/sdk
  1. Syncing the Core: Open the project in Android Studio. The IDE will automatically trigger a Gradle sync. We use Version Catalogs to ensure all dependencies (Media3, Hilt, Compose) are locked to tested versions.

๐Ÿ“ฆ Build Pipelines

Use the Gradle Wrapper to execute verified build scripts.

Command Output Context
./gradlew assembleDebug app-debug.apk Local testing & feature development.
./gradlew assembleRelease app-release.apk Production-ready, R8-optimized build.
./gradlew bundleRelease app-release.aab Optimized bundle for distribution.
./gradlew clean N/A Flushes build cache to resolve sync issues.

๐Ÿ›ก๏ธ Code Quality & Static Analysis

Before initiating a Pull Request, every contributor must run the following quality gates:

  • Linting: ./gradlew lintDebug (Ensures adherence to Android XML/Compose standards).
  • Formatting: ./gradlew ktlintCheck (Ensures consistent Kotlin styling).
  • Logic Verification: ./gradlew testDebugUnitTest (Runs the architectural unit tests).

โš–๏ธ Troubleshooting

Important

Heap Memory: If you experience GC overhead limit exceeded, ensure your gradle.properties has sufficient memory allocated: org.gradle.jvmargs=-Xmx4g -XX:MaxMetaspaceSize=1g

Warning

Compose Compiler: If the build fails due to a Compose version mismatch, verify that the kotlinCompilerExtensionVersion in the build script matches the current Kotlin version.


ArchiveTune: Engineering audio freedom. Part of the Koiverse ecosystem.

๐Ÿ› ๏ธ Development Environment ๐Ÿ› ๏ธ


Repository secrets (required for nightly builds):

Secret Description
SIGNING_KEY_BASE64 Your Android signing key (.jks or .keystore) converted to base64. Used to sign the APK. Generate with: openssl base64 < YOUR_KEY.jks | tr -d '\n' | tee YOUR_KEY.jks.base64
KEYSTORE_PASSWORD Password used to protect your keystore file. Must match the password set when creating the keystore.
KEY_ALIAS The alias name assigned to your signing key inside the keystore. Used during APK signing process.
KEY_PASSWORD Password for the specific key alias within the keystore. May be different from keystore password.
LASTFM_API_KEY Last.fm API key for scrobbling and integrated Last.fm features. Get it from Last.fm API.
LASTFM_SECRET Last.fm API secret corresponding to your API key. Required for authenticated Last.fm requests.
TOGETHER_BEARER_TOKEN Uhm... I don't know how to explain it, but this secret is for using the online feature of Music Together. You can see the details in this message: https://t.me/ArchiveTuneGC/1/7766
PAT_TOKEN GitHub Personal Access Token with Actions (trigger/run workflows), Contents (commit, push, create release), and optionally Workflows (cancel failed builds) permissions.

Optional secrets (for Telegram notifications):

Secret Description
TELEGRAM_BOT_TOKEN Telegram Bot API token. Create a bot via @BotFather to get the token.
TELEGRAM_CHAT_ID Telegram chat ID for the target group or channel. For private groups, forward a message to @userinfobot to get the ID.
TELEGRAM_THREAD_ID Thread ID for Telegram topics/threads in supergroups. Only needed if posting to a specific thread in a group.

Note

  • Telegram secrets are only required if you want build notifications sent to Telegram. The nightly build works without them.

โฐ Cron-Job Schedule Setup โฐ


To automatically trigger the nightly build at a specific time, set up a cron-job using cron-job.org or any similar service:

Title: Anything you want

URL:

https://api.github.com/repos/${{ github.repository }}/actions/workflows/trigger.yml/dispatches

${{ github.repository }} is your-username/your-repo-name so change it to your name and repository name.

Headers:

Header Value
Accept application/vnd.github.v3+json
Authorization Bearer YOUR_GITHUB_PAT
Content-Type application/json

Request menthod: POST

Body:

{
  "ref":"main"
}

Timeout: You can set 1 second if you can't wait.

Cron Schedule Examples:

Schedule Cron Expression Description
Daily at midnight (UTC) 0 0 * * * Runs every day at 00:00 UTC
Daily at midnight (UTC+0) @daily Same as above, simplified
Every 6 hours 0 */6 * * * At minute 0 of every 6th hour
Weekly on Sunday 0 0 * * 0 Every Sunday at midnight

Tip

  • The workflow uses repository_dispatch trigger, so the external cron service needs a PAT token with repo scope to send the dispatch event.
  • Alternatively, you can use GitHub's built-in scheduler by adding a schedule trigger to the workflow, but the external cron-job.org method gives you more control.

โš’๏ธ Build โš’๏ธ

  • For nightly builds, see .github/workflows/nightly-build.yml

๐Ÿ”ฐ License ๐Ÿ”ฐ

GNU GPLv3 Image

๐Ÿ”— Links ๐Ÿ”—

About

Unofficial nightly build of ArchiveTune. The Material 3 Expressive YT Music client for Android.

Topics

Resources

License

Security policy

Stars

Watchers

Forks

Packages

 
 
 

Contributors

Languages