Skip to main content

ErikrafT Drop Android Application

The ErikrafT Drop Android application provides a native, fully-featured file sharing experience with deep integration into the Android operating system. Built as a native Android app, it offers enhanced performance, system integration, and a seamless user experience compared to the web application.

Application Overview

Core Features

  • Native Android Integration: Deep integration with Android share system
  • System Share Menu: Appears in Android share dialog across all apps
  • Background Operation: Works seamlessly while using other applications
  • WebRTC Support: Full peer-to-peer file transfer capabilities
  • Offline Pairing: Works with paired devices even when offline
  • Material Design: Modern Material Design 3 interface
  • Multi-language Support: Available in multiple languages via Crowdin

Technical Specifications

  • Package Name: com.erikraft.drop
  • Minimum SDK: Android 5.0 (API level 21)
  • Target SDK: Android 15 (API level 35)
  • Current Version: 9.0.4 (version code 13)
  • Build System: Gradle with Android Gradle Plugin
  • Architecture: Native Android with WebView components

Application Architecture

Project Structure

Android/
├── app/
│   ├── build.gradle              # App-level build configuration
│   ├── src/
│   │   ├── main/
│   │   │   ├── java/com/erikraft/drop/
│   │   │   │   ├── MainActivity.java
│   │   │   │   ├── WebViewClient.java
│   │   │   │   └── ShareReceiver.java
│   │   │   ├── res/
│   │   │   │   ├── layout/        # XML layout files
│   │   │   │   ├── values/        # Strings, colors, themes
│   │   │   │   ├── drawable/      # Icons and graphics
│   │   │   │   └── mipmap*/        # App icons
│   │   │   └── AndroidManifest.xml
│   │   └── test/                  # Unit and integration tests
│   └── proguard-rules.pro         # Code obfuscation rules
├── build.gradle                  # Project-level build configuration
├── gradle.properties             # Gradle properties
└── README.md                     # Project documentation

Build Configuration

// From app/build.gradle
android {
    namespace 'com.erikraft.drop'
    compileSdk 35

    defaultConfig {
        applicationId "com.erikraft.drop"
        minSdkVersion 21
        targetSdkVersion 35
        versionCode 13
        versionName "9.0.4"
    }

    buildTypes {
        release {
            minifyEnabled true
            proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro'
        }
    }
}

Key Components

MainActivity

The main activity serves as the entry point and manages the WebView component:
// Key responsibilities:
- WebView initialization and configuration
- Android share intent handling
- Permission management
- Navigation and UI state
- WebRTC permission handling

WebView Integration

The app uses a WebView to display the ErikrafT Drop web interface with native enhancements:
// WebView configuration features:
- WebRTC support enabled
- JavaScript interface for native communication
- Custom user agent for client identification
- File access permissions
- Download management
- Error handling and recovery

Share Receiver

Handles incoming share intents from other Android applications:
// Share receiver capabilities:
- Multiple file selection support
- MIME type handling
- Large file processing
- Background queuing
- Error handling for unsupported content

Android-Specific Features

System Integration

Share Menu Integration

The Android app registers as a share target, appearing in the system share dialog:
<!-- AndroidManifest.xml share intent filter -->
<intent-filter>
    <action android:name="android.intent.action.SEND" />
    <category android:name="android.intent.category.DEFAULT" />
    <data android:mimeType="*/*" />
</intent-filter>

File Association

The app can handle various file types through MIME type registration:
  • Documents: PDF, DOC, TXT, etc.
  • Images: JPG, PNG, GIF, WebP, etc.
  • Videos: MP4, AVI, MOV, etc.
  • Audio: MP3, WAV, OGG, etc.
  • Archives: ZIP, RAR, 7Z, etc.

Performance Optimizations

Memory Management

  • Efficient WebView: Optimized WebView configuration
  • Background Processing: Non-blocking file operations
  • Memory Leaks Prevention: Proper lifecycle management
  • Large File Handling: Streaming for large files

Battery Optimization

  • Background Limits: Respects Android battery optimization
  • Efficient Networking: Optimized WebSocket connections
  • Resource Cleanup: Proper resource management
  • Wake Locks: Minimal wake lock usage

Security Features

Permissions

<!-- Required permissions -->
<uses-permission android:name="android.permission.INTERNET" />
<uses-permission android:name="android.permission.ACCESS_NETWORK_STATE" />
<uses-permission android:name="android.permission.CAMERA" /> <!-- For QR scanning -->
<uses-permission android:name="android.permission.WRITE_EXTERNAL_STORAGE" />

