Android VPN client developed using ics-openvpn library.
ethervpn-walkthrough.mp4
Build instructions:
- Download swig[https://www.swig.org/download.html] on the system.
- Add swig executable path to system/android studio environment path variables.
- Check if submodules in cpp folder are fetched on your system using git submodule command.
- Replace requestIdToken and google-services.json configuration according to firebase configurations on your account.
- If current ovpn servers are not working then replace .ovpn configurations. Some free sites to find ovpn configs: freeopenvpn, vpngate.
Tips to build imported openvpn module with latest code while integrating in a base app:
- Change plugin id("com.android.application") to id("com.android.library") in openvpn build.gradle.kts.
- set(SWIG_EXECUTABLE "swig.exe") set(SWIG_DIR "swigwin-4.1.1") Add above 2 lines to openvpn/src/main/cpp/CMakeLists.txt if not present.
- Enable multiDex on your base app.
- Enable databinding and add productFlavors['ui', 'skeleton' in build.gradle of base app.
- Comment out splits and applicantVariants register function in openvpn build.gradle.kts.
- Verify de.blinkt.openvpn.core.OpenVPNService service and de.blinkt.openvpn.activities.DisconnectVPN activity is added to base project's AndroidManifest file.
Project/IDE configurations:
- Gradle version - 7.5, Gradle plugin version - 7.4.1
- SDK compile version - 33.0.0
- java version "1.8.0_361"
- Kotlin plugin installed on IDE
Future developments possible:
- Migration of ovpn configs to a DB and fetching it from there.
- Improvements in UI and connection status display.
- Implementation of subscription model for stable paid vpn servers.
Support the development for more free servers:
- BTC - bc1qm7j9qsn55ue3ke54n2f92el9jx8rfa343yqxq7
- ETH - 0x81466D108b0969DC26baE8AC040d15F706E9a231
To discuss any hiring opportunities, please drop an email to [email protected]
License:
This project is covered under GNUv3 license. It uses ics-openvpn module which uses GNUv2 license. Please read and understand scope of the license before starting the development.