srtp移植到android平台

因项目需要,需要把srtp移植到android平台,于是我开始了艰难的旅程。
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文件,如下
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(); 成功说明我的移植成功了。

你可能感兴趣的:(即时通讯协议)