zoukankan      html  css  js  c++  java
  • 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时,碰到一些安装包无法下载的问题,此时可以手动翻墙下载这些安装包,把它们放到相应的位置即可(通过打印出的log可以知道位置)。

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

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

  • 相关阅读:
    【POJ 3162】 Walking Race (树形DP-求树上最长路径问题,+单调队列)
    【POJ 2152】 Fire (树形DP)
    【POJ 1741】 Tree (树的点分治)
    【POJ 2486】 Apple Tree (树形DP)
    【HDU 3810】 Magina (01背包,优先队列优化,并查集)
    【SGU 390】Tickets (数位DP)
    【SPOJ 2319】 BIGSEQ
    【SPOJ 1182】 SORTBIT
    【HDU 5456】 Matches Puzzle Game (数位DP)
    【HDU 3652】 B-number (数位DP)
  • 原文地址:https://www.cnblogs.com/wangle1001986/p/4069733.html
Copyright © 2011-2022 走看看