No description
Find a file
2018-04-12 11:58:26 +02:00
.tx Fix new local for hebrew 2017-04-21 16:41:01 +02:00
cmake_builder [Switch submodule branch] Updated submodules 2018-01-22 14:33:46 +01:00
doc Add recover account 2016-08-12 17:48:38 +02:00
gradle/wrapper Fixing gradle.build of tester 2017-08-29 16:50:11 +02:00
jni Add file needed to use ndk-gdb 2017-04-18 17:41:29 +02:00
liblinphone_tester Fixed tester 2017-11-29 10:32:36 +01:00
libs Fix build for GCM 2017-04-28 14:41:24 +02:00
patches update external submodules: 2016-01-04 15:27:15 +01:00
res Added resend option to context menu if needed + fixed all english 'Infos' to 'Info' 2018-04-11 14:19:56 +02:00
sample Clean headers 2017-10-06 10:20:59 +02:00
src Updated build.gradle 2018-04-12 11:58:26 +02:00
submodules Fix firebase (fix actually backported from dev_group_chat branch, with modifications to handle a build without the google-services jar.) 2018-04-12 10:19:24 +02:00
tutorials Started migration of Android app to new JNI/Java wrapper 2017-10-17 19:57:58 +02:00
.classpath Removed previous xmlrpc lib by the one in liblinphone 2016-07-22 17:44:29 +02:00
.gitignore Improved apk build by copying generated wrapper into android/src at compilation + fixed sdk targets 2017-10-20 12:05:06 +02:00
.gitmodules Updated libxml2 repo to github 2018-04-11 13:23:27 +02:00
.project add ilbc 2010-06-30 09:54:16 +02:00
AndroidManifest.xml Version bump 2018-04-09 17:28:44 +02:00
AndroidManifestLibrary.xml Update version number 2017-12-28 16:49:35 +01:00
bsed.sh Fix bsed script for x86 flavor 2015-07-06 15:54:21 +02:00
build.gradle Updated build.gradle 2018-04-12 11:58:26 +02:00
CHANGELOG.md Update changelog 2017-10-19 11:35:57 +02:00
check_tools.sh check_tools.sh: fix libtool detection on mac 2016-04-12 09:34:23 +02:00
gradle.properties update linphone submodule. 2018-02-15 12:53:22 +01:00
gradlew Updating plugins 2017-08-29 16:02:09 +02:00
gradlew.bat Add gradlew file 2017-02-24 10:37:49 +01:00
libLinphoneAndroidSdk.gradle Merge branch 'master' into dev_group_chat 2018-02-13 15:13:32 +01:00
linphoneAndroidSdk.gradle Improved apk build by copying generated wrapper into android/src at compilation + fixed sdk targets 2017-10-20 12:05:06 +02:00
prepare.py No longer build for x86 by default. 2018-03-15 09:19:42 +01:00
README.md Updates the list of build dependencies in README.md 2017-12-05 12:05:12 +01:00
test.patch Add patch for ui test 2017-07-19 17:06:09 +02:00

Linphone is a free VoIP and video softphone based on the SIP protocol.

COMPILATION INSTRUCTIONS

To build liblinphone for Android, you must:

  1. Download the Android sdk (API 26.0.1 at max) with platform-tools and tools updated to latest revision, then add both 'tools' and 'platform-tools' folders in your path and the android-sdk folder to ANDROID_HOME environment variable.

  2. Download the Android ndk (version r11c or 15) from google and add it to your path (no symlink !!!) and ANDROID_NDK environment variable.

  3. Install yasm, nasm (For OpenH224 support only), python, pkg_config and cmake(>=3.7).

  • On 64 bits linux systems you'll need the ia32-libs package.
  • With the latest Debian (multiarch), you need this:
    • dpkg --add-architecture i386
    • aptitude update
    • aptitude install libstdc++6:i386 libgcc1:i386 zlib1g:i386 libncurses5:i386
  1. Run ./prepare.py in the top level directory. This will configure the build and generate a Makefile in the top level directory. Some options can be passed to choose what you want to include in the build and the platforms for which you want to build. Use ./prepare.py --help to see what these options are.

  2. Run the Makefile script in the top level directory, make.

  3. (optional) To install the generated apk into a plugged device, run make install.

  4. (optional) To generate a liblinphone SDK zip containing a full jar and native libraries, run make liblinphone-android-sdk

  5. (optional) To generate a libmediastreamer2 SDK zip containing a full jar and native libraries, run make mediastreamer2-sdk

  6. (optional) To generate a signed apk to publish on the Google Play, run make release. Make sure you filled the gradle.properties values for version.name, store file, store password, key alias and key password to correctly sign the generated apk:

  • RELEASE_STORE_FILE=""
  • RELEASE_STORE_PASSWORD=
  • RELEASE_KEY_ALIAS=
  • RELEASE_KEY_PASSWORD=

