关于linphone的编译和安装

voip的客户端实在不少,zipper, xlite,linphone等。。,其中linphone算是个老牌的voip客户端了,功能非常庞大,但是也带来了它的庞大的‘体积‘这个弊端,源代码下载下来要有1.3个G左右(最新版), 比服务器(例如freeswitch)都大,编译好后甚至达到3.3G(说实话,个人觉得它太臃肿了,成了它最大的缺点),好了,言归正传,本文简单讲下linphone-android的编译(linphone-desktop, linphone-iphone等编译相对简单,最复杂的就是linphone-android, 所以这里以android客户端的编译为例):
1. 下载:个人建议不要从官方git下载(git://git.linphone.org/linphone-android.git --recursive),笔者就在这个坑里浪费了不少时间,一个是速度很慢,然后个吧小时后看似下载完毕了,没有报错,其实某些模块没有下载成功,然后编译中间的错误信息也看不出来问题所在。
建议下载地址: 2017年09月27日网页链接,笔者验证过下载比官网快很多(和官网同步是最新版本).
2. readme: 下载完毕,打开linphone-android/README.md,按照里面的编译要求来:
2.1 安装android sdk (版本必须包括api 25.2.3), 以笔者电脑为例,下载到~/Library/Android/sdk,那么在bashrc文件中(根据不同的shell,配置文件名不同)
2.2 下载安装android ndk(版本必须为r11c或者r13b), 譬如下载到~/Library/Android/sdk/android-ndk-r13b/
2.3 在shell的配置文件中(例如bashrc)中export相关的环境变量
        export ANDROID_HOME=~/Library/Android/sdk
        export ANDROID_NDK=~/Library/Android/sdk/android-ndk-r13b/
        export PATH=$ANDROID_HOME:$ANDROID_HOME/platform-tools:$ANDROID_HOME/tools:$ANDROID_NDK:$PATH
3. 解析来按照README.md里的步骤3、4、5、6进行依赖安装、配置、编译和安装apk

注:如果第一次编译过程中出现问题,多半是git clone ...过程出问题没有下载全,建议删除linphone-android目录重新下载,好在github速度很快,一般最多重复2次一定可以成功完整的下载整个linphone-android项目工程(笔者所在网络,每次重新git clone完毕不超过10分钟,一般20分钟内可以git clone结束)。



补充问题解决:
1. 在某次make的时候不小心电脑死掉了,重启后编译总是出错:报告can not create service ... failed to lock /usr/local/src/linphone-android/.gradle/.../taskHistory/ ... has already been locked by this process...

解决办法:
ps -A|grep -i gradle
kill -9 687 (687是上句显示出来的pid)
然后make, ok


2. 对于关注linphone-android客户端的人来说,经常也会安装android-studio, 在我的Mac电脑上,打开studio->new->import_project->...,按照提示,可以添加linphone-android到android-studio里成为一个project,好处是编辑linphone-android里的某个源文件非常方便,譬如双击shift按键,弹出对话框里输入liphonecall.java或者linphonecall.c之类的,就可以直接打开文件,进行编辑,不过笔者手贱,不小心按下了command+;组合按键,打开了project structure对话框,然后看到里面的android plugin version的值是2.3.3, 感觉有些过低,改成了笔者知道的最新的3.0.0-beta6,上面的cradle version也改成了4.1,保存后,在console里make就通不过了,所以只好通过git status查看更改了两个cradle的配置文件,然后git checkout xxx这两个被更改的文件进行恢复,可以make了(也即是plugin version恢复为2.3.3), 这个可能是linphone-android编译的一个问题吧,目前只能用android plugin version:2.3.3了, 最后上一张笔者的android studio的project struct图关于linphone的编译和安装