http://blog.youkuaiyun.com/a992036795/article/details/54377892
版权声明:本文为博主原创文章,未经博主允许不得转载。
一、前言
为了让Android能够使用librtmp,我们需要下载它的源码并使用交叉编译工具编译成可以供android使用的库文件。我在网上参考了一些别人移植的文章,但到自己移植的时候缺踩了许多坑。还好今天终于移植成功了,特此总结一下。
二、流程
我看了一下网上的资料大概流程都是:
1、从ndk中提出一个交叉编译工具链,并设置环境变量,供我们编译使用。
2、因为librtmp需要依赖ssl library,所有我们首先需要下载,并交叉编译ssl,
3、交叉编译ssl library(我选择的是 polarssl-1.2.17)
4、开始交叉编译librtmp,需要引用polarssl。
下面我贴出这种编译的详细流程:
1、提出交叉编译工具链
- 1
- 1
最后这个工具集就会在 /home/blueberry/developer/android_tools/armeabi-4.9这个文件加下
然后我们设置环境变量:
- 1
- 1
后运行source /etc/profile
2、下载编译polarssl
然后我们下载polarssl-1.2.14版本(最好是这个版本)
地址:https://tls.mbed.org/tech-updates/releases/polarssl-1.2.14-released
下载完成之后解压到本地。编译前将include/polarssl/config.h中的
#define POLARSSL_HAVEGE_C
的注释去掉,否则编译librtmp的时候会出现 undefined reference tohavege_random’`错误,这里是因为polarssl默认关闭了havege模块。
3、然后编译:
- 1
- 1
编译好之后,这个库的头文件和库就会存放在 /home/blueberry/developer/android_tools/armeabi-4.9/sysroot
这个目录下了。
4、接下来就是编译librtmp了
如果需要动态库,则执行:
- 1
- 2
- 1
- 2
编译静态库则需要执行:
- 1
- 2
- 1
- 2
上述就是我按着网上的方法所做的。应该没有差错,但事实不尽人意啊!我在编译动态库的时候遇到了这个错误:
- 1
- 2
- 3
- 4
- 5
- 1
- 2
- 3
- 4
- 5
我在网上搜索,说解决这种错误的方法就是加入-shared选项,我搞了半天也没搞成功。
然后我 继续编译静态库结果编译出了librtmp.a但是这个库我在用的时候发现缺少很多函数。
总之,我可能和网上作者使用的库的版本不同,所以会到这些错误。
三、编写Android.mk来编译librtmp
哎、既然上面的方法失败了,就用另一个方法。即使我们来编写Android.mk来编译librtmp
我们需要编写 2个Android.mk文件、1个Application.mk文件
1、Android.mk
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
2、librtmp/Android.mk
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 12
- 13
- 14
- 15
- 16
- 17
- 18
- 19
- 20
- 21
- 22
- 23
- 24
- 25
- 26
- 27
- 28
- 29
- 30
3、新建jni目录,创建Application.mk
jni/Application.mk
- 1
- 2
- 3
- 4
- 5
- 6
- 1
- 2
- 3
- 4
- 5
- 6
4、最后就是使用 ndk-build来编译了。
我们也可以写一个脚本:
build.sh
- 1
- 2
- 1
- 2
5、最后我们执行,
在libs文件下就会有我们编译出的 动态库了。
提示:大家在使用的时候要注意路径。
我编译好的动态库以及mk文件下载地址:http://download.youkuaiyun.com/detail/a992036795/9735901 其中libs下存放的编译好的动态库。大家用的时候只需要将需要用到的头文件和动态库考出就好。
我移植好的额polarssl的静态库即polarssl源码下载地址:http://download.youkuaiyun.com/detail/a992036795/9811299
参考:http://www.07net01.com/2015/07/886927.html
http://hamer-blog.logdown.com/posts/600798