If you don't, the passwords will be asked at the signing phase.

  1. (optional) Once you compiled the libraries succesfully with 'make', you can reduce the compilation time using 'make quick': it will only generate a new APK from java files.

To run the tutorials:

  1. Open the res/values/non_localizable_custom.xml file and change the show_tutorials_instead_of_app to true.

  2. Compile again using make and make install.

  3. Don't forget to put it back to false to run the linphone application normally.

To create an apk with a different package name

You need to edit the build.gradle file:

  1. look for the function named "getPackageName()" and change it value accordingly
  2. also update the values in the AndroidManifest file where the comment appears
  3. change the package name also in the files: res/xml/syncadapter.xml, res/xml/contacts.xml and res/values/non_localizable_custom where appears
  4. run again the Makefile script by calling "make"

To run the liblinphone test suite on android

Simply run make liblinphone_tester. This will be build everything, generate an apk, and install it on the connected device if any.

You can speed up the compilation by using ccache (compiler cache, see ccache.samba.org). Give the "-DCMAKE_C_COMPILER_LAUNCHER=ccache -DCMAKE_CXX_COMPILER_LAUNCHER=ccache" options to the prepare.py script.

PUSH NOTIFICATION

Firebase

To enable firebase in Linphone, just add your 'google-service.json' in project root, add your key at 'push_sender_id' and add 'firebase' at 'push_type' in 'res/values/non_localizable_custom.xml' Be sure to have all services for Firebase in your 'AndroidManifest.xml'

Google

To enable google push in Linphone, remove 'google-service.json' file if it exist, add your key at 'push_sender_id' and add 'google' at 'push_type' in 'res/values/non_localizable_custom.xml' Be sure to have every permissions and services for GCM in your 'AndroidManifest.xml'

TROUBLESHOOTING

If you encounter the following issue:

E/dalvikvm( 2465): dlopen("/data/app-lib/org.linphone-1/liblinphone-armeabi-v7a.so") failed:
Cannot load library: soinfo_relocate(linker.cpp:975): cannot locate symbol "rand" referenced
by "liblinphone-armeabi-v7a.so"

It's because you have installed the android-21 platform (which is chosen automatically because it's the most recent) and you deployed the apk on a android < 5 device.

To fix this, in the Makefile, force ANDROID_MOST_RECENT_TARGET=android-19.

If you encounter troubles with the make clean target and you are using the 8e android ndk, the solution can be found here.

If you built the app using eclipse, ensure you ran at least once the make command (see above steps 0 to 3) ! Else you'll have this exceptions:

FATAL EXCEPTION: main
java.lang.ExceptionInInitializerError
...
Caused by: java.lang.UnsatisfiedLinkError: Couldn't load linphone-armeabi-v7a: findLibrary
returned null

BUILD OPTIONS

The build options are to be passed to the prepare.py script. For example to enable the x264 encoder give the "-DENABLE_X264=YES" to prepare.py.

The available options can be listed with the ./prepare.py --list-features

CONTRIBUTIONS

In order to submit a patch for inclusion in linphone's source code:

  1. First make sure your patch applies to latest git sources before submitting: patches made to old versions can't be merged.
  2. Fill out and send us an email with the link of pullrequest and the Contributor Agreement for your patch to be included in the git tree. 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.