您的位置:首页 > 移动开发 > Android开发

基于Ubuntu14.04 64位系统编译vlc-android源码

2015-03-25 11:55 543 查看
(一)VideoLAN 介绍: 

VideoLAN  是一个开发播放器软件和多种多媒体格式流的非营利基金会组织,其最具有影响力的一个产品就是VLC媒体播放器。

VideoLAN 官方wiki网址:://wiki.videolan.org/AndroidCompile#Get_VLC_Source

(二)编译环境搭建:

(1)建立64-bit  Ubuntu 14.04环境

在window7操作系统下通过VMware Workstation(最好使用VMware Workstation10或更高版本)安装64-bit  Ubuntu 14.04

选择自动安装即可,系统安装完之后会有一些基本的开发及管理工具如:gcc、 g++、 tar、unzip等,开发过程中缺少工具或者版本太旧等软件版本问题后续可以手动安装解决。

(2)JDK、Android SDK、Android NDK、安装

  1)JDK安装

Linux x64 JDK版本下载地址:http://www.oracle.com/technetwork/cn/java/javase/downloads/jdk7-downloads-1880260-zhs.html

我这里下载的是JDK7(建议下载JDK6以上版本)jdk-7u75-linux-x64.gz,在/opt/下创建Java路径,

$sudo  mkdir  /opt/Java

将jdk-7u75-linux-x64.gz拷贝到Java文件夹下之后解压缩即可。

修改用户环境变量:

$ vim ~/.bashrc

 在.bashrc最后面添加如下:

  export JAVA_HOME=/opt/Java/jdk1.7.0_75
 export JRE_HOME=${JAVA_HOME}/jre
 export CLASSPATH=.:${JAVA_HOME}/lib/tools.jar:/lib.dt.jar:${JRE_HOME}/lib

  $sudo update-alternatives --install /usr/bin/java java /opt/Java/jdk1.7.0_75/bin/java 10
  $sudo update-alternatives --install /usr/bin/javac javac /opt/Java/jdk1.7.0_75/bin/javac 10
  $sudo update-alternatives --install /usr/bin/jar jar /opt/Java/jdk1.7.0_75/bin/jar 10
  $sudo update-alternatives --config java
  $sudo update-alternatives --config javac
  $sudo update-alternatives --config jar

  2)安装Android SDK

SDK tools下载地址:http://developer.android.com/sdk/index.html#Other


在google 官网下载最新的 SDK tools 之后解压缩,我这里解压缩到如下路径:

hbing@ubuntu:~/work/android/tools/android-sdk-linux$ ls

add-ons  platforms  SDK Readme.txt  tools

新下载的SDK 除了tools文件夹之外的所有路径都是空的。

为了能够使用sdk的各个platform的platform-tool工具以及android各个版本对应的platforms还有google的support 库我们要在线安装这些工具

hbing@ubuntu:~/work/android/tools/android-sdk-linux$ ./tools/android update sdk -u -t platform,platform-toosl,extra

由于众所周知的原因我们在线安装成功的概率几乎为零。

解决办法:离线安装android5.0.1(API21) 

注:是否需要更高的版本只要查看VLC的源码工程的的build.gradle文件即可,如果此文件中描述的版本较高可以修改此脚本跟编译脚本降低对API的要求,后续编译VLC源码时在说明此问题。

列出SDK中需要的各个工具以及库的下载地址:

(1)Android SDK 主要安装包:sdk tools(如果之前步骤已经可以在官网下载到此处就可以不用在重复下载)

我这里选择下载revision 24.0.2也可以选择下载当前的最新版本
http://dl.google.com/android/android-sdk_r24.0.2-linux.tgz
hbing@ubuntu:~/work/android/tools$tar -xvf android-sdk_r24.0.2-linux.tar

hbing@ubuntu:~/work/android/tools$ ls android-sdk-linux/

add-ons  platforms  SDK Readme.txt  tools

hbing@ubuntu:~/work/android/tools$

以android-sdk-linux/为主要文件夹下载platform-tools工具

下载地址:https://dl-ssl.google.com/android/repository/platform-tools_r22-linux.zip (选择你当前能下载的的最高版本即可不能低于VLC的最低编译要求,否则要修改VLC编译脚本)

解压缩到 android-sdk-linux文件夹的根目录下。

同理下载:build-tools 、platforms 、extras 

build-tools:https://dl-ssl.google.com/android/repository/build-tools_r22-linux.zip

platforms   :https://dl-ssl.google.com/android/repository/android-22_r01.zip

extras         :

1)Android Support Repository(extras/android/m2repository)
https://dl-ssl.google.com/android/repository/android_m2repository_r12.zip
2)Android
Support Library(extras/android/support)
https://dl d409
-ssl.google.com/android/repository/support_r21.0.3.zip

3)Google
Repository(extras/google/m2repository)
https://dl-ssl.google.com/android/repository/google_m2repository_r16.zip
大约需要这些就可以满足编译vlc-android源码的要求。

修改用户环境变量:

$ vim ~/.bashrc

在文件末尾添加

export ANDROID_SDK=/home/hbing/work/android/tools/adt-bundle-linux-x86_64/sdk


3)安装Android NDK

NDK下载地址:http://developer.android.com/tools/sdk/ndk/index.html

在google 官网下载最新版本

