This comprehensive guide will help you set up Echo Music for development, testing, and building.
- Android Studio: Arctic Fox (2020.3.1) or later
- Android SDK: API level 26 (Android 8.0) or later
- Java Development Kit: JDK 17 or later
- Git: Latest version
- Gradle: 8.0 or later (included with Android Studio)
- Android Studio: Latest stable version
- Android SDK Build Tools: Latest version
- Android Emulator: API 30+ for testing
- Physical Device: For testing real-world performance
- RAM: 8GB minimum, 16GB recommended
- Storage: 10GB free space for Android SDK and project files
- OS: Windows 10+, macOS 10.15+, or Linux (Ubuntu 18.04+)
# Clone the repository
git clone https://github.com/iad1tya/Echo-Music.git
cd Echo-Music
# Verify the clone was successful
ls -laCopy the template and configure your local settings:
cp local.properties.template local.propertiesEdit local.properties and set your Android SDK path:
# Android SDK path (required)
sdk.dir=/path/to/your/android/sdk
# Optional: Firebase configuration (uncomment and fill if needed)
# SENTRY_DSN=your_sentry_dsn_here
# SENTRY_AUTH_TOKEN=your_sentry_auth_token_here
# Optional: Custom build configurations
# org.gradle.jvmargs=-Xmx4g -XX:MaxMetaspaceSize=512m
# org.gradle.parallel=true
# org.gradle.caching=trueNote: The SDK path varies by operating system:
- Windows:
C:\Users\YourUsername\AppData\Local\Android\Sdk - macOS:
/Users/YourUsername/Library/Android/sdk - Linux:
/home/YourUsername/Android/Sdk
Firebase configuration is optional for basic functionality. The app will work without it, but some features like analytics and crash reporting will be disabled.
-
Create a Firebase project:
- Go to Firebase Console
- Create a new project or use an existing one
-
Add Android apps:
- Add two Android apps with these package names:
iad1tya.echo.music(for release builds)iad1tya.echo.music.dev(for debug builds)
- Add two Android apps with these package names:
-
Download configuration files:
# Copy the template cp app/google-services.json.template app/google-services.json -
Edit the configuration: Replace the placeholder values in
app/google-services.json:YOUR_PROJECT_NUMBER→ Your Firebase project numberyour-firebase-project-id→ Your Firebase project IDYOUR_MOBILE_SDK_APP_ID→ Your Firebase app IDYOUR_API_KEY→ Your Firebase API key
When configured, Firebase provides:
- Analytics: App usage statistics and user behavior
- Crashlytics: Crash reporting and stability monitoring
- Performance: App performance monitoring
- Remote Config: Dynamic configuration management
# Clean and build the project
./gradlew clean
./gradlew assembleFossDebugEcho Music supports multiple build variants:
# FOSS (Free and Open Source Software) builds
./gradlew assembleFossDebug # Debug FOSS build
./gradlew assembleFossRelease # Release FOSS build
# Full builds (with all features)
./gradlew assembleFullDebug # Debug full build
./gradlew assembleFullRelease # Release full build
# Install builds
./gradlew installFossDebug # Install FOSS debug build
./gradlew installFullDebug # Install full debug build# Install and run FOSS debug build
./gradlew installFossDebug
# Install and run full debug build
./gradlew installFullDebug- Open the project in Android Studio
- Select the desired build variant from the Build Variants panel
- Click the Run button or press
Shift + F10
# Install APK manually
adb install app/build/outputs/apk/foss/debug/app-foss-debug.apk
# Launch the app
adb shell am start -n iad1tya.echo.music.dev/.ui.MainActivityEcho-Music/
├── app/ # Main application module
│ ├── src/main/java/ # Main source code
│ ├── src/main/res/ # Resources (layouts, strings, etc.)
│ ├── build.gradle.kts # App module build configuration
│ └── google-services.json # Firebase configuration
├── kotlinYtmusicScraper/ # YouTube Music scraping module
├── spotify/ # Spotify integration module
├── aiService/ # AI service module
├── ffmpeg-kit/ # FFmpeg integration (currently disabled)
├── gradle/ # Gradle wrapper and configuration
├── fastlane/ # Fastlane configuration for releases
└── docs/ # Documentation files
| Variant | Description | Features |
|---|---|---|
fossDebug |
FOSS version (debug) | Core features, debug symbols |
fossRelease |
FOSS version (release) | Core features, optimized |
fullDebug |
Full version (debug) | All features, debug symbols |
fullRelease |
Full version (release) | All features, optimized |
# Start development session
git pull origin main
./gradlew clean
./gradlew assembleFossDebug
# Make changes and test
./gradlew installFossDebug
# Run tests
./gradlew test# Run unit tests
./gradlew test
# Run instrumented tests
./gradlew connectedAndroidTest
# Run lint checks
./gradlew lint
# Generate test coverage report
./gradlew testDebugUnitTestCoverage# Enable debug logging
./gradlew assembleFossDebug -PdebugLogging=true
# Generate debug APK with symbols
./gradlew assembleFossDebug --info-
SDK not found:
# Check SDK path in local.properties cat local.properties -
Gradle sync issues:
# Clean and rebuild ./gradlew clean ./gradlew build -
Memory issues:
# Increase heap size in gradle.properties echo "org.gradle.jvmargs=-Xmx4g" >> gradle.properties
-
App crashes on startup:
- Check device compatibility (Android 8.0+)
- Verify all permissions are granted
- Check logcat for error messages
-
Music not playing:
- Verify internet connection
- Check YouTube Music/Spotify login status
- Clear app cache and data
- Check TROUBLESHOOTING.md for detailed solutions
- Create an issue on GitHub
- Contributing Guide - How to contribute to the project
- Architecture Documentation - Technical architecture details
- API Documentation - API integration details
- Features Guide - Detailed feature descriptions
- Privacy Policy - Data collection and usage
- Security Policy - Security guidelines and reporting
This project is licensed under the GNU General Public License v3.0 (GPL-3.0) - see the LICENSE file for details.