设为首页 加入收藏

TOP

Android开发实践:编译VLC For Android
2015-02-02 14:37:54 来源: 作者: 【 】 浏览:8
Tags:Android 开发 实践 编译 VLC For

参考的文章:https://wiki.videolan.org/AndroidCompile/


1. 准备编译环境


基本上按照这篇wiki的介绍就足够了,为了顺利完成编译,建议首先保证相关的软件或者依赖库都已经下载好了,我再强调一下几个重点注意事项。


(1) Android SDK:必须使用SDK Platform Android 5.0, API 21,因为VLC For Android用到了Android 5.0 的一些API。


(2) 最好通过apt-get install 把下面这些依赖的软件都安装一遍,或更新到最新版


git,apache-ant (or ant), autoconf, automake, autopoint, cmake, gawk (or nawk), gcc, g++, libtool, m4, patch, pkg-config, ragel, subversion, unzip.


2. 下载源码包


直接通过git下载VLC For Android最新的源码即可:


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


3. 编译VLC源码和VLC Android工程


(1) 配置编译环境变量


具体参考wiki的介绍,你可以写个shell脚本来执行,避免每次编译都要配置,下面是我的环境变量,可以根据你的路径修改:


#! /bin/sh


export ANDROID_SDK=/opt/android/sdk/


export ANDROID_NDK=/opt/android/android-ndk-r10/


export ANT_DIR=/opt/android/ant/


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


export ANDROID_ABI=armeabi-v7a


(2) 执行编译


sh compile.sh


VLC不愧是使用这么广泛的播放器,它的编译脚本写得非常强大和智能,直接通过执行compile.sh,它会自动check所有的依赖,并通过网络去下载缺失的库。


首先,它会下载vlc的源码,并存放在当前目录下。然后去下载依赖的第三方库文件。


当然,由于GFW的存在,有的时候下载会失败,这个时候,就需要你手动去Google搜索它正在下载的依赖文件,手动下载好了之后放到 vlc/contrib/tarballs目录下,然后再回到命令行重新执行 sh compile.sh


它依赖的全部第三方库文件如图所示:


VLC For Android


(3) 编译问题


编译过程还算顺利,只出现过一个大问题,如下:


google/protobuf/unittest.proto:853:21: Missing field number.


google/protobuf/unittest.proto:862:1: Reached end of input in message definition (missing '}').


make[3]: *** [unittest_proto_middleman] Error 1


网上也搜不到解决方案,我看了下GitHub上Protobuf的Readme,然后下载了最新的protobuf放到vlc/contrib/tarballs/contrib-android-arm-linux-androideabi/protobuf目录下,执行./configure --disable-shared,再编译,没想到就直接过了。


4.? 加载VLC For Android的Java工程


编译通过后,就可以直接在vlc-android/bin目录下看到debug版的apk了,下面简单说说在Eclipse中加载vlc-android的整个工程。


VLC For Android


打开Eclipse,选择Import,把VLC For Android目录下所有的工程到导入到Eclipse中(我去掉了TV工程),如图所示,有5个必须的工程,其中,VLC是主工程,其他四个都是Lib工程。没有什么意外的话,直接运行VLC工程,就可以在Android手机上看到VLC播放器应用了!


5. 总结


VLC For Android的编译过程就简单地介绍到这儿了,有任何疑问欢迎留言讨论或者来信lujun.hust@gmail.com交流。


】【打印繁体】【投稿】【收藏】 【推荐】【举报】【评论】 【关闭】 【返回顶部
分享到: 
上一篇Python多线程之线程创建和终止 下一篇Android开发实践:使用Service还..

评论

帐  号: 密码: (新用户注册)
验 证 码:
表  情:
内  容: