Kotlin/Jetpack-Compose SIP/VoIP dialer for Android, built on PJSIP 2.17 (pjsua2 via JNI).
Released under the GNU General Public License v2 (see LICENSE). It links
PJSIP (dual-licensed GPLv2 / commercial) under its GPLv2 terms, so the app
as a whole is GPLv2. See NOTICE for third-party attributions.
Secrets and server endpoints were removed from this public source. Provide your
own (search for REPLACE_WITH_ and example.com):
app/src/main/kotlin/ing/icall/dialer/api/IcallApi.kt— balance/rates/OTP keys +mobileapihostapp/src/main/kotlin/ing/icall/dialer/api/GatewayApi.kt,LogUploader.kt,push/*— push gateway hostapp/src/main/kotlin/ing/icall/dialer/sip/MohConfig.kt,data/SettingsStore.kt— default SIP domainsapp/google-services.json— copyapp/google-services.json.exampleand fill in your Firebase project (FCM)keystore.properties(release signing) — optional; debug builds work without it
The PJSIP/OpenSSL/libvpx native libs (app/src/main/jniLibs/*/lib*.so) are
build artifacts and are not committed. Build PJSIP 2.17 for Android
(arm64-v8a, armeabi-v7a) with video (libvpx) + OpenSSL and place the .sos in
app/src/main/jniLibs/<abi>/. The pjsua2 SWIG Java bindings under
app/src/main/java/org/pjsip/ are included.
./gradlew assembleDebugRequires JDK 17 + Android SDK.
This application is licensed under GPLv2 because it links GPLv2 PJSIP.
- Google Play (Android): GPLv2 apps are permitted on Google Play, so this app may be distributed there under GPLv2.
- Apple App Store (iOS): GPLv2 is generally regarded as incompatible with the App Store Terms of Service (which impose usage/copy restrictions that GPLv2 forbids — see the 2011 removal of VLC). Shipping a GPLv2 build on the public App Store may therefore require a different license for the binary (e.g. a PJSIP commercial license) or legal review.
This is a licensing summary, not legal advice — the distributor should confirm with counsel before any public release.