Drop is a secure, peer-to-peer file sharing application for Android that allows you to transfer files between devices over the internet.
- 🔒 Secure & Private: End-to-end encryption for all transfers
- 📱 Easy to Use: Simple interface with QR code and link sharing
- ⚡ Fast & Reliable: High-speed internet transfers
- 🎨 Customizable: Profile management with custom avatars
- 📊 Transfer History: Track all your file transfers
- 🌐 Internet-based: Works anywhere with internet connection
- Android Studio Arctic Fox or later
- JDK 11 or later
- Android SDK API 29 or later
- Clone the repository:
git clone https://github.com/your-username/drop-android.git
cd drop-android-
Open the project in Android Studio
-
Build and run:
./gradlew assembleDebugTo create a release build:
./gradlew assembleRelease- Create a release keystore (if you don't have one):
keytool -genkeypair -alias drop-key -keyalg RSA -keysize 2048 -validity 10000 -keystore release-keystore.jks-
Set up GitHub Secrets:
KEYSTORE_BASE64: Base64 encoded keystore fileKEY_ALIAS,KEY_PASSWORD,KEYSTORE_PASSWORD: Keystore credentialsPLAY_STORE_CREDENTIALS: Google Play Console service account JSON
-
Google Play Console Setup:
- Create a new app in Google Play Console
- Set up app signing
- Create a service account for API access
- Download the service account JSON file
- Create a release tag:
git tag v1.0.0
git push origin v1.0.0- Manual workflow dispatch:
- Go to GitHub Actions
- Select "Release to Google Play"
- Choose the release track (internal/alpha/beta/production)
- Run workflow
- Build release bundle:
./gradlew bundleRelease- Upload to Play Console:
./gradlew publishBundle- Internal: For internal testing (up to 100 testers)
- Alpha: For alpha testing (open or closed)
- Beta: For beta testing (open or closed)
- Production: For public release
Versions are automatically managed:
- Version Code: GitHub run number
- Version Name: Git tag (for releases) or dev build number
Drop uses peer-to-peer technology to transfer files directly between devices over the internet:
- Sender selects files and starts transfer
- System generates a secure transfer link and QR code
- Sender shares the link or shows QR code to receiver
- Receiver opens link or scans QR code to connect
- Files are transferred directly between devices with encryption
Drop provides multiple ways to share transfers:
- Deep Links: Share via messaging apps, email, or any text-based communication
- QR Codes: Perfect for in-person sharing or when devices are nearby
- Copy Link: Quick clipboard copying for easy sharing
app/
├── src/main/
│ ├── java/dev/arkbuilders/drop/app/
│ │ ├── ui/ # Compose UI components
│ │ ├── data/ # Data layer
│ │ ├── domain/ # Business logic
│ │ └── di/ # Dependency injection
│ ├── res/ # Resources
│ └── AndroidManifest.xml
├── build.gradle.kts # App build configuration
└── proguard-rules.pro # ProGuard rules
fastlane/
└── metadata/android/en-US/ # Play Store metadata
├── title.txt
├── short_description.txt
├── full_description.txt
└── changelogs/
.github/workflows/
├── build_apk.yml # CI build workflow
└── release.yml # Release workflow
- Fork the repository
- Create a feature branch
- Make your changes
- Add tests if applicable
- Submit a pull request
This project is licensed under the MIT License - see the LICENSE file for details.
For support and questions:
- Create an issue on GitHub
- Contact: [email protected]
Drop respects your privacy:
- No data is collected or stored on external servers
- All transfers are direct device-to-device over internet
- Files are encrypted during transfer
- No analytics or tracking
For more details, see our Privacy Policy.