mirror of
https://gitlab.linphone.org/BC/public/linphone-android.git
synced 2026-01-17 19:38:08 +00:00
81 lines
4.7 KiB
Text
81 lines
4.7 KiB
Text
****************************
|
|
* LINPHONE for ANDROID *
|
|
****************************
|
|
|
|
COMPILATION INSTRUCTIONS
|
|
************************
|
|
|
|
To build liblinphone for Android, you must:
|
|
-------------------------------------------
|
|
0) download the Android sdk (API 23 at least) with platform-tools and tools updated to latest revision, then add both 'tools' and 'platform-tools' folders in your path.
|
|
1) download the Android ndk (version r11c or 12b) from google and add it to your path (no symlink !!!).
|
|
2) install yasm, nasm, ant, python, intltoolize, 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.
|
|
9) (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 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`
|