首页 > 代码库 > Linux下编译VLC for Android源代码总结

Linux下编译VLC for Android源代码总结

转:http://blog.chinaunix.net/uid-26611383-id-3678766.html

由于项目需要,需要一个在android平台能够支持RTSP协议的播放器,由于之前没有android平台的经验,所以找了著名的video LAN的VLC播放器,更令人惊奇的是这款播放器居然还是完全开源的。在此向那些开源软件的作者和组织致以崇高的敬意,是你们的存在使得计算机软件产业蓬勃发展,你们帮助了很多囊中羞涩的个人和企业,让他们也有机会用上高质量的软件,同时不可避免的吸引了一批有志之士加入到你们的行业。

既然有现成的代码,所以就想编译一下vlc for android的代码,经过几天的折腾,终于编译成功,并在android平台上成功运行,期间查了很多资料,也遇到很到问题,在这里做个总结,也真心希望会给大家一些帮助,如果大家有这方面的问题,欢迎给我留言,只要能力所及,有时间一定会给出答案,一起学习。

这几天一直在做vlc ndroid源代码编译和移植的工作,首先说一下编译android源码需要注意的几个问题:

1.      Linux平台,我用的是ubuntu12.04, 编译vlc for android源代码时最好是在最新的平台上,我之前在ubuntu10.04上编译过,遇到过很多问题,其中的大部分问题都是软件版本过低,不满足要求,最后干脆换到12.04,之前的很多问题就不会再现了。

2.      最好切换到root用户来编译,否则中间会出现很多permission denied类似的问题,就是没有权限执行一些脚本和创建一些文件

3.      编译时不可避免的遇到一些问题,甚至出错而导致编译终止,此时一定要查看打印出来的提示或者系统log,大多数问题都是很容易解决的,切忌心浮气躁。

好了,下面说一下我具体的编译步骤,网上很多网友也提到了,大体就是那些步骤,可能那些步骤都是针对之前的vlc for android版本的,略微会存在一些差别。
  在64位系统下要注意安装32位系统的库文件,我发现我下载64位sdk文件里面的adb还是32位的,所以需要安装32位的库,否则64位的ubuntu是不能与运行32位程序的。

一: 安装android SDK, NDK, JDK三个工具,SDK是android系统用的,有些SDK还包含了eclipse,

NDK是用来编译C/C++代码的,这样使得android应用程序可能通过java来调用c/c++程序、JDK不用说,是java运行必须的环境。

JDK: http://www.oracle.com/technetwork/java/javase/downloads/index.html

SDK: http://developer.android.com/sdk/index.html

NDK: http://developer.android.com/tools/sdk/ndk/index.html

下载最新的版本,并解压到你的工作目录下。

二: 根据第一步解压的三个工具,配置这三个工具的环境变量(PATH),方法很多,可以修改~/.bashrc /etc/profile等等,这一步一定要正确,否则系统会找不到这三个工具,后面的编译会用到这几个工具,当然也就会出错了,因为系统默认不知道这几个程序的位置,这跟windows下的环境变量一个道理。为了验证环境变量是否配置正确,可以到别的目录下运行这几个程序,比如到根目录下看能否运行ndk-build adb等程序,或者echo $PATH打印一下当前的环境变量并验证。这一步很简单,貌似说的废话有点多。下面是我添加的环境变量,需要根据个人情况加以修改,XXXX代表以上三个程序的解压目录。

export PATH=XXXX /sdk/platform-tools:XXXX/android-ndk-r8e:$PATH

export JAVA_HOME=XXXX/jdk1.7.0_21

export JRE_HOME=${JAVA_HOME}/jre

export CLASSPATH=.:${JAVA_HOME}/lib:${JRE_HOME}/lib

export PATH=${JAVA_HOME}/bin:$PATH

 

 三:下载vlc依赖的库文件和一些要用到的工具

Sudo apt-get install git-core

 Sudo apt-get install ant

 Sudo apt-get install libtool

 Sudo apt-get install cmake

 Sudo apt-get install autopoint
 

四:设置编译时候要用到的变量,生成的Makefile会用到这些变量

export ANDROID_SDK=XXXX/sdk

export ANDROID_NDK=XXXX/android-ndk-r8e

export PATH=$PATH:$ANDROID_SDK/platform-tools:$ANDROID_SDK/tools

export ANDROID_ABI=armeabi-v7a

注意:最后export ANDROID_ABI=armeabi-v7a这一步需要根据各个android平台而定,可以执行adb shell 链接到android平台,然后cat  /proc/cpuinfo 查看一下自己的平台是否为armv7的,是否支持neon,然后根据情况修改

 

五:获取配置代码

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

然后进入到android目录,执行./compile.sh,这个脚本会执行所有的获取vlc源代码,各种依赖文件,编译所需要的工具, 最后编译,生成so文件,最后生成apk文件。不过执行这个脚本不出意外的会出现各种问题,要不然编译这个android代码也太easy了。根据出错的提示加以解决,大部分都是给出的文件的下载链接错误,还有权限问题。这个过程会经历很长时间,一般几个小时,因为下载的速度很慢,是脚本所给链接的服务器问题。可以将这些文件下载好放到vlc/contrib/tarballs目录中,大概包括下面这些安装包

最后会BUILD SUCCESSFULL ,本来准备把编译生成的动态库so和apk文件放到这里供大家下载的,可是这些文件都比较大,一般都好几M有的几十M,大家还是多折腾一下,只要下决心,最后肯定会编译成功的。

 

备注:按照上面的步骤,我自己在编译的时候,碰到的问题及查询相关资料汇总:

  1、编译中出现错误:reconf autoconf failed。 在stackoverflow上,有人说要把ubuntu12.04换到ubuntu13.04才能成功,我安装ubuntu13.04,重新编译vlc for android,仍然出现这个问题(娘的,花了我一天时间安装、编译),后来在我在“http://blog.csdn.net/gfocean/article/details/5266847”博客中了解到,要安装在ubuntu下“libtool.deb”,然后再编译,问题解决。 

      2、vlc for android的编译有官方文档,写的很详细:https://wiki.videolan.org/AndroidCompile/ 。 vlc for android的源码在:http://git.videolan.org/  

      3、编译vlc for android时,要用到linux android19 sdk,而下载地址dl-ssl.google.com被封了,这时我用了站长工具网站中的超级PING功能,找到可以访问dl-ssl.google.com的ip地址,放到hosts文件中映射一下,之后在ubuntu上启动sdk manager工具,选择android19 sdk下载就ok了。

    4、编译vlc for android时,碰到一些安装包无法下载的问题,此时可以手动FQ下载这些安装包,把它们放到相应的位置即可(通过打印出的log可以知道位置)。

      5、在安装ubuntu13.04后,使用apt-get install openssh-server,提示找不到地址,后来我把系统中的apt-get源更新了一下,再使用命令才安装成功。可参考 http://www.cnblogs.com/zhangpengshou/p/3591387.html

相信大家都能编译成功,我是第一次编译出专业的共享库文件,还是很有成就感的。

Linux下编译VLC for Android源代码总结