VOSP is a fork of the Dialer app from the Android Open Source Project tailored to provide voice services over SIP (Session Initiation Protocol) using the PJSIP communications library. VOSP is a (nearly) feature-complete replacement for the bundled dialer for your device or just an adjunct.
Basic useful feature list:
- Fast, Familiar, and Convenient UX
- Device-wide call handling
- Battery efficient
- Reliable connectivity on Marshmallow / Nougat Doze phones
- Background and Multiple calling handling
- Low background memory usage ~12mb
- No third-party advertising
- Open source!
Official builds are available from the Google Play store and directly from Meowsbox
VOSP is OpenSource. Refer to the LICENSE
and NOTICE
project files.
Alternate licensing terms may be available, contact us.
The section is a guide and not a "step-by-step-copy-paste" style tutorial. It is however a functional way to mimic the build process of the official app. You will need to adapt these instructions to your build-system and preferences. This guide assumes you are familiar with Android application development, Android Native code development, Linux and Windows if applicable.
Note this repo contains only the relevant source code specific to VOSP and may not contain the entirety of third-party code or libraries used in the official public releases. Where applicable, the third-party code will be referenced so you can decide what to include in your build.
VOSP is composed of two parts:
- Android Dalvik application
- Android Native dynamic libraries
- Android Studio IDE and text editor of your choice
- Android SDK with support for Android API 25 or newer
- Android NDK r12b
- Linux for the native code build.
- Linux or Windows for the application code build.
- Using your IDE or development toolset, create a standard Android project.
- Checkout the source code from this repo into your project.
- Download SQLite for Android
- Add the SQLite AAR to your project.
- Download PJSip.
- Extract PJSip into a folder of your choice.
- From our repo, apply the code patches from the
/third-party
folder to the PJSip code you extracted in the previous step. - Important: If your project structure and naming schema differs from the repo code, be sure to update the native code to reflect your changes.
- Optional: Add the desired third-party addons to the PJSip code base: SILK, opus, openSSL, etc.
- Extract the Android SDK and NDK
- Setup the Android NDK environment variables
ANDROID_HOME
,ANDROID_NDK_HOME
, andANDROID_NDK_ROOT
- Complete to steps in the for Buildling PJSip for Android here with respect to the points below:
- Complete the sections: Requirements, Build Preparations, Building PJSIP
- Optional: Complete the OpenSSL Support section
- The build process will generate the
libpjsua2.so
in the ABI flavor you specified. Copy the dynamic library into the appropriatejniLibs
folder of your project. - Complete the Building and running pjsua2 sample application section.
- Copy the SWING Java binding code from
pjsip-apps/src/swig/java/android/app/src/main/java
to your projectsrc
folder.
- Modify the
app/build.gradle
script to fit your build configuration. ie: remove references to our internal proguard and signing rules - Build and sign your APK.
If you made it this far, Congratulations! With any luck, you will now have built your own copy of VOSP from source. If you had any problems, check over the steps above carefully and read the FAQs below.
Great! Before you publish your builds run through this pre-flight list:
- Clearly change or remove all branding.
- Change or remove support contacts.
- Disable or remove network and licensing code pointing to our servers that are no longer applicable.
- Review the
LICENSE
andNOTICE
project files.
We love helping people but it's difficult to handle support request for third-party builds.
Q. I checked out your repo and it does not compile
This repo does not include third-party code and libraries. Refer to the build instructions carefully.
Q. Why do you not include all third-party code?
Most if not all the third-party code is verbatim. Any changes to third-party code essential to VOSP has either been included directly or as a patch to simplify maintainability of this repo.
Q. I need help with the native build process...
If you've never worked with native code or Linux building PJSip may be difficult. We suggest to start by looking at some basic Android development on Linux tutorials to start, then return to the build instructions again - they're pretty straight forward once you've had some experience. Alternatively if you don't need to make native code changes, consider using the libraries from the official apk releases.
Q. Your code really sucks!
Thank you for your input; we make no excuses.
Q. Weird PJSip build errors...
Be sure to use Android NDK r12b. PJSip is not currently out-of-the-box build-compatible with the newer NDK based on Clang.
Q. I can't find the SILK codec source code.
SILK is not needed but if you really want to include it, contact Skype's developer support team or just search for it...
Q. I found the SILK codec code but don't know what to do with it.
PJSip handles supported third-party codecs as part code and part dynamic library. Compile the codec however you want, CSipSimple is probably a good place to start if you are completely lost. Don't forget to add
--with-silk=/path/to/SILK_SDK_SRC
to your./configure-android
commandline.
Q. Android already includes SQLite...and *SSL too!
They are needed to support devices running non-standard Android OS flavors. (Outside the Google-sphere) The memory footprint penalty is acceptably small.
Q. I don't have a Linux build-environment, can you help me do this in Windows only?
The internet is great learning resource. Try Linux in a VM, it wont bite, probably.
Q. I just submitted a pull request... or How do I contribute?
Contact us. This repo is primarily a public code mirror for your convenience.
Q. Something else?
Contact us, we will try our best to respond. Please clearly state your query is development repo or code related so that it reaches the correct person(s) quickly.