本文介绍ubuntu下android-vlc编译的过程,主要记录了编译过程中碰的到问题及解决方案,如果可以为其他人编译vlc提供帮助,将是我的荣幸。
一 编译环境搭建:
1.下载配置NDK环境:
使用版本android-ndk-r9
下载地址:http://www.126disk.com/fileview_1441036.html
2.下载配置SDK环境:
使用版本:adt-bundle-linux-x86-20140702.zip
将压缩包解压到/opt目录下就可以。
3.安装JDK环境
使用版本:jdk1.7.0_71
安装至/opt目录下
4.设置NDK,SDK,JDK环境变量
编辑环境变量设置脚本:vim env.sh
#!/bin/sh
export JAVA_HOME=/opt/jdk1.7.0_71
export JRE_HOME=/opt/jdk1.7.0_71/jre
export CLASSPATH=.:$CLASSPATH:$JAVA_HOME/lib:$JAVA_HOME/jre/lib
export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$PATH:$HOME/bin:$ANT_HOME
export NO_NEON=1
export ANDROID_SDK=/opt/adt-bundle-linux-x86-20140702/sdk
export ANDROID_NDK=/opt/android-ndk-r9
export PATH=$PATH:$ANDROID_SDK/platform-tools:$ANDROID_SDK/tools
export ANDROID_ABI=armeabi-v7a
编辑完成后,设置变量:source env.sh
二 编译前需要下载安装的工具:
0.安装编译vlc依赖的其他库:
$ sudo apt-get build-dep vlc
1.下载安装 git 工具:
# apt-get install git
2.下载安装 ant工具:
# apt-get install ant
注:此处下载安装ant 会一并下载安装 openJDK,但不影响编译。
3.下载安装一下工具:
# apt-get install wget
# apt-get install autoconf
# apt-get install libtool
# apt-get install subversion
# apt-get install xfig
# apt-get install texinfo
有些版本可能需要安装automake-1.13,aclocal-1.13版本,直接将automake-1.13链接到automake也可以
ln -s automake automake-1.13
三 编译vlc-android
1. 新建一个编译目录
mkdir ~/vlc-android
cd ~/vlc-android
2. 下载源代码
git clone git://git.videolan.org/vlc-ports/android.git
3.开始编译
sh compile.sh
下面开始比较长时间的编译,因为需要下载和安装vlc源码和第三方的软件,比如音视频解码ffmpeg等
4.可能出现的编译错误
下载第三方软件可能出现超时等下载失败,这时会中断编译,最好是失败后,将失败时显示的下载地址输入浏览器,用浏览器下载后,拷贝到目录~/vlc-android/android/vlc/contrib/tarballs
5.编译完成
看到如下信息就表示编译完成了
debug:
BUILD SUCCESSFUL
Total time: 1 minute 3 seconds
我是使用的VLC代码工程:
链接:http://pan.baidu.com/s/1mgolVCW 密码:2bk3
附录:
编译过程中可能还会遇到的问题
1) libtool错误
因为vlc编译的许多工具都是自行下载后编译,因此出现libtool提示错误,可能是由于没有安装libtool,注意这不是说系统没有安装,而是下载后安装的libtool没有将库文件拷贝安装到vlc指定的目录,导致编译时没有找到相关的环境。出现此类错误,需要下载
libtool压缩包,版本号从~/vlc-android/vlc/extras/tools/packages.mak中查找,用浏览器下载到此目录,然后解压缩后编译
cd libtool-2.4.2
./bootstrap
./configure
make & make install
这样编译后只是安装到了系统的目录下,并没有安装到vlc指定目录下,因此需要将安装在系统目录下的文件拷贝到~/vlc-android/vlc/extras/tools/build/目录下
如下:
david@ubuntu:~/vlc-android/vlc/extras/tools/build$ tree -d
.
|-- bin
|-- doc
| `-- cmake-2.8
| |-- cmcompress
| |-- cmcurl
| |-- cmexpat
| |-- cmlibarchive
| |-- cmsys
| `-- cmzlib
|-- include
| |-- google
| | `-- protobuf
| | |-- compiler
| | | |-- cpp
| | | |-- java
| | | `-- python
| | |-- io
| | `-- stubs
| `-- libyasm
|-- lib
| `-- pkgconfig
|-- man
| `-- man1
`-- share
|-- aclocal
| `-- internal
|-- aclocal-1.14
| `-- internal
|-- autoconf
| |-- Autom4te
| |-- autoconf
| |-- autoscan
| |-- autotest
| `-- m4sugar
|-- automake-1.14
| |-- Automake
| `-- am
|-- cmake-2.8
| |-- Modules
| | |-- CMakeAddFortranSubdirectory
| | |-- Compiler
| | |-- CompilerId
| | |-- FindCUDA
| | |-- FortranCInterface
| | | `-- Verify
| | |-- IntelVSImplicitPath
| | `-- Platform
| |-- Templates
| |-- completions
| |-- editors
| | |-- emacs
| | `-- vim
| `-- include
|-- doc
| |-- automake
| |-- pkg-config
| `-- ragel
|-- info
|-- libtool
| |-- config
| `-- libltdl
| |-- libltdl
| `-- loaders
`-- man
|-- man1
`-- man7
67 directories
david@ubuntu:~/vlc/android/vlc/extras/tools/build$
2) BUILD FAILED
/opt/adt-bundle-linux-x86-20140702/sdk/tools/ant/build.xml:542: Unable to resolve project target 'android-19'
碰到这个问题,其实很简单,是因为SDK没有安装相应的API版本
进入/opt/adt-bundle-linux-x86-20140702/sdk/tools,运行sudo ./android
注意:一定要sudo,否则没有权限安装
选择需要安装的版本号,可以从~/vlc-android/vlc-android/project.properties中查看target=android-19
安装完成后,重新sh compile.sh就可以了
3)编译mpg123
编译vlc/modules/codec/mpg123.c最后发生链接错误,mpg123_close等函数链接失败
如果暂时不用mpg123编码,将链接失败的地方都注释后编译就可以了。