【Android RTMP】RTMPDumb 源码导入 Android Studio ( 交叉编译 | 配置 CMakeList.txt 构建脚本 )(二)

五、 RTMPDump 源码导入 Android Studio


1 . 将源码导入 Android Studio 项目 : 这里不使用导入上上述函数库的方式 , 而是直接将源码导入 AS 项目中 ;



① 拷贝源码 : RTMPDump 的源码在 rtmpdump-2.3/librtmp 目录中 , 将 rtmpdump-2.3/librtmp 目录中的文件拷贝到 Android Studio 中即可;


② Android Studio 中直接添加源码注意点 : 这里注意 , 不是所有的开源库源码都可以导入到 Android Studio 项目中的 , 开源库源码不能太大 , 如 FFMPEG , 在 Ubuntu 上编译一次很长时间 , 如果将 FFMPEG 源码放在 AS 工程中 , 估计编译一次半小时起步了 , 因此之前的博客中 , 将 FFMPEG 交叉编译成 静态库 , 然后导入到 AS 项目中 ;


③ 文件展示 : 下面截图中是该目录的文件 , 直接将 rtmpdump-2.3/librtmp 整个目录拷贝到 Android Studio 项目中 ;


【Android RTMP】RTMPDumb 源码导入 Android Studio ( 交叉编译 | 配置 CMakeList.txt 构建脚本 )(二)

2 . 拷贝后的 Android Studio 工程 : rtmpdump-2.3/librtmp 拷贝到 src/main/cpp 目录下 ;

【Android RTMP】RTMPDumb 源码导入 Android Studio ( 交叉编译 | 配置 CMakeList.txt 构建脚本 )(二)







六、 Android Studio 配置 RTMPDump 源码 CMakeList.txt


1 . 配置 RTMPDump 源码独立构建脚本 : 导入的 RTMPDump 是一个完整的项目 , 因此这里为 src/main/cpp/librtmp/ 下的 RTMPDump 源码单独配置一个 CMakeList.txt 构建脚本 ;


cmake_minimum_required(VERSION 3.4.1)
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -DNO_CRYPTO")
add_library( # 编译的库的名称是 rtmp
             rtmp
             # 编译的 rtmp 库是静态库
             STATIC
             # rtmp 库的源文件
             amf.c
             hashswf.c
             log.c
             parseurl.c
             rtmp.c )


2 . 配置 整体的 CMakeList.txt 构建脚本 :


cmake_minimum_required(VERSION 3.4.1)
# 链接 src/main/cpp/librtmp 目录下的构建脚本
add_subdirectory(librtmp)
add_library( # 函数库名称
             native-lib
             # 动态库类型
             SHARED
             # 源文件
             native-lib.cpp )
find_library( # 日志库
              log-lib
              log )
target_link_libraries( # 链接动态库
                       native-lib
                       # 编译的 rtmp 静态库
                       rtmp
                       ${log-lib} )





七、 关闭 RTMP 加密功能


1 . 编译时遇到 fatal error: ‘openssl/ssl.h’ file not found 处理方案 : 点击查看源码 , 发现没有导入 openssl 库 , 宏定义最终进入该分支 , 需要使用 openssl 库 , 现在定义宏定义 , 使当前的宏定义不进入该分支 ;


【Android RTMP】RTMPDumb 源码导入 Android Studio ( 交叉编译 | 配置 CMakeList.txt 构建脚本 )(二)




2 . 关闭 RTMP 加密方法 : 在 rtmp.h 文件中有以下宏定义 , 如果没有定义 NO_CRYPTO 和 CRYPTO 宏 , 就会定义 CRYPTO 宏 , 这里我们定义 NO_CRYPTO 宏 , 即设置不加密 , 就可以屏蔽 openssl 头文件加载了 ;


#if !defined(NO_CRYPTO) && !defined(CRYPTO)
#define CRYPTO
#endif




3 . 屏蔽整个 CRYPTO 宏定义分支 : 即不定义 CRYPTO 宏 , 不进入整个分支 , 在 CMakeList.txt 中定义


# 取消宏定义
set(CMAKE_C_FLAGS "${CMAKE_C_FLAGS} -DNO_CRYPTO")




4 . 编译选项设置 : 只要源文件中存在 cpp 文件 , 就必须使用 CMAKE_CXX_FLAGS , 如果源文件都是 c 文件 , 可以使用 CMAKE_C_FLAGS , 这里 RTMPDump 的源文件都是 C 文件 , 使用 CMAKE_C_FLAGS ;



上一篇:【Android开发】Bundle和Intent实例1-实现根据身高计算标准体重


下一篇:hadoop1.1.2+hbase0.92.2+nutch2.2.1+solr4.6.1配置全记录