CSipsimple是依赖pjsip协议,官网http://code.google.com/p/csipsimple/,官网上也有已经编译好的apk,对于编译CSipsimple有两种方式,一种就是要编译jni,另一种编译jni,直接使用已经编译好的这两种我都会说一下,首先说比较简单的一种,这个在官网上 也有介绍http://code.google.com/p/csipsimple/wiki/HowToBuild 介绍如何编译CSipsimple。

第一种方法,不编译jni

1.首先也是下载源码,由于CSipsimple依赖ActionBarSherlock,所以你导入到eclipse的时候也要把ActionBarSherlock导入进去。

  1. svn checkout http://csipsimple.googlecode.com/svn/trunk/ CSipSimple-trunk

里面会有5个文件夹

ActionBarSherlock  CSipSimpleBranded    CSipSimpleCodecPack
CSipSimple         CSipSimpleCodecG729  CSipSimpleVideoPlugin

2.下载org.tar.gz,由于你没有编译jni部分,所以CSipsimple源码里面的src下面的org.pjsip里面是空的,所以我们要下载部分内容,下载后解压对应目录拷贝进去
3.到官网http://nightlies.csipsimple.com/stable/1.01.00/(这个是最新的版本)下载CSipSimple-1.01.00-trunk.apk 然后把后缀的apk换成rar,解压把里面的lib内容拷贝到你的项目libs下面

4.clean一下项目,源码就不会报错了,可以正常运行。

第二种方法,编译jni

这个方法比较麻烦,主要是要下载各种依赖的库的源码,方法如下:

1。首先下载源码

  1. svn checkout http://csipsimple.googlecode.com/svn/trunk/ CSipSimple-trunk

2。进入CSipSimple下面,我们可以看看Makefile文件,它大体要做的内容:

首先下载依赖源码,总共6个分别是silk opus zrtp4pj openssl libvpx fdk_aac,所以要保持网络的畅通,而且时间也比较长

然后就是打补丁,对于这个我一开始使用的ndk的版本是r9,在这步一直出错,所以我就换成了r8d

其次我们make的选项也有几个,分别如下:

  1. CodecPackLibs :
  2. @(ndk-build -j6 APP_MODULES="pj_g7221_codec pj_codec2_codec pj_g726_codec pj_opus_codec pj_aac_codec")
  3. @(./dispatch_shared_libs.sh)
  4. CodecG729 :
  5. @(ndk-build -j6 APP_MODULES="pj_g729_codec")
  6. @(./dispatch_shared_libs.sh)
  7. VideoLibs : ffmpeg-lib
  8. @(ndk-build -j6 APP_MODULES="pj_video_android pj_vpx")
  9. @(./dispatch_shared_libs.sh)
  10. ScreenSharingLibs :
  11. @(ndk-build -j6 APP_MODULES="pj_screen_capture_android")
  12. @(./dispatch_shared_libs.sh)

添加不同的功能,要编译的模块也不同,我一开始是先make的,这样先看看基本的模块编译是否有问题。

3.首先检查一下你的系统中是否安装如下工具:

  1. git quilt unzip wget swig2.0 python make yasm

其中swig最好自己到官网下载一个最新的,现在好像是2.0.11

4.配置你的SDK,NDK环境变量,然后加到/ect/bash.bashrc下面,这部份自己到网上搜索一下。

5.make带着把,挺长的时间,这里声明一下我的环境:ubuntu12.04 ndk为r8d 32为系统,最后出现:

  1. # Dispatch to external projects
  2. Moving libpj_g7221_codec.so to CSipSimpleCodecPack project ... [--] - plugin not built
  3. Moving libpj_codec2_codec.so to CSipSimpleCodecPack project ... [--] - plugin not built
  4. Moving libpj_opus_codec.so to CSipSimpleCodecPack project ... [--] - plugin not built
  5. Moving libpj_g726_codec.so to CSipSimpleCodecPack project ... [--] - plugin not built
  6. Moving libpj_aac_codec.so to CSipSimpleCodecPack project ... [--] - plugin not built
  7. Moving libpj_g729_codec.so to CSipSimpleCodecG729 project ... [--] - plugin not built
  8. Moving libcrypto.so to CSipSimpleCrypto project ... [OK]
  9. Moving libssl.so to CSipSimpleCrypto project ... [OK]
  10. Moving libpj_video_android.so to CSipSimpleVideoPlugin project ... [--] - plugin not built
  11. Moving libpj_screen_capture_android.so to CSipSimpleVideoPlugin project ... [--] - plugin not built
  12. Moving libpj_vpx.so to CSipSimpleVideoPlugin project ... [--] - plugin not built
  13. # Build native library SUCCESSFUL

