Version 15 (modified by nanang, 12 years ago) (diff) |
---|
Getting Started: Building for Android
TracNav
Getting Started- Moved to: https://docs.pjsip.org/en/latest/index.html#get-started
Preparation
Build for Desktop
Build for Mobile
- iOS: Apple iPhone, iPad, and iPod Touch
- Android
- BlackBerry 10 (BB10)
- Windows Mobile
- Windows Phone 8.x and UWP
Symbian...
- Build for Other
Next: Using the libraries
See Also
- Requirements
- Build Preparation
- Building PJSIP
- Building and running apjsua sample application
- Debugging native code with Eclipse
- Other Android projects
Android target is currently available in Android branch and currently still experimental.
Requirements
- Besides the Android SDK, you will also need the Android NDK.
- Optional: SWIG if you want to build the sample application apjsua.
Build Preparation
- Get the source code, if you haven't already.
- Set your config_site.h to the following:
#define PJ_CONFIG_ANDROID 1 #include <pj/config_site_sample.h>
This will activate Android specific settings in the config_site_sample.h.
Building PJSIP
Just run:
$ cd /path/to/your/pjsip/dir $ export ANDROID_NDK_ROOT=/path_to_android_ndk_dir $ ./configure-android $ make dep && make clean && make
Notes:
- the ./configure-android is a wrapper that calls the standard ./configure script with settings suitable for Android target.
- you may pass standard ./configure options to this script too.
- for more info, run ./configure-android --help
- other customizations are similar to what is explained in Building with GNU page.
Building and running apjsua sample application
We have apjsua sample application located under pjsip-apps/src/apjsua. It is not built by default, and you need SWIG to build it.
Follow these steps to build apjsua:
- Make sure SWIG is in the build environment PATH.
- Alternatively, update SWIG path in $PJDIR/pjsip-apps/src/apjsua/jni/Android.mk file.
- Run ndk-build from directory $PJDIR/pjsip-apps/src/apjsua, note that the Android NDK root should be in the PATH, e.g:
$ cd /path/to/your/pjsip/dir $ cd pjsip-apps/src/apjsua $ ndk-build
- Create Android project from apjsua. In Eclipse:
- From menu: File --> New --> Project
- Select Android Project from Existing Code, press Next
- In Root Directory, put the location of apjsua source code (i.e. $PJDIR/pjsip-apps/src/apjsua) and press Finish
- You may need to select different Android SDK than what is configured in apjsua. You can do this from the project's Properties.
- You can modify apjsua/res/raw/config.txt for apjsua's config file.
- Run it.
Debugging native code with Eclipse
Here are the steps for debugging PJSIP native code using Eclipse:
- Build PJSIP with debugging enabled, e.g: insert CFLAGS += -g into user.mak in PJSIP root directory.
- Make sure that the JNI part of the application is built using ndk-build. For reference, check apjsua's Android.mk build config in pjsip-apps/src/apjsua/jni, it contains sample of how to import PJSIP build settings (build search paths, build flags, etc) and SWIG invocation.
- Enable NDK plugin for Eclipse, check this and follow the instructions.
- It is recommended to introduce delay (about 5 seconds) in the application code between loading the native code library and calling any native functions (to be debugged), e.g:
try { System.loadLibrary("some_native_lib.so"); } catch (UnsatisfiedLinkError e) { return -1; } // Wait for GDB init if ((getApplicationInfo().flags & ApplicationInfo.FLAG_DEBUGGABLE) != 0) { try { Thread.sleep(5000); } catch (InterruptedException e) { } } // Start calling native functions here // ...
- Load PJSIP project to Eclipse, and try put breakpoint anywhere in the PJSIP code before launching the application debug configuration in Eclipse.
Other Android projects
Also have a look at the following PJSIP Android project:
- csipsimple project, an Android port of pjsip.