最近在一个项目里需要一个Android APP能够同时播放多路流媒体视频,还需要具有录像、截屏功能。在调研多个方案之后,选择移植VLC播放器。需要在Linux(本人使用Ubuntu 14。10)下编译VLC for Android的源码,根据官方的Wiki,以及自己实际操作的步骤,总结为如下:
需要注意的是编译的过程都是普通用户权限,不需要root权限。
1. 安装工具
sudo apt-get install gcc g++ ant autoconf automake autopoint cmake gawk libtool m4 patch pkg-config protobuf-c* ragel subversion unzip
在64位系统上还需要安装一些32位的库
sudo dpkg --add-architecture i386
sudo apt-get update
sudo apt-get install zlib1g:i386 libstdc++6:i386 libc6:i386
在一些旧的Ubuntu系统上,还需要安装ia32-libs
sudo apt-get install ia32-libs
2. 安装vlc相关依赖库
sudo apt-get build-dep vlc
3. 安装android sdk 和 ndk
SDK下载地址: http://developer.android.com/sdk/index.html
NDK下载地址: http://developer.android.com/tools/sdk/ndk/index.html
如果下载速度慢的话,也可以选择国内的镜像,比如:(http://mirrors.neusoft.edu.cn/android/repository/)
3,1 下载安装完场后,需要添加环境变量
//编辑文件 ~/.bashrc 或者 /etc/profile
//在文件尾部添加以下三句话
export ANDROID_SDK=/path/to/android-sdk
export ANDROID_NDK=/path/to/android-ndk
export PATH=$PATH:$ANDROID_SDK/platform-tools:$ANDROID_SDK/tools
//然后通过以下命令是环境变量生效
source ~/.bashrc
或者 source /etc/profile
3.2 更新SDK
在后续编译apk时需要合适版本的sdk,因此在环境变量生效后要跟新sdk,在终端执行命令
android
启动android sdk manager 下载相应版本的sdk,我编译时下载的是SDK 20版本。
4. 获取VLC Android源码
git clone git://git.videolan.org/vlc-ports/android.git
设置编译的平台,一般手机都是armeabi-v7a平台。
export ANDROID_ABI=armeabi-v7a
开始编译
sh compile.sh
执行该命令后就开始下载一些第三方源码和工具。有些库的网址是访问不了的,自己想办法下好了放进“vlc/contrib/tarballs”目录里,然后重新执行编译命令即可。
为了方便大家,我将自己下载的第三方库上传到了百度云,大家如果网络不好可以直接放到vlc/contrib/tarballs文件夹下。这样大大加快编译速度。下载地址http://pan.baidu.com/s/1bnhTzZ5
4. 编译过程中遇到的问题解决
64位ubuntu运行adt缺少libstdc++.so.6和libz.so.1文件
错误1:
adb: error while loading shared libraries: libstdc++.so.6: cannot open shared object file: No such file or directory
‘adb version’ failed!
Failed to parse the output of ‘adb version’:
解决方法:
sudo apt-get install lib32stdc++6
错误2:
adt-bundle-linux-x86_64-20140702/sdk/build-tools/android-4.4W/aapt: error while loading shared libraries: libz.so.1: cannot open shared object file: No such file or directory
解决方法:
sudo apt-get install lib32z1
下载gradle出错
编译vlc for android的时候,出现如下错误:
*** No ANDROID_ABI defined architecture: using ARMv7
Downloading gradle
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
100 354 100 354 0 0 455 0 --:--:-- --:--:-- --:--:-- 455
Archive: gradle-2.2.1-all.zip
End-of-central-directory signature not found. Either this file is not
a zipfile, or it constitutes one disk of a multi-part archive. In the
latter case the central directory and zipfile comment will be found on
the last disk(s) of this archive.
unzip: cannot find zipfile directory in one of gradle-2.2.1-all.zip or
gradle-2.2.1-all.zip.zip, and cannot find gradle-2.2.1-all.zip.ZIP, period.
解决办法修改 compile.sh at Line 81:
wget ${GRADLE_URL} 2>/dev/null || curl -O ${GRADLE_URL}
=>wget ${GRADLE_URL} 2>/dev/null || curl -O -L ${GRADLE_URL}
gettext的版本过低问题
//下载 gettext-0.16.1.tar.gz 然后执行解压,执行下属命令安装。
./configure
make
make install
can solve this problem.
版权声明:本文为博主原创文章,未经博主允许不得转载。