Linphone Android 编译

准备搞搞VOIP的业务,看了一下开源的VOIP客户端,觉得Linphone还是不错的,同时提供Android和IPhone客户端,所以决定下源代码编译一下。

我用的是我的T400上32位的CentOS 6虚拟机,首先当然是git下载源代码,不知道是我的无线网卡抽风还是公司的无线路由抽风,反正那几天网不停的掉,每次下载到半路就失败了。看了一下.git文件夹下的config文件,实际上它也是根据这个config文件分submodule递归下载的,所以理论上下载失败之后是可以分submodule下载的,但他是递归的,实在是太麻烦了,而且也容易出问题,放弃。

最后没办法,只好去我自己的服务器上下载,共享主机也没法用yum,不过自己编译安装也不麻烦,后来遇到无法连接的问题,发现是防火墙封了git默认的9418端口,居然连往外访问也封,下班前给HostMonster客服发了个邮件,第二天早上来收到回复说已经打开了。美国的网速就是快啊,几分钟就搞定了,顺带下载了iphone的源代码,然后scp到本地虚拟机上。

后面的准备过程就比较简单了,按照README操作即可。那些依赖库直接yum安装即可,ndk我用的是最新的r8b。prepare_sources过程中还要下载一些东西,网络不好的话也容易出问题,比较大的一个是SILK_SDK_SRC_v1.0.8.zip,可以用工具下载之后放到./submodules/mssilk/sdk/里头。

最后编译的时候报错:
jni/..//submodules/linphone/build/android/../../coreapi/linphonecore.c:49:40: error: expected ‘,’ or ‘;’ before ‘Devel’
jni/..//submodules/linphone/build/android/../../coreapi/linphonecore.c:1519:29: error: expected ‘,’ or ‘;’ before ‘Devel’
主要其实是常量LIBLINPHONE_VERSION没有定义,不知道是版本管理问题还是故意留着让你修改的,看了一下也就这两个地方定义了,所以直接复制一个字符串就行了,我用的是”1.3.2-20120919″

然后是另外一个错误:
jni/..//submodules/linphone/build/android/../../coreapi/linphonecall.c: In function ‘linphone_call_start_audio_stream’:
jni/..//submodules/linphone/build/android/../../coreapi/linphonecall.c:1236:64: error: expected ‘)’ before ‘Devel’
jni/..//submodules/linphone/build/android/../../coreapi/linphonecall.c: In function ‘linphone_call_start_video_stream’:
jni/..//submodules/linphone/build/android/../../coreapi/linphonecall.c:1334:64: error: expected ‘)’ before ‘Devel’
这回是LINPHONE_RTCP_SDES_TOOL,他用到的LINPHONE_VERSION没定义,直接赋值”Linphone-1.3.2-20120919″了事儿。

后面的就很顺利了,就是稍微有点慢。

有点奇怪的是我第一次编译成功的时候没有缺一些包,包括liblinphone.so等,当时也没报错啊,第二次编译就好了,但是已经不能重现了,不知道为什么会这样。

3 thoughts on “Linphone Android 编译”

Leave a Reply

Your email address will not be published. Required fields are marked *

This site uses Akismet to reduce spam. Learn how your comment data is processed.