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
相信大家都能编译成功,我是第一次编译出专业的共享库文件,还是很有成就感的。
Linux下编译VLC for Android源代码总结的更多相关文章
- 【失败的经验】在linux下编译opencv for android
cd /home/ahfu#选择opencv 3.4.6版本来编译wget https://github.com/opencv/opencv/archive/3.4.6.tar.gztar -zxvf ...
- Linux下 解包/打包 Android 映像文件 system.img, boot.img, ramdisk.img, userdata.img.
Linux下 解包/打包 Android 映像文件 system.img, boot.img, ramdisk.img, userdata.img. 2014年10月20日 ⁄ 计算机视觉 ⁄ 共 1 ...
- linux下编译qt5.6.0静态库——configure配置
linux下编译qt5.6.0静态库 linux下编译qt5.6.0静态库 configure生成makefile 安装选项 Configure选项 第三方库: 附加选项: QNX/Blackberr ...
- linux下编译安装boost库
linux下编译安装boost库 linux下编译安装boost库 1.下载并解压boost 1.58 源代码 下载 解压 2.运行bootstrap.sh 3.使用b2进行构建 构建成功的提示 4. ...
- ubuntu下编译VLC
ubuntu下编译VLC 标签(空格分隔): ubuntu vlc 视频 编译 [TOC] 1.下载VLC源码包并解压 VLC的源码包在VLC的官网有,可以直接下载.也可以使用git来clone一个. ...
- linux下编译eXosip、osip,以及UAC和UAS的例子
从网站上看到了这样的一篇博文 :Windows下编译eXosip.osip,以及UAC和UAS的例子 (链接:http://www.cnblogs.com/dyllove98/archive/2013 ...
- linux下编译qt5.6.0静态库——configure配置(超详细,有每一个模块的说明)(乌合之众)
linux下编译qt5.6.0静态库 linux下编译qt5.6.0静态库 configure生成makefile 安装选项 Configure选项 第三方库: 附加选项: QNX/Blackberr ...
- [转载]linux下编译php中configure参数具体含义
编译N次了 原来这么回事 原文地址:linux下编译php中configure参数具体含义作者:捷心特 php编译参数的含义 ./configure –prefix=/usr/local/php ...
- Linux下编译GDAL
一.准备工作 从官网下载GDAL.PROJ.4和GEOS,将其存放在/home/liml/Work/3rdPart目录并解压,如下图所示.下载地址请自行Google.注:使用的系统是CentOS6.4 ...
随机推荐
- 从零开始搭建系统2.5——Apollo安装及配置
参见https://github.com/ctripcorp/apollo/wiki/Quick-Start安装即可
- Stack&Heap的理解
Heap(堆):在英文中有杂乱的堆意思,意译中文为堆:其特点为先进先出. 堆空间分配:一般由程序员分配释放, 若程序员不释放,程序结束时可能由OS回收,分配方式倒是类似于链表. Stack(栈):在英 ...
- canvas画布导出图片并下载
近期在学习关于画布知识,关于 画布导出图片, 在导出jpeg格式的图片时,会发现图片背景色变成了黑色,原因是画布透明的地方 默认转成了黑色,可以在绘制画布前设置透明处背景色为白色. // 背景色转换成 ...
- Unity 中调用Android的JAVA代码
首先我们要创建一个android项目 因为项目需要使用Unity提供的接口,所以需要将接口classes.jar引入至当前工程但中.接口包的所在地,打开Finder->应用程序->Unit ...
- Delphi 窗体的释放和判断窗体是否存在
常规释放和关闭: Form.Free - 释放Form占用的所有资源.Free后,Form指针不能再使用,除非对Form重新赋值. Form.Hide - 隐藏Form.可以调用f ...
- Android源码的git下载地址
git clone https://android.googlesource.com/device/common.git git clone https://android.googlesour ...
- c++ pb_ds库,实现 红黑树,Splay
C++ pb_ds库 #include <ext/pb_ds/assoc_container.hpp>#include <ext/pb_ds/tree_policy.hpp> ...
- D 语言学习感受
胃抽动!特想吐!不过,还是很佩服写这种语言的人,不是大拿,怎么可能开发一门语言!
- class3_Entry & Text 输入和文本框
程序总体运行效果图如下; #!/usr/bin/env python # -*- coding:utf-8 -*- # -------------------------------------- ...
- 6、 restful API
RESTful 一种软件架构风格.设计风格,而不是标准,只是提供了一组设计原则和约束条件.它主要用于客户端和服务器交互类的软件.基于这个风格设计的软件可以更简洁,更有层次,更易于实现缓存等机制. RE ...