转: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

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

Linux下编译VLC for Android源代码总结的更多相关文章

  1. 【失败的经验】在linux下编译opencv for android

    cd /home/ahfu#选择opencv 3.4.6版本来编译wget https://github.com/opencv/opencv/archive/3.4.6.tar.gztar -zxvf ...

  2. Linux下 解包/打包 Android 映像文件 system.img, boot.img, ramdisk.img, userdata.img.

    Linux下 解包/打包 Android 映像文件 system.img, boot.img, ramdisk.img, userdata.img. 2014年10月20日 ⁄ 计算机视觉 ⁄ 共 1 ...

  3. linux下编译qt5.6.0静态库——configure配置

    linux下编译qt5.6.0静态库 linux下编译qt5.6.0静态库 configure生成makefile 安装选项 Configure选项 第三方库: 附加选项: QNX/Blackberr ...

  4. linux下编译安装boost库

    linux下编译安装boost库 linux下编译安装boost库 1.下载并解压boost 1.58 源代码 下载 解压 2.运行bootstrap.sh 3.使用b2进行构建 构建成功的提示 4. ...

  5. ubuntu下编译VLC

    ubuntu下编译VLC 标签(空格分隔): ubuntu vlc 视频 编译 [TOC] 1.下载VLC源码包并解压 VLC的源码包在VLC的官网有,可以直接下载.也可以使用git来clone一个. ...

  6. linux下编译eXosip、osip,以及UAC和UAS的例子

    从网站上看到了这样的一篇博文 :Windows下编译eXosip.osip,以及UAC和UAS的例子 (链接:http://www.cnblogs.com/dyllove98/archive/2013 ...

  7. linux下编译qt5.6.0静态库——configure配置(超详细,有每一个模块的说明)(乌合之众)

    linux下编译qt5.6.0静态库 linux下编译qt5.6.0静态库 configure生成makefile 安装选项 Configure选项 第三方库: 附加选项: QNX/Blackberr ...

  8. [转载]linux下编译php中configure参数具体含义

    编译N次了   原来这么回事 原文地址:linux下编译php中configure参数具体含义作者:捷心特 php编译参数的含义 ./configure –prefix=/usr/local/php ...

  9. Linux下编译GDAL

    一.准备工作 从官网下载GDAL.PROJ.4和GEOS,将其存放在/home/liml/Work/3rdPart目录并解压,如下图所示.下载地址请自行Google.注:使用的系统是CentOS6.4 ...

随机推荐

  1. linux 挂载iso文件,挂载ntfs文件系统

    映像档不可录就挂载使用.通过loop命令来执行 好吧.跟同事要了一个win10系统盘.插入,竟然是灰色的. ,一点击,提示无法挂载,仔细看了一下下面的内容,原来不支持ntfs格式,好吧,win10系统 ...

  2. HashMap 介绍

    基本介绍 1. 用于存储Key-Value键值对的集合(每一个键值对也叫做一个Entry)(无顺序). 2. 根据键的hashCode值存储数据,大多数情况下可以直接定位到它的值. 3. 键key为n ...

  3. git Web

    { …or create a new repository on the command line   echo "# Kotlin" >> README.md git ...

  4. BZOJ 4455: [Zjoi2016]小星星(容斥+树形dp)

    传送门 解题思路 首先题目中有两个限制,第一个是两个集合直接必须一一映射,第二个是重新标号后,\(B\)中两点有边\(A\)中也必须有.发现限制\(2\)比较容易满足,考虑化简限制\(1\).令\(f ...

  5. docker快速安装kibana

    一.拉取镜像 docker pull kibana:5.6.9 二.启动容器 docker run --name kibana -e ELASTICSEARCH_URL=http://10.0.0.1 ...

  6. NX二次开发-UFUN计时函数UF_end_timer

    1 NX9+VS2012 2 3 #include <uf.h> 4 #include <uf_modl.h> 5 6 7 UF_initialize(); 8 9 //计时开 ...

  7. NX二次开发-UFUN移动工程图视图到另一个图纸页UF_DRAW_move_view_to_drawing

    #include <uf.h> #include <uf_draw.h> #include <uf_obj.h> UF_initialize(); //找名字获取视 ...

  8. natapp自动获取免费的动态端口域名

    前段时间,因为客户有个项目要求跨局域网进行远程控制桌面,想知道能不能实现.于是查询了许多资料,了解到需要有公网服务器作为中介才能够实现,但是公司又没有公网服务器,于是只有利用花生壳.natapp服务器 ...

  9. struts漏洞处理--老项目struts版本升级遇到的问题

    struts漏洞S2-016被扫描出,要求升级struts版本,查看生产struts版本2.0.12,该漏洞影响版本2.3.15以下,上网搜索,struts2.5以上的要求jdk1.7,由于项目过老, ...

  10. maven+scala+idea 环境构建

    组建信息 组件 版本 下载地址 maven 3.6.1 https://maven.apache.org/ jdk jdk1.8.0 https://www.oracle.com/technetwor ...