๐ก๏ธ Windscribe VPN for Android
May 31, 2026 ยท View on GitHub
Your Digital Privacy Companion ๐
Developed by Windscribe Limited - Because your privacy matters
Features โข Building โข Architecture โข Contributing โข License
๐ฑ About
Windscribe VPN is a top-notch VPN application that offers comprehensive privacy and security features for Android devices. Whether you're browsing on your phone, tablet, or Android TV, Windscribe has you covered with military-grade encryption and blazing-fast servers worldwide.
โจ Key Features
๐ Authentication & Account Management
- SSO Login - One-click authentication
- Captcha Support - Bot protection that actually works
- Email Verification - Get free data when you confirm your email
- Account Management - Full control at your fingertips
๐ Six VPN Protocols (Because one size doesn't fit all!)
- OpenVPN UDP - Fast and efficient
- OpenVPN TCP - Reliable and stable
- IKEv2 - Lightning-fast with StrongSwan implementation
- Stealth Protocol - OpenVPN TCP with a cloak of invisibility
- WSTunnel - OpenVPN over WebSocket for maximum stealth
- WireGuard - The new kid on the block, and it's fast! โก
๐ฏ Advanced Features
- Per-Network Configuration - Different protocols for different networks
- Network Auto-Detection - Seamless switching (requires location permissions)
- Split Tunneling - Choose which apps use the VPN
- App Decoy Traffic - Throw off surveillance with fake traffic
- Custom Configurations - Import your own WireGuard/OpenVPN configs
- R.O.B.E.R.T - DNS filtering with customizable toggles
- Static IP Addresses - Available with pro plans
๐จ Personalization
- Custom sounds for connections
- Custom wallpapers
- Custom names for server locations
- Location favorites
- Newsfeed with promos and news
๐ Transparency
- Real-time IP address display
- Connection status monitoring
- Traffic statistics
๐๏ธ Building from Source
Prerequisites
Before you dive in, make sure you have these tools ready:
โ Android Studio (Latest stable version)
โ Android SDK (API 21+)
โ Android NDK (for native code compilation)
โ CMake (for building native modules)
โ SWIG (for generating JNI bindings)
โ Git (obviously!)
Quick Start
# Clone the repository
git clone https://github.com/Windscribe/Android-App.git
cd androidapp
# Build debug version
./gradlew assembleDebug
# Or open in Android Studio and hit Run! ๐ฏ
Build Commands Cheat Sheet
# Debug Builds
./gradlew assembleDebug # Build debug APK
./gradlew :mobile:assembleGoogleDebug # Mobile app only
./gradlew :tv:assembleGoogleDebug # TV app only
# Release Builds
./gradlew assembleRelease # Build release APK
./gradlew bundleGoogleRelease # Google Play AAB
./gradlew bundleFdroidRelease # F-Droid AAB
# Testing
./gradlew test # Unit tests
./gradlew connectedAndroidTest # Instrumented tests
# Code Quality
./gradlew ktlintCheck # Check Kotlin style
./gradlew ktlintFormat # Auto-format Kotlin
./gradlew dependencyCheckAnalyze # Security analysis
# Cleaning
./gradlew clean # Fresh start!
Installing & Running
Mobile App ๐ฑ
# Build and install
./gradlew :mobile:assembleGoogleDebug
$ANDROID_HOME/platform-tools/adb install -r mobile/build/outputs/apk/google/debug/mobile-google-debug.apk
# Launch the app
$ANDROID_HOME/platform-tools/adb shell am start -n com.windscribe.vpn/com.windscribe.mobile.ui.AppStartActivity
TV App ๐บ
# Build and install
./gradlew :tv:assembleGoogleDebug
$ANDROID_HOME/platform-tools/adb install -r tv/build/outputs/apk/google/debug/tv-google-debug.apk
# Launch the app
$ANDROID_HOME/platform-tools/adb shell am start -n com.windscribe.vpn/com.windscribe.tv.splash.SplashActivity
๐๏ธ Architecture
Module Structure (The Big Picture)
androidapp/
โโโ ๐ฆ base/ # Core functionality hub
โ โโโ api/ # API communication
โ โโโ backend/ # VPN protocol handlers
โ โโโ localdatabase/ # Room database
โ โโโ repository/ # Data layer
โ โโโ services/ # Android services
โโโ ๐ฑ mobile/ # Phone/tablet UI (Jetpack Compose)
โโโ ๐บ tv/ # Android TV UI (XML layouts)
โโโ ๐ Protocol Modules
โ โโโ openvpn/ # OpenVPN implementation
โ โโโ strongswan/ # IKEv2/IPSec
โ โโโ wgtunnel/ # WireGuard, WSTunnel, Stunnel & ControlD (All Go code compiled to single lib)
โโโ ๐ wsnet/ # Networking library
โโโ ๐งช test/ # Shared test utilities
Technology Stack
| Layer | Technology |
|---|---|
| Language | Kotlin (100% of app modules; vendored native VPN modules are C/C++/Go/Java) |
| UI | Jetpack Compose (Mobile), XML (TV) |
| Async | Coroutines + Kotlin Flows |
| DI | Hilt |
| Database | Room |
| Networking | wsnet (custom library) |
| Background Tasks | WorkManager |
Build Variants
๐ข Google Play (google flavor)
- โ Google Play Billing
- โ In-App Review API
- โ Firebase Cloud Messaging
- โ Full feature set
๐ F-Droid (fdroid flavor)
- โ No proprietary Google dependencies
- โ No payment processing
- โ No push notifications
- โ 100% open source friendly
For detailed architecture documentation, see AGENTS.md
๐ฏ StrongSwan Setup
Prebuilt binaries are included, but if you're feeling adventurous:
- Follow the official StrongSwan Android build guide
- Replace contents in
./strongswan/libs - Test thoroughly before committing! ๐งช
๐ป Code Style
Kotlin (Preferred) โจ
We use ktlint with default rules:
# Check your code
./gradlew ktlintCheck
# Auto-fix issues
./gradlew ktlintFormat
General Guidelines
- โ Use Kotlin for all new code
- โ Prefer coroutines over callbacks
- โ Use Kotlin flows for reactive streams
- โ Follow MVP pattern
- โ Write meaningful commit messages
- โ Test your changes!
๐ค Contributing
We โค๏ธ contributions! Here's how to get started:
The Golden Rules
- Code Style is Sacred
- Run
ktlintFormatbefore committing - Follow existing patterns
- Keep it clean and readable
- Kotlin First, Always
- The app modules (base/mobile/tv) are 100% Kotlin โ keep them that way
- New code MUST be in Kotlin (no new Java files)
- Use coroutines and flows
-
Respect the Module Hierarchy
Feature Modules โ base โ UI ModulesNO CIRCULAR DEPENDENCIES! ๐ซ
-
Test Your Changes
- Write unit tests for business logic
- Add instrumented tests for UI
- Manual testing is also important!
Development Workflow
# 1. Create a feature branch
git checkout -b feature/awesome-new-feature
# 2. Make your changes
# ... code code code ...
# 3. Format and lint
./gradlew ktlintFormat
# 4. Run tests
./gradlew test
# 5. Commit with meaningful message
git commit -m "feat: add awesome new feature"
# 6. Push and create PR
git push origin feature/awesome-new-feature
For detailed development workflows, see SKILL.md
๐ข Versioning
Format: [major].[minor].[build]
Example: 3.72.123
- 3 = Major version
- 72 = Minor version
- 123 = Build number
๐ Additional Resources
- AGENTS.md โ AI-friendly architecture reference
- SKILL.md โ Development workflows and operational guides
- docs/ โ Comprehensive documentation
- docs/architecture/ โ Architecture deep-dives
- docs/features/ โ Feature-specific documentation
- docs/guides/ โ How-to guides
- docs/workflows/ โ Process documentation
- Android Developer Docs
- Kotlin Documentation
- Jetpack Compose
- Coroutines Guide
- Room Database
๐ Getting Help
- ๐ฌ Check existing issues
- ๐ง Reach out to the team
- ๐ Read the documentation
- ๐ Search the codebase for examples
๐ License
Copyright (c) 2021 Windscribe Limited
All rights reserved. This project is proprietary software developed by Windscribe Limited.