vlc android 移植版编译
同步发表于http://avenwu.net/2015/07/27/vlc-android-compiling
安装必备工具/解决环境问题
环境准备什么的如果没配置过需要一步步配置,主要是sdk/ndk,以及一些编译过程中需要用到的命令工具。
* Requirements
You MUST build on Linux (or OSX if you know what you are doing).
The following packages MUST must be installed:
* the GNU autotools: autoconf, libtool, automake and make (a.k.a. gmake)
* ...and their dependencies: m4 and gawk, mawk or nawk,
* the GNU C and C++ compilers a.k.a. gcc and g++,
* some GNU build utilities: pkg-config and patch,
* the following other build utilities: Apache Ant (or Ant), cmake, protobuf, ragel,
* the Subversion and Git version control systems
* unzip and either curl or wget for retreiving sources.
* Very recent versions of some of those tools may be required. At the time of writing, notably gettext 0.19.3 or later is required.
If any of the above is missing, expect the build to fail at some point.
If targeting an Android-x86 device, yasm must be installed too.
特别要注意gettext的版本问题,系统如果自带了可能版本不一致,比如笔者的时0.18.3,这个时候可以进行升级,可利用port,如果原版本是用homebrew安装的则也可以通过brew升级,但是port安装的不能通过brew升级,这样的操作会导致本地安装一个新的gettext,并未覆盖原有的版本
port upgrade outdated
获取源码/编译
接着开始获取源代码,尝试编译;
获取源代码
git clone git://git.videolan.org/vlc-ports/android.git vlc-android
很遗憾第一次失败了:
aven-mac-pro:vlc-android aven$ ./compile.sh
*** No ANDROID_ABI defined architecture: using ARMv7
Downloading gradle
% Total % Received % Xferd Average Speed Time Time Time Current
Dload Upload Total Spent Left Speed
0 0 0 0 0 0 0 0 --:--:-- --:--:-- --:--:-- 0
Archive: gradle-2.2.1-all.zip
End-of-central-directory signature not found. Either this file is not
a zipfile, or it constitutes one disk of a multi-part archive. In the
latter case the central directory and zipfile comment will be found on
the last disk(s) of this archive.
note: gradle-2.2.1-all.zip may be a plain executable, not an archive
unzip: cannot find zipfile directory in one of gradle-2.2.1-all.zip or
gradle-2.2.1-all.zip.zip, and cannot find gradle-2.2.1-all.zip.ZIP, period.
错误处理
从异常信息来看应该是gradle-2.2.1-all.zip文件无效,导致文件校验失败。可以手工检测下gradle文件的内容:
aven-mac-pro:vlc-android aven$ unzip -l gradle-2.2.1-all.zip
Archive: gradle-2.2.1-all.zip
End-of-central-directory signature not found. Either this file is not
a zipfile, or it constitutes one disk of a multi-part archive. In the
latter case the central directory and zipfile comment will be found on
the last disk(s) of this archive.
note: gradle-2.2.1-all.zip may be a plain executable, not an archive
unzip: cannot find zipfile directory in one of gradle-2.2.1-all.zip or
gradle-2.2.1-all.zip.zip, and cannot find gradle-2.2.1-all.zip.ZIP, period.
果然失败,目测应该是网络下载文件失败,尝试翻墙后重新下载,或从其他项目拷贝一份,gradle官网罗列了所有可供下载的版本:https://services.gradle.org/distributions
下载完毕后解压为gradle/*,和AndroidStudio的格式保持一致,这个就是用来生成AndroidStudio配置使用的;
接下来脚本会自动尝试下载vlc源码,若有本地已有vlc源码可以拷贝一份vlc,因为下载比较慢
再次编译,遇到protobuf的缺失问题,port或brew安装之;
protoc not found
To-be-built packages: protoc
rm -f -R protobuf && tar xvjf protobuf-2.6.0.tar.bz2
mv protobuf-2.6.0 protobuf && touch protobuf
mv: rename protobuf-2.6.0 to protobuf: No such file or directory
make: *** [protobuf] Error 1
buildsystem tools: make
安装过程最好保持翻墙状态,否则容易出现个别地址无法访问,例如amazon的云服务
(7) Failed to connect to s3.amazonaws.com port 443: Operation timed out
解决完错误,继续编译,看到这段输出时基本也就大功告成:
make: Entering directory `/Users/aven/work/video/vlc-android/libvlc'
[armeabi-v7a] Gdbserver : [arm-linux-androideabi-4.8] libs/armeabi-v7a/gdbserver
[armeabi-v7a] Gdbsetup : libs/armeabi-v7a/gdb.setup
[armeabi-v7a] Install : libanw.10.so => libs/armeabi-v7a/libanw.10.so
[armeabi-v7a] Install : libanw.13.so => libs/armeabi-v7a/libanw.13.so
[armeabi-v7a] Install : libanw.14.so => libs/armeabi-v7a/libanw.14.so
[armeabi-v7a] Install : libanw.18.so => libs/armeabi-v7a/libanw.18.so
[armeabi-v7a] Install : libanw.21.so => libs/armeabi-v7a/libanw.21.so
[armeabi-v7a] Install : libiomx.10.so => libs/armeabi-v7a/libiomx.10.so
[armeabi-v7a] Install : libiomx.13.so => libs/armeabi-v7a/libiomx.13.so
[armeabi-v7a] Install : libiomx.14.so => libs/armeabi-v7a/libiomx.14.so
[armeabi-v7a] Compile thumb : vlcjni <= libvlcjni.c
[armeabi-v7a] SharedLibrary : libvlcjni.so
[armeabi-v7a] Install : libvlcjni.so => libs/armeabi-v7a/libvlcjni.so
make: Leaving directory `/Users/aven/work/video/vlc-android/libvlc'
//省略部分
:vlc-android:processVanillaARMv7DebugManifest UP-TO-DATE
:vlc-android:processVanillaARMv7DebugResources UP-TO-DATE
:vlc-android:generateVanillaARMv7DebugSources UP-TO-DATE
:vlc-android:processVanillaARMv7DebugJavaRes UP-TO-DATE
:vlc-android:compileVanillaARMv7DebugJava UP-TO-DATE
:vlc-android:compileVanillaARMv7DebugNdk UP-TO-DATE
:vlc-android:compileVanillaARMv7DebugSources UP-TO-DATE
:vlc-android:preDexVanillaARMv7Debug
:vlc-android:dexVanillaARMv7Debug
:vlc-android:validateDebugSigning
:vlc-android:packageVanillaARMv7Debug
:vlc-android:zipalignVanillaARMv7Debug
:vlc-android:assembleVanillaARMv7Debug
BUILD SUCCESSFUL
Total time: 23.73 secs
检查并安装demo:
aven-mac-pro:vlc-android aven$ ls -al vlc-android/build/outputs/apk/
total 53856
drwxr-xr-x 4 aven staff 136 Aug 1 12:34 .
drwxr-xr-x 4 aven staff 136 Aug 1 12:34 ..
-rw-r--r-- 1 aven staff 13785101 Aug 1 12:34 VLC-Android-1.5.0-ARMv7.apk
-rw-r--r-- 1 aven staff 13783961 Aug 1 12:34 vlc-android-vanilla-ARMv7-debug-unaligned.apk
aven-mac-pro:vlc-android aven$ adb install vlc-android/build/outputs/apk/VLC-Android-1.5.0-ARMv7.apk
5836 KB/s (13785101 bytes in 2.306s)
pkg: /data/local/tmp/VLC-Android-1.5.0-ARMv7.apk
Success
检验成果
运行demo,功能还是很强大的,基本上就是一个完善的播放器,还支持一些实用的功能,比如倍速播放;


参考文档
vlc android 移植版编译的更多相关文章
- 第一章 Android系统的编译和移植实例
第一章 Android系统的编译和移植实例 这一章节主要介绍了Android系统的编译和移植技术,作为建立在Linux内核的基础上的Android操作系统,它的编译和移植不论在过程还是技术方面都和嵌入 ...
- Ubuntu15.10 编译VLC Android(安卓)过程记录
持续更新中... 最后一次修改于 2016-03-20 15:33:45 1.必要库的安装 除基本编译环境(gcc.g++等外),需要额外安装如下的库(用于下载必要的依赖文件) (1)JDK 推荐安装 ...
- 【转】vlc android 代码编译
转自:http://blog.csdn.net/asircao/article/details/7734201 系统:ubuntu12.04代码:git://git.videolan.org/vlc- ...
- 在android中,编译的项目使用到第三方jar的导入方法 终极版!
1,在android系统环境中编译自己的项目时,往往会用到第三方jar包.这些jar包在eclipse中加入编译,一路畅通,由于eclipse已经帮助你配置好了.可是当把这个项目复制到系统环境中编译时 ...
- android源码编译1
一.环境说明: 1.liunx系统:Ubuntu12.04 2.jdk:sun-java6-jdk 3.g++4.5 gcc4.5 二.android源码的目录结构 |-- Makefile |-- ...
- 【转】高通平台android 环境配置编译及开发经验总结
原文网址:http://blog.csdn.net/dongwuming/article/details/12784535 1.高通平台android开发总结 1.1 搭建高通平台环境开发环境 在高通 ...
- 初学者的Android移植:在Debian上建立一个稳定的构建环境
介绍 通过在chrooted环境中设置开发环境,避免依赖冲突和沙箱您的Android开发从您的Debian GNU/Linux系统.这是为通配符类别准备的,因为从源代码构建Android似乎没有在其他 ...
- Ogre 1.9 Android移植
Ogre 1.9 Android移植 分类: 图形渲染2013-02-04 16:47 3860人阅读 评论(14) 收藏 举报 Android Ogre C++linuxLinuxLINUX 上一篇 ...
- mir9-lua——《热血沙城》45度ARPG手游-Lua移植版
mir9——<热血沙城>,是9秒论坛开源的一个使用Cocos2d-x-2.2.1引擎开发的45度ARPG手游Demo,源代码为c++.mir9-lua是mir9的Lua移植版,使用Quic ...
随机推荐
- Postman-简单使用
Postman-简单使用 Postman-进阶使用 Postman-CI集成Jenkins Postman功能(https://www.getpostman.com/features) 主要用于模拟网 ...
- 『TCP/IP详解——卷一:协议』读书笔记——03
2013-08-17 17:31:49 1.7 分用 分用(Demultiplexing):这是一个过程——当目的主机收到一个以太网数据帧时,数据就开始从协议栈中由底向上升,同时去掉各层协议上的报文首 ...
- 视图组件(View)
1.Android应用的大部分UI组件都放在了android.widget包及其子包,android.view包及其子包中,Android应用的所有UI组件都继承了View类2.View类还有一个重要 ...
- javaweb 乱码---汉字存入mysql数据库中变成乱码
今天郁闷了一天,java程序在向mysql插入数据前不是乱码,数据库安装时也选了编码为utf8(和我程序的编码格式一致).可是插入数据就变成乱码,相当郁闷. 原因:mysql的配置文件中的编码并没有改 ...
- 【Python自动化运维之路Day6】
1.递归思考题,阶乘 使用递归方式(函数)计算: 1*2*3*4*5*6*7*8*9*10的值 def func(num): if num==1: return 1 return num*func(n ...
- Python 拷贝对象(深拷贝deepcopy与浅拷贝copy)
1. copy.copy 浅拷贝 只拷贝父对象,不会拷贝对象的内部的子对象. 2. copy.deepcopy 深拷贝 拷贝对象及其子对象 一个很好的例子: # -*-coding:utf-8 -*- ...
- Helios与Katana的区别
Helios与Katana都是微软开发的基于IIS的OWIN实现. 它们之间的区别很简单:Helios不依赖于ASP.NET Runtime,Katana依赖于ASP.NET Runtime. Hel ...
- 消灭ASP.NET CachedPathData.ValidatePath引起的HttpException异常
在博客程序的日志中经常会出现这样的错误日志: Url: http://www.cnblogs.com/cmt/p/sokcet_memory_leak.html (这个URL仅是示例)UserAgen ...
- ASP.NET Core重写个人博客站点小结
今天用ASP.NET Core重写了个人博客站点,原来是基于ASP.NET 4.5开发的.重写工作总体很顺利,最后成功发布到Ubunt+Nginx平台上.效果如下: 右边的Header信息里可以看到已 ...
- Spec模板
Spec模板 一.概述 1.项目背景 图书馆在正常运营中面对大量书籍.读者信息以及两者间相互联系产生的借书信息.还书信息.现有的人工记录方法既效率低又错误过多,大大影响了图书馆 ...