说明编译成功了,这时你再到src目录下面查看org.pjsip下面就会有之前pjsua的目录,这个就是编译生成的,同时你也会看见插件

6.在上面的基础上我添加视频支持,所以在终端上 make VideoLibs来添加视频的支持,视频的支持需要ffmpeg第三方库,所以这是会编译ffmpeg添加h264的支持。

期间可能出错例如:

  1. make[1]: Leaving directory `/CSipSimple-trunk_new/CSipSimple/jni/ffmpeg'
  2. make: *** [ffmpeg-lib] Error 2

这个不用管,再一次运行make VideoLibs,最后经过了很长时间,最后如下:

  1. make[1]: Leaving directory `/CSipSimple-trunk_new/CSipSimple'
  2. Moving libpj_g7221_codec.so to CSipSimpleCodecPack project ... [--] - plugin not built
  3. Moving libpj_codec2_codec.so to CSipSimpleCodecPack project ... [--] - plugin not built
  4. Moving libpj_opus_codec.so to CSipSimpleCodecPack project ... [--] - plugin not built
  5. Moving libpj_g726_codec.so to CSipSimpleCodecPack project ... [--] - plugin not built
  6. Moving libpj_aac_codec.so to CSipSimpleCodecPack project ... [--] - plugin not built
  7. Moving libpj_g729_codec.so to CSipSimpleCodecG729 project ... [--] - plugin not built
  8. Moving libcrypto.so to CSipSimpleCrypto project ... [OK]
  9. Moving libssl.so to CSipSimpleCrypto project ... [OK]
  10. Moving libpj_video_android.so to CSipSimpleVideoPlugin project ... [OK]
  11. Moving libpj_screen_capture_android.so to CSipSimpleVideoPlugin project ... [--] - plugin not built
  12. Moving libpj_vpx.so to CSipSimpleVideoPlugin project ... [OK]

我们需要的视频模块就编进去了,我们克隆的时候,出现5个文件,对应的也就是插件,编译出来的库并不在CSipSimple里面而且在CSipSimpleVideoPlugin文件夹下面,我们把相应的库拷贝到CSipSimple下的libs下面就可以了。

7.把项目导入到eclipse里面,运行一下结果如下:

自己也可以下载miniSIPServer来自己搭建一个服务器,我的测试效果如下:

