Android VLC 编译总结

时间:2022-06-27 15:54:24

最近在一个项目里需要一个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.