> ## Documentation Index
> Fetch the complete documentation index at: https://docsdrop.erikraft.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Android Application

> Comprehensive guide to the ErikrafT Drop Android application, features, and technical implementation.

# 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

```gradle theme={null}
// 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:

```java theme={null}
// 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:

```java theme={null}
// 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:

```java theme={null}
// 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:

```xml theme={null}
{/*  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

```xml theme={null}
{/*  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:**

* **URL**: [https://play.google.com/store/apps/details?id=com.erikraft.drop](https://play.google.com/store/apps/details?id=com.erikraft.drop)
* **Features**: Automatic updates, beta testing, review system
* **Requirements**: Google Play account, Android 5.0+

#### F-Droid

**Open-source distribution channel:**

* **URL**: [https://f-droid.org/en/packages/com.erikraft.drop/](https://f-droid.org/en/packages/com.erikraft.drop/)
* **Features**: FOSS-only, no tracking, community-curated
* **Requirements**: F-Droid client, Android 5.0+

#### APKPure

**Alternative APK distribution:**

* **URL**: [https://apkpure.com/p/com.erikraft.drop](https://apkpure.com/p/com.erikraft.drop/)
* **Features**: Direct APK downloads, version history
* **Requirements**: Enable "Unknown Sources" in settings

#### Direct GitHub Releases

**Developer distribution channel:**

* **URL**: [https://github.com/erikraft/Drop-Android/releases/latest/download/Drop-Android.apk](https://github.com/erikraft/Drop-Android/releases/latest/download/Drop-Android.apk)
* **Features**: Latest releases, development versions
* **Requirements**: Manual installation and updates

### 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

```bash theme={null}
# 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

```bash theme={null}
# 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

```yaml theme={null}
# 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

```yaml theme={null}
# 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:

```bash theme={null}
# 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.
