ubuntu 14编译VCL for Android

我们在开发播放在线流媒体或者静态文件时(比如播放我们树莓派摄像头的视频流),我们需要有播放器的支持,所以我们选择这款著名的开源播放器项目VLC。

VCL的开源代码从gitlab中可以下载下来,所以我们围绕着VCL 1.7.5 for Android版为基础,从Android的环境的安装(涉及到openjdk,Android sdk,Android ndk的安装,如果你已经安装了这些环境可以直接跳过)到vcl的apk编译。vcl的项目已经迁移到Android studio上,可以借由gradle进行编译,若我们成功编译出vcl项目,那么我们也可以借由这个项目迁移到我们自己的项目中。

1、编译前准备

首先我们需要准备系统,在本文中我选择Ubuntu 14来进行vlc项目的编译(官方要求必须是在linux下编译)(包括一些环境变量和ndk的安装都与linux有所不同)

首先先更新系统与内核

sudo apt-get update

更新完内核以后,安装我们所需要的一些软件,包括gcc(编译环境),git(用来克隆vcl项目)等

在安装前也要注意gettext的版本必须大于0.19.3

sudo apt-get install automake ant autopoint cmake build-essential libtool patch pkg-config protobuf-compiler ragel subversion unzip git

ubuntu ppa下载地址

*2、安装环境
2.1、安装gcc4.9
因为Ubuntu默认的服务器ppa只到gcc4.8所以在编译最新的vlc时会报很多错误,所以在之前需要编译安装gcc4.9。

wget https://launchpad.net/ubuntu/+archive/primary/+files/gcc-4.9_4.9.3.orig.tar.gz

然后解压在本地

#压缩包含有gcc与gdc,所以需要cd进去再解压gcc
gunzip -c gcc-4.9_4.9.3.orig.tar.gz|tar xvf -
cd gcc-4.9_4.9.3.orig

安装gcc依赖

sudo apt-get install flex bison build-essential 
# 如果要支持multilib(即使编译出来的gcc可以编译32位和64位的程序),需要安装下面的依赖
sudo apt-get install gcc-multilib
#如果你现用的gcc编译器不是Ubuntu 12.04源里的4.6版本,比如我使用的是ppa里的4.8版本,上面的命令需要改成
sudo apt-get install gcc-4.8-multilib
# 在gcc源代码的根目录执行下面的命令,这会下载gmp, mpfr, mpc,并装它们的编译集成到GCC的编译过程中
./contrib/download_prerequisites 

建立一个编译目录

mkdir build
cd build

配置安装

../configure --program-suffix=-4.9 --enable-languages=c,c++ --enable-multilib --build=x86_64-linux-gnu --enable-checking=release
make -j4
sudo make install 

安装gettext_0.19.6.0

首先,检查gettext的版本是否大于0.19.6.0

#如果版本大于0.19.6.0则跳过此步
gettext --version

下载包

wget https://launchpad.net/ubuntu/+archive/primary/+files/gettext_0.19.6.orig.tar.xz
gunzip -c gettext_0.19.6.orig.tar.xz|tar xvf -
cd gettext_0.19.6.orig

配置安装

./configure
make
sudo make install

2.2、安装openjdk

因为Android是以java为基础开发的,所以我们在使用Android之前需要安装jdk,这里我们采用的是jdk的开源版本openjdk-8。

因为现在Ubuntu14依赖安装最高版本只支持到openjdk7,所以我们在依赖安装之前首先要更新openjdk的下载源。

sudo add-apt-repository ppa:openjdk-r/ppa

更新完下载源以后,我们就可以依赖安装openjdk了

#更新完源以后更新一下系统,让源获取最新的软件列表
sudo apt-get update
sudo apt-get install openjdk-8-jdk

切换jdk版本(若你安装的系统内不包含jdk则可以跳过此步),因为在安装系统时,Ubuntu会默认安装openjdk7,所以现在我们的系统内包含两个jdk,但系统环境变量还指向老版的jdk,所以我们需要更新环境变量。

#将java与javac切换到最新的版本
sudo update-alternatives --config java
sudo update-alternatives --config javac

最后检查一下java的版本是否指向了所安装的openjdk8

java -version

2.3、安装Android SDK/NDK
谷歌官方SDK下载页或者其他渠道下载到最新的SDK Manager或者也可以下载Android studio协同安装并下载Android。

谷歌官方NDK下载页下载对应系统相应的NDK版本的二进制包(必须是NDK r10e及以上版本,否则运行脚本时会报NDK版本过低的错误)。

chmod a+x ndk_r10e.bin
#注意,直接运行会解压在当前文件夹下
./ndk_r10e.bin

最后,添加SDK及NDK的环境变量。

nano ~/.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

2.4、git克隆VCL-Android

通过gitlab下载到VCL-Android的库

git clone https://code.videolan.org/videolan/vlc-android.git
cd vlc-android

此时若直接运行compile.sh会直接克隆vlc的库,并下载相应的contrib,但有一些库的源码无法在国内下到,需要自行去找,所以我在云盘中共享了vlc 2.2.0的源码以及所有所需的tools包及contrib包,将文件解压后把文件夹复制到vlc-android下即可

360云盘分享地址 https://yunpan.cn/crxqDsc2bKbAS 访问密码 1516

然后直接运行

#DEBUG版
sh compile.sh
#发行版
sh compile.sh release
#指定ABI(ABI默认为armeabi-v7a)
sh compile.sh -a <ABI>

最后贴出官方wiki,若有更新以官方wiki为准。
官方wiki页面

2.5、用Android studio加载项目
用Android studio直接打开vlc-android目录即可。

注意,有的时候我们可能需要移动vlc-android目录
但这时候有可能会报下面这样的错误../../src/extras/libc.c:37:22: fatal error: iconv.h: No such file or directory,那是因为在一开始的生成的gradle和生成的MakeFile写死了之前的目录,这时需要如下操作:

#删除vlc的编译生成文件
rm -rf ~/android-vlc/vlc/build-android-arm-linux-androideabi
#清除make信息
cd ~/vlc-android/vlc/contrib/contrib-android-arm-linux-androideab
make clean
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值