Android 编译PjSip

官网编译指导:https://trac.pjsip.org/repos/wiki/Getting-Started/Android
1、环境资源准备
1)、Linux系统编译环境
2)、SDK
使用的版本是:android-sdk_r24.4.1-linux.tgz
下载连接:http://tools.android-studio.org/index.php/sdk
3)、NDK
使用版本:android-ndk-r13b-linux-x86_64.zip
下载连接:https://developer.android.google.cn/ndk/downloads/older_releases.html#ndk-13b-downloads
注意:不要使用r14b版本,r14b在编译PjSip时,会报缺乏头文件的错误。
4)、openh264(必须是openh264-1.6.0及以上的版本、视频编解码生成库)
使用版本:openh264-1.8.0.tar.gz
下载连接:https://github.com/cisco/openh264/archive/v1.6.0.zip
下载连接:https://github.com/cisco/openh264/releases/tag/v1.8.0(1.8.0版本需点击Source code(tar.gz)下载)
https://codeload.github.com/cisco/openh264/tar.gz/v1.8.0(1.8.0linux源码直接下载)
5)、SWIG (即简化包以及接口生成器,为脚本语言(java,perl,python等)提供了C和C++的接口)
使用版本: swig-3.0.12(必须是swig 2.0.5以上的版本,不然编译PjSip会失败)
下载连接: http://www.swig.org/download.html
6)、PjSip
使用版本:pjproject-2.8.tar.bz2
下载连接:http://www.pjsip.org/release/2.8/pjproject-2.8.tar.bz2php

2、安装SDK
解压SDK
tar xvf android-sdk_r24.4.1-linux.tgz(如:在/home/xxx/目录下解压)html

3、安装NDK
解压NDK
unzip android-ndk-r13b-linux-x86_64.zip(如:在/home/xxx/目录下解压)java

4、编译openh264
1)、解压tar -xzvf openh264-1.8.0.tar.gz(如:在/home/xxx/目录下解压)python

2)、cd /home/xxx/openh264-1.8.0(解压的目录)

 3)、设置环境变量
	export ANDROID_SDK_ROOT=/home/xxx/android-sdk-linux
	export PATH=$ANDROID_SDK_ROOT/tools:$PATH
	上面中xxx为个人工做目录。ANDROID_SDK_ROOT变量请根据本身的SDK路径配置。

 4)、编译
	make OS=android NDKROOT=/home/xxx/android-ndk-r13b TARGET=android-22 PREFIX=./androidlib install-shared
	NDKROOT请根据本身的NDK路径,设置成本身的绝对路径。
	TARGET设置成本身须要编译的android的对应的版本,我要在android 5.1上运行,因此设置的是android-22
	PREFIX设置openh264编译成功后的安装目录。这个在编译PjSip时,须要使用到,里面包含include头文件夹目录和lib库目录。

5、安装SWIG(即简化包以及接口生成器,为脚本语言(java,perl,python等)提供了C和C++的接口)
1)、解压swig-3.0.12:tar -xzvf swig-3.0.12.tar.gz(如:在/home/xxx/目录下解压)linux

2)、cd /home/xxx/swig-3.0.12(解压的目录)

 3)、编译安装
	make // 编译
	make install // 安装

 4)、查看版本信息
	swig -version
	注意:直接命令安装swig:sudo apt-get install swig (不是最新的版本)

6、编译PjSip
1)、解压tar -jxvf pjproject-2.8.tar.bz2(如:在/home/xxx/目录下解压)android

2)、cd /home/xxx/pjproject-2.8(解压的目录)

 3)、若是要视频则须要在config_site.h文件添加以下内容:
	#define PJ_CONFIG_ANDROID 1
	#define PJMEDIA_HAS_VIDEO 1
	#include <pj/config_site_sample.h>

 4)、设置NDK环境变量
	export ANDROID_NDK_ROOT=/home/xxx/android-ndk-r13b	

 5)、配置:
	没有视频:./configure-android()
    有视频配置:./configure-android --with-openh264=/home/xxx/openh264-1.8.0/androidlib/(设置成openh264编译成功后,
		生成的androidlib目录路径,设置成绝对路径,androidlib目录名称参考openh264编译中PREFIX的目录名称。)
 6)、编译PjSip
	make dep && make clean && make	

 7)、 使用SWIG编译java接口文件
	cd pjsip-apps/src/swig make 最终会生成libpjsua2.so(sip安卓应用界面所需库)
	会在pjsip-apps/src/swig/java/android/app/src/main/jniLibs目录下生成libpjsua2.so,
	这个so是给apk使用的。同时在pjsip-apps/src/swig/java/android/app/src/main生成
	不少java文件。这些文件是给apk开发使用的。

	cd pjsip-apps/src/pjsua/android/jni make 最终会生成libpjsua.so(例子)

 8)、把生成了libpjsua2.so和swig相应的java文件供开发apk使用(若是需视频则要把libopenh264.so也要供给)