CSipsimple最新版本编译的更多相关文章

  1. GCC 7.3.0版本编译http-parser-2.1问题

    http-paser是一个用c编写的http消息解析器,地址:https://github.com/nodejs/http-parser,目前版本2.9 今天用gcc 7.3.0编译其2.1版本时,编 ...

  2. VisualStudio下如何编译和使用最新版本的OpenCV(修正版)

    OpenCV是托管于GitHub的开源项目,本文具体解决一个问题,就是“获取最新版本的OpenCV,并且在自己的项目中使用起来"   最新版本 2017年3月31日 BY:jsxyhelu ...

  3. ubuntu 18.04下编译最新版本的KMS

    KMS:kurento媒体服务,即 kurento media server 很庞大的一个WEBRTC项目,GIT库主项目:https://github.com/Kurento 基础实现,修改了gst ...

  4. CentOS 6.6 升级GCC G++ (当前最新版本为v6.1.0) (完整)

    ---恢复内容开始--- CentOS 6.6 升级GCC G++ (当前最新GCC/G++版本为v6.1.0) 没有便捷方式, yum update....   yum install 或者 添加y ...

  5. 用VC2010以上版本编译可以在低版本XP和2003的运行程序的方法

    2013-09-17   作者:佚名   来源:本站整理   浏览:2001   评论:1   一直以来倍受此事困拢,vc2010以上版本编译出的exe或dll总是会引用kernel32.dll的En ...

  6. Ext.NET 4.1 最新版本破解

    Ext.NET 4.1 最新版本破解 今天在将Ext.NET 4.1版本的程序发布到公网时居然要license(localhost和127.0.0.1不收费),而且一年$4999,突然间觉得这是什么鬼 ...

  7. Android开发学习总结(一)——搭建最新版本的Android开发环境

    Android开发学习总结(一)——搭建最新版本的Android开发环境(转) 最近由于工作中要负责开发一款Android的App,之前都是做JavaWeb的开发,Android开发虽然有所了解,但是 ...

  8. centos7 + php7 lamp全套最新版本配置,还有mongodb和redis

    我是个懒人,能yum就yum啦 所有软件的版本一直会升级,注意自己当时的版本是不是已经更新了. 首先装centos7 如果你忘了设置swap分区,下面的文章可以教你怎么补一个上去: http://ww ...

  9. ubuntu安装最新版本的node.js

    下面的方法适用于最新版本的Ubuntu.Ubuntu 12.04 LTS.Ubuntu 12.10.Ubuntu 13.04等版本.它可以帮助开发者在Ubuntu上安装Node.js,无需从头编译安装 ...

随机推荐

  1. 用 Python 写一个 NoSQL 数据库Python

    NoSQL 这个词在近些年正变得随处可见. 但是到底 “NoSQL” 指的是什么? 它是如何并且为什么这么有用? 在本文, 我们将会通过纯 Python (我比较喜欢叫它, “轻结构化的伪代码”) 写 ...

  2. MongoDB 定位 oplog 必须全表扫描吗?

    MongoDB oplog (类似于 MySQL binlog) 记录数据库的所有修改操作,除了用于主备同步:oplog 还能玩出很多花样,比如 全量备份 + 增量备份所有的 oplog,就能实现 M ...

  3. itextsharp 1.0

    1 效果图 2.代码 引用组件: using iTextSharp.text;using iTextSharp.text.pdf;using System;using System.Data;usin ...

  4. Mac上的包管理器Homebrew的介绍及安装和使用实践

    Homebrew的作用 Homebrew是OS X上强大的包管理器,为系统软件提供了非常方便的安装方式,独特式的解决了包的依赖问题,并不再需要烦人的sudo,一键式编译,无参数困扰. 如何安装Home ...

  5. 三分钟学会在ASP.NET Core MVC 中使用Cookie

    一.Cookie是什么? 我的朋友问我cookie是什么,用来干什么的,可是我居然无法清楚明白简短地向其阐述cookie,这不禁让我陷入了沉思:为什么我无法解释清楚,我对学习的方法产生了怀疑!所以我们 ...

  6. optim.py cs231n

    n如果有错误,欢迎指出,不胜感激 import numpy as np """ This file implements various first-order upda ...

  7. SPSS操作:轻松实现1:1倾向性评分匹配(PSM)

    SPSS操作:轻松实现1:1倾向性评分匹配(PSM) 谈起临床研究,如何设立一个靠谱的对照,有时候成为整个研究成败的关键.对照设立的一个非常重要的原则就是可比性,简单说就是对照组除了研究因素外,其他的 ...

  8. laravel 文件

    用laravel处理上传的文件 1.获取上传的文件 $file=$request->file('file');2.获取上传文件的文件名(带后缀,如abc.png) $filename=$file ...

  9. MSSQL 为db创建user

    use [IBatisNet]GO if not exists (select * from master.dbo.syslogins where loginname = N'IBatisNet')B ...

  10. OpenTelemetry-可观察性的新时代

    有幸在2019KubeCon上海站听到Steve Flanders关于OpenTelemetry的演讲,之前Ops领域两个网红项目OpenTracing和OpenCensus终于走到了一起,可观察性统 ...