Security Measures

  • HTTPS Only: Secure connections only
  • Certificate Pinning: SSL certificate validation
  • Input Validation: Proper input sanitization
  • Privacy Compliance: Follows Android privacy guidelines

Installation and Distribution

Official Distribution Channels

Google Play Store

Primary distribution channel with automatic updates:

F-Droid

Open-source distribution channel:

APKPure

Alternative APK distribution:

Direct GitHub Releases

Developer distribution channel:

Build Instructions

Prerequisites

  • Android Studio: Latest version recommended
  • Java Development Kit: JDK 11 or higher
  • Android SDK: API level 35
  • Gradle: Version 8.13.2 or higher

Build Process

# Clone the repository
git clone https://github.com/erikraft/Drop-Android.git
cd Drop-Android

# Build debug APK
./gradlew assembleDebug

# Build release APK
./gradlew assembleRelease

# Install on connected device
./gradlew installDebug

Release Build

# Generate signed bundle for Play Store
./gradlew bundleRelease

# Generate signed APK for direct distribution
./gradlew assembleRelease

Development Workflow

Automated Build Pipeline

The project uses GitHub Actions for continuous integration:

CI/CD Features

  • Automated Testing: Unit and integration tests
  • Code Quality: Static analysis and linting
  • Build Verification: Multi-environment builds
  • Release Automation: Automatic Play Store publishing

Play Store Automation

# GitHub Actions workflow for Play Store publishing
- Build release bundle
- Sign with production keystore
- Upload to Google Play Console
- Deploy to production track

F-Droid Automation

# GitHub Actions workflow for F-Droid publishing
- Build signed APK
- Update F-Droid metadata
- Generate repository index
- Publish to fdroid branch

Translation Management

Translations are managed through Crowdin:

Supported Languages

  • English (en)
  • German (de)
  • French (fr)
  • Spanish (es)
  • Italian (it)
  • Portuguese (pt)
  • Russian (ru)
  • Chinese Simplified (zh-CN)
  • Japanese (ja)

Translation Process

  1. Source Strings: English strings in res/values/strings.xml
  2. Crowdin Integration: Automatic sync with Crowdin platform
  3. Community Translation: Community-contributed translations
  4. Automated Import: Translations automatically imported to repository

Comparison with Web App

Advantages of Android App

Performance

  • Native Performance: Better than WebView performance
  • Memory Efficiency: Optimized for mobile hardware
  • Background Operation: Works efficiently in background
  • Battery Optimization: Better battery management

Integration

  • System Share Menu: Deep Android integration
  • File Association: Handles all file types natively
  • Notification System: Native notification handling
  • Multi-window: Split-screen support

User Experience

  • Material Design: Consistent Android design language
  • Touch Optimization: Touch-optimized interface
  • Gesture Support: Android gesture navigation
  • Accessibility: Enhanced accessibility features

Limitations

  • Update Dependency: Requires manual updates (sideloading)
  • Platform Specific: Android-only functionality
  • Size: Larger app size due to native components
  • Permissions: Requires more system permissions

Troubleshooting

Common Issues

Installation Problems

  • Unknown Sources: Enable installation from unknown sources
  • Storage Space: Ensure sufficient storage available
  • Android Version: Verify minimum Android version (5.0+)
  • Architecture: Check device architecture compatibility

Connection Issues

  • Network Permissions: Verify network permissions granted
  • Firewall: Check firewall settings
  • VPN: Disable VPN if causing connection issues
  • Server Status: Verify ErikrafT Drop server status

Performance Issues

  • Memory: Close other apps to free memory
  • Storage: Clear app cache if storage full
  • Background: Check battery optimization settings
  • WebView: Clear WebView data if corrupted

Debug Information

Enable debug logging for troubleshooting:
# Enable debug logging
adb shell setprop log.tag.ErikrafTDrop DEBUG

# View logs
adb logcat -s ErikrafTDrop

Future Development

Planned Features

  • Background Service: Improved background operation
  • Notification Channels: Enhanced notification management
  • Dark Mode: System dark mode support
  • Biometric Authentication: Fingerprint/face unlock
  • Widget: Home screen widget for quick access

Technical Improvements

  • Kotlin Migration: Gradual migration to Kotlin
  • Modular Architecture: Feature modules for better maintainability
  • Performance: Continued performance optimizations
  • Security: Enhanced security features
The ErikrafT Drop Android application provides a robust, native file sharing solution that leverages the full capabilities of the Android platform while maintaining compatibility with the broader ErikrafT Drop ecosystem.