Git Product home page Git Product logo

linphone-android's Introduction

              ****************************
              *   LINPHONE for ANDROID   *
              ****************************

COMPILATION INSTRUCTIONS
************************

To build liblinphone for Android, you must:
-------------------------------------------
0) download the Android sdk with platform-tools and tools updated to latest revision (at least API 16 is needed), then add both 'tools' and 'platform-tools' folders in your path.
1) download the Android ndk (version r11) from google and add it to your path (no symlink !!!).
2) install yasm, nasm, ant, python, cmake and vim-common
	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
3) 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.
4) run the Makefile script in the top level directory.
	$ make
5) (Optional) To install the generated apk into a plugged device, run
	$ make install
6) (Optional) To generate a liblinphone SDK zip containing a full jar and native libraries, run
	$ make liblinphone-android-sdk
7) (Optional) To generate a libmediastreamer2 SDK zip containing a full jar and native libraries, run
	$ make mediastreamer2-sdk
8) (Optional) To generate a signed apk to publish on the Google Play, run
	$ make release
Make sure you filled the ant.properties values for version.name, key.store and key.alias in order to correctly sign the generated apk. 
You also may want to create a file name ant_password.properties with the following:
key.store.password=[your_password]
key.alias.password=[your_password]
If you don't, the passwords will be asked at the signing phase.

To run the tutorials:
--------------------
1) open the res/values/non_localizable_custom.xml file and change the value of the show_tutorials_instead_of_app to true.
2) compile again using make && 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 custom_rules.xml file:
1) look for the property named "linphone.package.name" and change it value accordingly
2) also update the values in the AndroidManifest file where the comment <!-- Change package ! --> 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 <!-- Change package ! --> 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 https://ccache.samba.org/). Give the "-DCMAKE_C_COMPILER_LAUNCHER=ccache -DCMAKE_CXX_COMPILER_LAUNCHER=ccache" options to the prepare.py script.

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: https://groups.google.com/forum/?fromgroups=#!topic/android-ndk/3wIbb-h3nDU

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`

linphone-android's People

Contributors

bagage avatar cdeschambc avatar fgrisez avatar gberaudo avatar jeannotlapin avatar pankajanand18 avatar peppsac avatar sanavak avatar solomax avatar viish avatar

Stargazers

 avatar

Watchers

 avatar  avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.