Linphone.org mirror for linphone-android (https://gitlab.linphone.org/BC/public/linphone-android)
Linphone is an open source softphone for voice and video over IP calling and instant messaging.
It is fully SIP-based, for all calling, presence and IM features.
General description is available from linphone web site.
Copyright © Belledonne Communications
Linphone is dual licensed, and is available either :
under a GNU/GPLv3 license, for free (open source). Please make sure that you understand and agree with the terms of this license before using it (see LICENSE file for details).
under a proprietary license, for a fee, to be used in closed source applications. Contact Belledonne Communications for any question about costs and services.
Supported features and RFCs : https://www.linphone.org/technical-corner/linphone/features
Linphone public wiki : https://wiki.linphone.org/xwiki/wiki/public/view/Linphone/
Tutorials : https://gitlab.linphone.org/BC/public/tutorials/-/tree/master/android/kotlin
App has been totally rewritten in Kotlin using modern components such as Navigation, Data Binding, View Models, coroutines, etc...
Check the CHANGELOG file for a more detailled list.
The first linphone-android release that will be based on this will be 4.5.0, using 5.0.0 SDK.
We're also taking a fresh start regarding translations so less languages will be available for a while.
If you want to contribute, you are welcome to do so, check the Translations section below.
org.linphone.legacy flavor (old java wrapper if you didn't migrate your app code to the new one yet) is no longer supported starting 5.0.0 SDK.
The sample project has been removed, we now recommend you to take a look at our tutorials.
If you have Android Studio, simply open the project, wait for the gradle synchronization and then build/install the app.
It will download the linphone library from our Maven repository as an AAR file so you don't have to build anything yourself.
If you don't have Android Studio, you can build and install the app using gradle:
./gradlew assembleDebugwill compile the APK file (assembleRelease to instead if you want to build a release package), and then
./gradlew installDebugto install the generated APK in the previous step (use installRelease instead if you built a release package).
APK files are stored within
When building a release AppBundle, use releaseAppBundle target instead of release.
Also make sure you have a NDK installed and that you have an environment variable named
ANDROID_NDK_HOMEthat contains the path to the NDK.
Clone the linphone-sdk repository from out gitlab:
git clone https://gitlab.linphone.org/BC/public/linphone-sdk.git --recursive
Follow the instructions in the linphone-sdk/README file to build the SDK.
Create or edit the gradle.properties file in $GRADLEUSERHOME (usually ~/.gradle/) and add the absolute path to your linphone-sdk build directory, for example:
Rebuild the app in Android Studio.
Install LLDB from SDK Tools in Android-studio.
In Android-studio go to Run->Edit Configurations->Debugger.
Select 'Dual' or 'Native' and add the path to linphone-sdk debug libraries (build/libs-debug/ for example).
Open native file and put your breakpoint on it.
Make sure you are using the debug AAR in the app/build.gradle script and not the release one (to have faster builds by default the release AAR is used even for debug APK flavor).
If you encounter the
couldn't find "libc++_shared.so"crash when the app starts, simply clean the project in Android Studio (under Build menu) and build again. Also check you have built the SDK for the right CPU architecture using the
Push notification might not work when app has been started by Android Studio consecutively to an install. Remove the app from the recent activity view and start it again using the launcher icon to resolve this.
When submitting an issue on our Github repository, please follow the template and attach the matching library logs:
To enable them, go to Settings -> Advanced and toggle
Debug Mode. If they are already enabled, clear them first using the
Reset logsbutton on the About page.
Then restart the app, reproduce the issue and upload the logs using the
Send logsbutton on the About page.
Finally paste the link to the uploaded logs (link is already in the clipboard after a sucessful upload).
Before the 4.1 release, there were a lot of files to edit to change the package name.
Now, simply edit the app/build.gradle file and change the value returned by method
manifestPlaceholdersfeature of gradle and Android.
You may have already noticed that the app installed by Android Studio has
Now that Google Cloud Messaging has been deprecated and will be completely removed on April 11th 2019, the only official way of using push notifications is through Firebase.
However to make Firebase push notifications work, the project needs to have a
app/google-services.jsonfile that contains the configuration.
If you have your own push server, replace this file by yours.
We no longer use transifex for the translation process, instead we have deployed our own instance of Weblate.
Inscriptions are currently disabled but you can contact us to request an access if you want to contribute.
In order to submit a patch for inclusion in linphone's source code:
The goal of this agreement to grant us peaceful exercise of our rights on the linphone source code, while not losing your rights on your contribution.