前言
作为菜鸟到公司的第一天,boss 就让我熟悉下 VLC 的内容,然后总共是第五天才编译出了 VLC 最新的 lib 类库和 demo 工程的 apk。之所以标题为 "从零开始",是由于刚接触 Linux、shell 命令没多久,就要在 Linux 下进行 VLC-Android 的交叉编译,尽管只是执行官方的编译脚本,但是新手上路遇到的问题一个接一个。导致五天才编译成功的另外一个原因是,混淆了官方最新代码与公司给的旧版本,所以出现一堆环境配置问题。五天来相当的煎熬,好在前辈们不吝赐教,我也由此对 Linux 和 shell 更熟悉了一些,到公司实干还是最锻炼人的。
本文以我作为菜鸟的角度来介绍从零开始,到编译出 VLC 类库和 APK 的整个过程,所以也会比较啰嗦。
介绍 VLC 介绍
VLC 是一个免费开源的跨平台多媒体播放器和框架,可以播放众多的多媒体文件,DVD、CD、VCD 和各种流协议。VLC 使用 C 语言开发,可跨平台编译为其他系统所用;VLC-Android 是将 VLC 编译为 Android 可调用类库(*.so)的工程。官网建议在 Linux 下进行编译,由于依赖的工具包很多,并且 VLC 编译脚本对工具包版本、代码版本都有严格的 hash 校验,再加上官方说明并不是很照顾新手,所以出现了很多配置问题。
VLC 官网:http://www.videolan.org
VLC 源码:http://www.videolan.org/vlc/download-sources.html
VLC 依赖:ftp://ftp.videolan.org/pub/contrib/ 或 http://download.videolan.org/pub/contrib/
VLC 框架介绍:http://www.codeweblog.com/the-architecture-of-vlc-media-framework/
VLC-Android 编译官方文档:https://wiki.videolan.org/AndroidCompile/
编译前注意事项
编译 VLC-Android 的整体流程基本上按照官方文档进行,但是还是会遇到很多问题只有在编译过程中边查边做才知道是怎么回事。
首先,VLC-Android 官网只推荐在 Linux 系统上进行编译,因此需要安装 Linux 系统或者虚拟机。
第二,既然是编译 Android 程序,自然需要安装 Android SDK(而 Android SDK 又要求安装 JDK);另外,为了使用许多由 C/C++ 语言编写的第三方库,需要安装 Android NDK。
第三,整个编译过程通过 shell 脚本进行,因此需要对 shell 命令有一定的了解,能够使用常见的 shell 命令,能通读脚本,也才容易定位编译出错所在。
第四,编译过程中,脚本会通过 git 来从官网获得代码,用 curl 从 VLC 官网或工具包官网下载大量依赖包,依赖包体积不大,但资源基本都是海外网站,因此如果想通过脚本直接完成编译,你必须要会翻墙(使用 VPN)。然而我买了付费 VPN 翻了墙,下载速度还是很慢。所以,还是要会分析脚本知道脚本在做什么,比如从哪个链接下载什么包放到哪里,这样就可以通过迅雷等工具从其他地方下载依赖包后放到指定文件夹。我五天的编译时间基本都是耗在下载包以及关于依赖包的错误上。只要这些依赖包全部正确,通过脚本编译只是时间问题。
第五,
理想情况下执行脚本即可完成编译,但是国内的脚本其中会调用大量的 api 或 makefile,要会定位出错的位置。
第五,
编译大致流程
编译前:
1. Ubuntu 下安装 JDK、SDK、NDK
2. 安装 git 等工具包以及 automake 等编译工具包
3. 各类环境变量的配置
4. 使用 git 下载 vlc-android 代码
5. 开始编译
开始编译:
vlc-android 只是编译 android apk 所需环境的代码,其中的 compile.sh 脚本是主程序,整个脚本运行完毕会生成 vlc 播放器的 apk。该脚本中会下载 vlc 源码,并执行另外一个脚本 compile-libvlc.sh 对 vlc 源码进行 *.so 类库的编译。如果只需 vlc 类库,可只执行 compile-libvlc.sh。这两个脚本是整个编译过程的主要脚本,通读这两个脚本会对编译过程有很大帮助。
亲身体会!切忌用 "不同版本"vlc-android 的脚本编译 "不同版本" 的 vlc 代码,因为依赖的包不一样。我就因为用官网最新的 vlc-android 与其中的脚本编译公司给我的较老版本,出现了很多问题。
基础知识
对后文中多次用到的 shell 命令,和一些操作方法进行统一的介绍。
1、安装 / 卸载等需要权限的命令前可以加
- sudo表示最大权限
- 2、解压(tar.gz与zip两种压缩包)
- sudo tar zxvf ./xxx.tar.gzunzip xxx.zip
- 3、联网安装Ubuntu程序
- sudo apt-get install xxx
- 4、修改环境变量
- 打开配置文件~/.bashrc
- gedit ~/.bashrc
- 在文件末尾输入环境变量,如:
- export JAVA_HOME = /home/wkw / sdk / jdk1.8.0_121export PATH = $PATH: $JAVA_HOME / bin: $JRE_HOME / binexport CLASSPATH = .: $JAVA_HOME / lib / dt.jar: $JAVA_HOME / lib / tools.jar //(注意,不使用export也可以正确配置,使用export后设置的环境变量可以在其他shell脚本中通过$JAVA_HOME访问,这在编译脚本中会用到)
- 保存~/.bashrc,退出gedit。
- 重开一个终端即可使环境变量生效,或者在终端中输入以下命令刷新环境变量:
- source ~/.bashrc
- Ubuntu编译环境
- 编译环境:Windows 10-64bit 下虚拟机装的 Ubuntu 16.04LTS-64bit
- 编译版本:VLC-2.2.4
- 安装工具包
- 以下是官方文档提供的示例安装命令,实际操作中建议一个一个安装,以便知道安装结果。
- sudo apt-get install automake ant autopoint cmake build-essential libtool patch pkg-config protobuf-compiler ragel subversion unzip git
- 以下包依赖其他包,ubuntu会自动一起下载安装;部分包Ubuntu16.04已自带(可更新):
就爱阅读 www.92to.com 网友整理上传, 为您提供最全的知识大全, 期待您的分享,转载请注明出处。
来源: http://www.92to.com/bangong/2017/03-01/17877612.html