See the latest release for download options.
A demonstration application showcasing how to integrate the Leaf VPN SDK into an Android application.
This application serves as a reference implementation for developers looking to integrate the Leaf VPN SDK into their Android applications. It demonstrates core VPN functionality, user interface design patterns, and best practices for VPN application development.
- Connect and disconnect VPN service
- Switch between multiple outbound connections
- Custom VPN configuration settings
- Memory logging and diagnostics
- Tile Service for quick VPN access from Quick Settings
- Auto-profile support for one-click configuration
- Multi-language support with 8 localized languages
- Update management with versioned releases
-
Activities: Main application entry points and UI containers
MainActivity: Primary application interfaceAutoProfileActivity: Handles deep links for automatic profile configurationMemoryLoggerActivity: Diagnostic tool for monitoring logs
-
ViewModels: Business logic and state management
LeafViewModel: Manages VPN service state, connections, and settingsUpdateViewModel: Handles application update checking and notificationsAutoProfileViewModel: Manages automatic profile configuration
-
Screens: Compose UI implementation
MainScreen: Root screen that hosts navigationDashboardScreen: Primary VPN control screenSettingsScreen: Configuration optionsProfileScreen: Profile selection and managementMemoryLogger: Log viewing interface
-
Services:
LeafVPNTileService: Quick Settings tile for VPN control
The project uses Gradle for building and includes a convenient build.sh script for creating
release packages.
./build.sh apk./build.sh aab./build.sh apk --publishThe application uses several configuration files:
version.properties: Controls application version informationrelease.properties: Contains signing and release server configurationstrings.xml: Contains localized strings and release notes
The application supports the following languages:
- English (default)
- Spanish
- Arabic
- Persian
- Indonesian
- Russian
- Turkish
- Uzbek
See the LICENSE file for details.