vlc-for-android 编译指南官方网址:https://wiki.videolan.org/AndroidCompile
编译过程中要严格按照官网上的操作步骤来,下面我结合自己的实际操作来总结一下,在 Ubuntu14.04 环境下,从安装 jdk 到最终成功编译 vlc-for-android 的整个过程。
1.下载安装 jdk1.7
Jdk1.7下载官方网址:
http://www.oracle.com/technetwork/java/javase/downloads/index.html
解压下载好的文件:
$ sudo tar -zxvf jdk-7u79-linux-x64.tar.gz
设置环境变量:
$ sudo gedit /etc/profile
在文档结尾追加:
export JAVA_HOME=/home/lion/storm/jdk1.7/jdk1.7.0_79
export PATH=$JAVA_HOME/bin:$JAVA_HOME/jre/bin:$ANDROID_NDK:$PATH
export CLASSPATH=$CLASSPATH:.:$JAVA_HOME/lib:$JAVA_HOME/jre/lib
设置完成后执行:source /etc/profile 重新加载环境变量
将系统默认的java修改过来:
$ sudo update-alternatives --install /usr/bin/javajava/home/lion/storm/jdk1.7/jdk1.7.0_79/bin/java 300
$ sudo update-alternatives --install /usr/bin/javacjavac/home/lion/storm/jdk1.7/jdk1.7.0_79/bin/javac 300
$ sudo update-alternatives --config java
$ sudo update-alternatives --config javac
设置完成,检测一下有没有问题,在命令行输入:
$ java -version
如果命令行显示以下内容,则说明安装配置成功:
java version "1.7.0_79"
Java(TM) SE Runtime Environment (build 1.7.0_79-b15)
Java HotSpot(TM) 64-Bit Server VM (build 24.79-b02, mixed mode)
2.下载安装 android studio
下载完成后,解压:$ sudo unzip android-studio-ide-141.1890965-linux.zip
(解压后文件夹名为android-studio)
然后进入 android-studio/bin/ 目录,执行 sudo ./studio.sh 就可以打开 android studio 了。
3.下载安装 NDK
官方地址:https://developer.android.com/tools/sdk/ndk/index.html
最新版本为 android-ndk-r10b-linux-x86_64.bin
安装好后,配置NDK环境变量
root@ubuntu:~#sudo gedit /etc/profile
在该文件最后面添加(注意自己安装的目录,对应更改就行了)
export ANDROID_NDK=/home/lion/storm/android-dev/android-ndk-r10e/android-ndk-r10e
export PATH=$PATH:$ANDROID_SDK/platform-tools:$ANDROID_SDK/tools:$ANDROID_NDK
然后保存退出,执行 source 命令重新加载环境变量:
source /etc/profile
测试 NDK 编译
进入 NDK 安装目录下 samples/hello-jni,在该目录下执行 ndk-build,如果安装配置没问题,那么会打印出如下信息:
... ...
[armeabi] Install : libhello-jni.so => libs/armeabi/libhello-jni.so
[x86] Install : libhello-jni.so => libs/x86/libhello-jni.so
[mips] Install : libhello-jni.so => libs/mips/libhello-jni.so
4.安装一些工具:
sudo apt-get install autoconf automake ant autopoint cmake build-essential libtool m4 patch pkg-config protobuf-compiler ragel subversion unzip git
注意:
(1)如果你要给 Android-x86 设备编译 vlc,那你还要安装 yasm;
(2)对于 64 位系统:还要安装下面这些 32-bit 的 libraries,因为预编译过程需要它们
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
5.clone vlc 源码
进入 android sdk 的根目录(注意是 sdk 的根目录,不是 sources 目录哦,不要以为要 clone 源码,所以要到 sources 下进行),执行以下命令抓取 vlc 源码
git clone git://git.videolan.org/vlc-ports/android.git
这个下载过程可能会花较时间。等到下载完成后,进入 android 目录(下载完成后,会在 sdk 的根目录下生成一个 android 文件夹,下载下来的东西都在里面),执行编译命令 sh ./compile.sh 就可以开始整个编译过程了。编译成功后,会生成相应的 .so 文件及 apk 文件。
6.编译问题
在编译的过程中,可能会出现一些错误,如果配置正确的话,不会出现那么多错误的。要是你编译的过程出频频出错,那么就要注意一下你的配置问题了。下面列出最常见的错误:
(1)
$ sh compile.sh
*** 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 fileis not
a zipfile, or it constitutes one disk of a multi-part archive. In the
latter casethe central directory and zipfile comment will be found on
the last disk(s) of this archive.
unzip: cannot findzipfile directory inone of gradle-2.2.1-all.zip or
gradle-2.2.1-all.zip.zip, and cannot findgradle-2.2.1-all.zip.ZIP, period.
修改 compile.sh at Line 81(把 81 行换成下面两句)
wget ${GRADLE_URL} 2>/dev/null || curl -O ${GRADLE_URL}
=>wget ${GRADLE_URL} 2>/dev/null || curl -O -L ${GRADLE_URL}
(2)安装的过程中,编译器会自动下载一些依赖文件,有些文件是 google 上的,下载不了(一般情况下,只有 openjpeg 和 protobuf 的下载会有问题)。这些依赖文件通常都是要放到 ../vlc/contrib/tarballs 目录下的,你要自己翻墙下载,然后放到这个目录下,再执行 sh ./compile.sh 就行了。
最后附上编译成功截图
ubuntu 15.04编译Android-VLC:http://www.linuxdiyf.com/linux/13289.html
Ubuntu Kylin编译vlc:http://www.linuxdiyf.com/linux/14380.html
linux下使用Git下载代码、编译VLC步骤:http://www.linuxdiyf.com/linux/13918.html
Ubuntu下编译VLC 2.0.1:http://www.linuxdiyf.com/linux/3004.html
在Ubuntu 14.10上安装VLC播放器:http://www.linuxdiyf.com/linux/6986.html