Quinn

lkk's blog


  • 首页

  • 标签

  • 分类

  • 归档

编译pjsip for Android

发表于 2019-07-31 |

pjsip

PJSIP是一个包含了SIP、SDP、RTP、RTCP、STUN、ICE等协议实现的开源库。它把基于信令协议SIP的多媒体框架和NAT穿透功能整合成高层次、抽象的多媒体通信API,这套API能够很容易的一直到各种构架中,不管是桌面计算机,还是嵌入式设备等。

PJSIP支持音频、视频和即时消息,并具有广泛的文档。PJSIP非常便携。在移动设备上,它抽象出与系统相关的功能,并且在许多情况下能够利用设备的本地多媒体功能。
官网
细致的介绍以及原理

编译

想要在Android开发中使用这个开源库,就要进行编译生成依赖包和.so库

目录:
lib: [PJPROJECT的lib库]
pjlib:[基础框架库]
pjlib-util:[辅助工具库]
pjmedia:[开源的媒体栈]
pjnath:[开源的NAT-T辅助库]
pjsip:[开源的SIP协议栈]
pjsip-apps[demo]

第一步 准备: 创建config_site.h

需要现在下载源码 官网下载地址
创建pjlib/include/pj/config_site.h, 并config.site.h它添加内容:

1
2
3
/* Activate Android specific settings in the 'config_site_sample.h' */
#define PJ_CONFIG_ANDROID 1
#include <pj/config_site_sample.h>

第二部 构建:环境

需要为你的ndk配置当前的环境变量

1
$ export ANDROID_NDK_ROOT=[YOUR ANDROID_NDK ROOT DIR]  //你的ndk根目录

然后依次执行

1
2
$ ./configure-android
$ make dep && make clean && make

这里需要说明下,本人在执行完./configure-android的时候遇到问题如下:
aconfigure: error: C preprocessor "/lib/cpp" fails sanity check
See `config.log' for more details

stackoverflow这哥们遇到的和我一样,but他解决了却不告诉我, 连喊三个what?
拿着他的编译成果纵然不甘心,一番搜索终于还是解决了,(官网教程也有写,只不过放在最底下,让我这按部就班背锅了) 原来pjsip无法建立在android-ndk-r15上,只要指定 NDK_TOOLCHAIN_VERSION版本就好了,执行以下指令:

1
$ NDK_TOOLCHAIN_VERSION=4.9 TARGET_ABI=armeabi ./configure-android --use-ndk-cflags

第三步: 生成libpjsua2.so

需要使用SWIG编译java接口文件swig下载
在这个过程中下载pcre-build.sh需要用的压缩包
我下载的是pcre-8.40.tar.bz2
把pcre-8.40.tar.bz2拷贝到swig的根目录下
重命名pcre-8.40.tar.bz2为pcre-8.40.tar
进入到swig根目录下,执行./Tools/pcre-build.sh
依次执行 ./autogen.sh
./configure
make
sudo make install

然后切到pjsip-apps/src/swig目录执行

1
$ make

等待执行完毕…
最终会在pjsip-apps/src/swig/java/android/app/src/main/jniLibs目录下生成libpjsua2.so
同时在pjsip-apps/src/swig/java/android/app/src/main生成
很多java文件。这些文件也是给apk开发使用的

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

(如果需视频则要把libopenh264.so也导入)

我的编译成果:github

VasDolly

发表于 2019-06-26 | 分类于 Android |

Github

简介

VasDolly是一种快速多渠道打包工具,同时支持基于V1签名和V2签名进行多渠道打包。插件本身会自动检测Apk使用的签名类别,并选择合适的多渠道打包方式,对使用者来说完全透明。
V1.1.6版本已支持Android Gradle Plugin 3.0,欢迎使用!

目前Gradle Plugin 2.2以上默认开启V2签名,所以如果想关闭V2签名,可将下面的v2SigningEnabled设置为false。

1
2
3
4
5
6
7
8
9
10
11
12
13
signingConfigs {
release {
...
v1SigningEnabled true
v2SigningEnabled false
}

debug {
...
v1SigningEnabled true
v2SigningEnabled false
}
}

接入流程

阅读全文 »

Kotlin 笔记

发表于 2019-06-20 | 分类于 Kotlin |

中文站
Github
菜鸟工具-在线编译

Kotlin 设计精髓

  1. 空值安全
  2. 扩展函数
  3. 扩展属性
  4. 属性代理
  5. 运算符
  6. 解构
  7. 协程

构造函数 (constructor)

Koltin 中的类可以有一个 主构造器,以及一个或多个次构造器,主构造器是类头部的一部分,位于类名称之后:

1
class Person constructor(firstName: String) {}

如果主构造器没有任何注解,也没有任何可见度修饰符,那么constructor关键字可以省略。

1
2
class Person(firstName: String) {
}

阅读全文 »

脚本搭建SSR服务

发表于 2019-06-06 | 分类于 记录 |

SSR的全称是Shadowsocks,是一个免费、开源的加密代理项目,通过加密代理来绕过防火墙,科学上网绕开qiang的约束;它是由一个名为“clowwindy”的中国程序员于2012年创建的; 致敬!

准备:

  1. 国外服务器
  2. ssh 远程连接服务器
  3. shadowsocksX客户端 MAC Windows
  4. 补充:bbr加速
阅读全文 »

jd-gui

发表于 2019-05-13 | 分类于 记录 |

jd-gui

《JD-GUI》是Java编程语言的反编译程序,JD是作为一个GUI工具提供的分为JD-GUI、JD-Eclipse两种运行方式,JD-GUI是以单独的程序的方式运行,JD-Eclipse和JD-Intellij则是以一个Eclipse和Intellij IDEA插件的方式运行

JD支持从1.1.8到1.7.0的Java版本,以及JROKIT 90Y150、Jikes 1.2.2、Eclipse Java编译器和Apache Harmony,因此通常在以前流行的JAD操作时使用。

下载

https://github.com/java-decompiler/jd-gui
官网下载

建议下载jar包的形式运行不需要安装 方面快捷

1

阅读全文 »
12…4
lkk

lkk

一代码农也有闷骚情怀

18 日志
7 分类
8 标签
GitHub E-Mail Google FB Page
© 2015 — 2019 lkk