Linux 64-bit (x86)android-ndk-r10d-linux-x86_64.bin
的NDK之后解压缩,我这里解压缩到如下路径:

ndk$ chmod a+x android-ndk-r10d-linux-x86_64.bin
ndk$ ./android-ndk-r10d-linux-x86_64.bin


hbing@ubuntu:~/work/android/tools/android-ndk-r10d$ ls

build  GNUmakefile  ndk-depends  ndk-gdb.py   ndk-which  README.TXT   samples  toolchains

docs   ndk-build   ndk-gdb   ndk-gdb-py.cmd  platforms  RELEASE.TXT    sources

find-win-host.cmd  ndk-build.cmd  ndk-gdb-py   ndk-stack     prebuilt   remove-windows-symlink.sh  tests

hbing@ubuntu:~/work/android/tools/android-ndk-r10d$ 

修改用户环境变量:
$
vim ~/.bashrc

在文件末尾添加
export ANDROID_NDK=/home/hbing/work/android/tools/android-ndk-r10d

export PATH=$PATH:${ANDROID_NDK}:${JAVA_HOME}/bin:$ANDROID_SDK/platform-tools:$ANDROID_SDK/tools
4)验证软件安装情况:

由于是X86_64平台所以此时的adb等工具不能使用,需要安装以下工具

安装必要的软件包: ( 64-bit  Ubuntu 14.04)

$ sudo apt-get install bison g++-multilib git gperf libxml2-utils make zlib1g-dev:i386 zip

然后执行

$ sudo source ~/.bashrc

进行测试:

$ java -version

java version "1.7.0_75"

OpenJDK Runtime Environment (IcedTea 2.5.4) (7u75-2.5.4-1~trusty1)

OpenJDK 64-Bit Server VM (build 24.75-b04, mixed mode)
$ ndk-build --help

Usage: make [options] [target] ...

Options:

……

$adb --help

Android Debug Bridge version 1.0.32

……

编译环境搭建完成。

(三)编译vlc-android源码

(1) 安装编译工具

apache-ant (or ant), autoconf, automake, autopoint, cmake, gawk (or nawk), gcc, g++, libtool, m4, patch, pkg-config, protobuf, ragel, subversion, unzip

注:安装上面所列工具,最好安装上述工具的最新版本,如果上述的软件版本过低在编译过程中会提示版本较低的工具不能被识别或者找不到等错误提示,此时只需要将这些版本过低的工具卸载掉安装最新版本即可。

(2)下载vlc源码


git clone git://git.videolan.org/vlc-ports/android.git



下载完源码之后的目录结构如下:


$ ls android/

android-headers  assets        compile-libvlc.sh  COPYING  java-libs  NEWS             vlc-android

android-libs     build.gradle  compile.sh         gdb.sh   libvlc     settings.gradle


(2)编译(Compile)

sh compile.sh -a <ABI>


可以通过--help命令来查看支持的平台参数如下:
$ sh compile.sh --help

Use -a to set the ARCH:

  ARM:     armeabi-v7a, armeabi, armeabi-v5, armeabi-nofpu

  ARM64:   arm64-v8a

  X86:     x86, x86_64

  MIPS:    mips, mips64.

Use --release to build in release mode

Use -s to set your keystore file and -p for the password

Use -t to get an AndroidTv build

Use -c to get a ChromeOS build

hbing@ubuntu:~/work/android/project/vlc-android/android$ 

如果我们执行:


$sh compile.sh

不加 -a 选项默认编译的平台为ARMv7

如果想编译x86_64平台则执行如下命令:


$sh compile.sh -a x86_64

我们这里编译ARMv7所以执行如下:


$sh compile.sh

编译过程中会下载N多个工具包跟第三方库,如果提示编译错误大多是由于下载这些库超时或者未能下载成功导致。
解决办法:离线下载这些第三方库如:编译过程中需要下载protobuf-2.6.0.tar.bz2未能成功可以事先下载好此包将其拷贝到源码目录如下的两个路径中即可即:
./vlc/extras/tools/protobuf-2.6.0.tar.bz2  
./vlc/contrib/tarballs/protobuf-2.6.0.tar.bz2 
1)编译依赖的第三方库
编译过程中大约需要下面的这些软件包:



我将这些软件包上传到百度云,下载地址:http://pan.baidu.com/s/10Kd4q
解压缩tarballs.tar.bz2之后将其中的软件包放到/vlc-root-dir/android/vlc/contrib/tarballs 目录下面即可接着进行编译:
2)编译出错处理
当出现如下提示表示编译成功完成:



其中vlc-android目录为vlc的android客户端APP源码工程目录,可以将其导入eclipse中进行修改。
$ ls vlc-android/

AndroidManifest.xml  assets  build  build.gradle  proguard.cfg  project.properties  res  src  tv

hbing@ubuntu:~/work/android/project/vlc-android/android-arm/android$ 

生成的APK在此工程的build/outputs/apk/目录下面
$ ls build/outputs/apk/

VLC-Android-1.1.6-ARMv7.apk  vlc-android-vanilla-ARMv7-debug-unaligned.apk

此版本是debug版本,如果想要编译release版本只需要在编译的时候指定一个release参数即可。

$sh compile.sh release

至此vlc-android源码编译基本完成!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息