因项目需要,需要把srtp移植到android平台,于是我开始了艰难的旅程。
1,首先跑通demo代码,
在test下面有一个rtpw.exe这个就是demo,在cygwin下面运行下
1,首先跑通demo代码,
在test下面有一个rtpw.exe这个就是demo,在cygwin下面运行下
接收端 :./rtpw.exe -r -k c1eec3717da76195bb878578790af71c4ee9f859e197a414a78d5abc7451 -ea 127.0.0.1 99999
发送端:./rtpw.exe -s -k c1eec3717da76195bb878578790af71c4ee9f859e197a414a78d5abc7451 -ea 127.0.0.1 99999
我们能够接受和发送字符。
2,移植so到android平台下面
本来打算编译好一个so库,直接到android下面使用的,无奈一直木有成功,后来想到了静态库,但是原生代码编译生成的是x86下面的a库,不是arm平台的a库,所以也无法使用
本着死马当活马医的原则,我把crypto,include ,srtp 3个文件夹下面的源码都放到了ndk下面,并修改了mk文件,如下
我们能够接受和发送字符。
2,移植so到android平台下面
本来打算编译好一个so库,直接到android下面使用的,无奈一直木有成功,后来想到了静态库,但是原生代码编译生成的是x86下面的a库,不是arm平台的a库,所以也无法使用
本着死马当活马医的原则,我把crypto,include ,srtp 3个文件夹下面的源码都放到了ndk下面,并修改了mk文件,如下
LOCAL_MODULE := srtp # name it whatever
gdoi_src =
# Random source.
RNG_OBJS = rand_source.c
ciphers = crypto/cipher/cipher.c crypto/cipher/null_cipher.c \
crypto/cipher/aes.c crypto/cipher/aes_icm.c \
crypto/cipher/aes_cbc.c
hashes = crypto/hash/null_auth.c crypto/hash/sha1.c \
crypto/hash/hmac.c crypto/hash/auth.c # crypto/hash/tmmhv2.o
replay = crypto/replay/rdb.c crypto/replay/rdbx.c \
crypto/replay/ut_sim.c
math = crypto/math/datatypes.c crypto/math/stat.c
ust = crypto/ust/ust.c
rng = crypto/rng/$(RNG_OBJS) crypto/rng/prng.c crypto/rng/ctr_prng.c
err = crypto/kernel/err.c
kernel = crypto/kernel/crypto_kernel.c crypto/kernel/alloc.c \
crypto/kernel/key.c $(rng) $(err) # $(ust)
crypt_src = $(ciphers) $(hashes) $(math) $(stat) $(kernel) $(replay)
# libsrtp.a (implements srtp processing)
srtpobj = srtp/srtp.c
LOCAL_SRC_FILES := $(srtp_src) $(crypt_src) $(gdoi_src) # or $(so_path)/libthird1.so
然后编译了下,OK,通过了。我调用了err_status_t status = srtp_init(); 成功说明我的移植成功了。
然后编译了下,OK,通过了。我调用了err_status_t status = srtp_init(); 成功说明我的移植成功了。
版权声明:本文为thomasyuan8原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。