文档章节

vlc android 代码编译

Kobe_Gong_5
 Kobe_Gong_5
发布于 2013/08/25 21:37
字数 1263
阅读 919
收藏 6
系统:ubuntu12.04
代码:git://git.videolan.org/vlc-ports/android.git
代码版本:375646994d0602

年初的时候搞了三个月的vlc android。昨天看到vlc android的beta版本发布了,决定编译一个看看效果。把自己此次的编译过程记录下来,供朋友们参考。下文中的文件路径,要替换成正确的路径。

1. 搭建ubuntu android开发环境
要找一个自己喜欢的目录安装jdk、SDK、NDK、ANT
1.1 安装jdk
参考我转发的《Ubuntu11.10下安装 jdk-6u30-linux-i586.bin》

1.2 安装SDK
下载SDK:http://developer.android.com/sdk/index.html
把SDK解压到一个目录下:
[plain] view plain copy
  1. $ sudo tar -xvf android-sdk_r20-linux.tgz  

1.3 安装NDK
下载NDK: http://developer.android.com/tools/sdk/ndk/index.html
把NDK解压到一个目录下:
[plain] view plain copy
  1. $ sudo bzip2 -d android-ndk-r5b-linux-x86.tar.bz2  
  2. $ sudo tar -xvf android-ndk-r5b-linux-x86.tar  

1.4 安装ANT
下载ANT: http://mirror.bit.edu.cn/apache//ant/binaries/apache-ant-1.8.4-bin.tar.gz
解压:
[plain] view plain copy
  1. $ sudo tar -xvf apache-ant-1.8.4-bin.tar.gz  
设置ant环境变量:
[plain] view plain copy
  1. $ sudo vim /etc/profile  
在文件末尾添加:
[plain] view plain copy
  1. export ANT_HOME=/home/workenv/apache-ant-1.8.4  
  2. PATH=$PATH:/home/workenv/apache-ant-1.8.4  
设置生效:
[plain] view plain copy
  1. $ source /etc/profile  
检查一下是否安装成功:
[plain] view plain copy
  1. $ ant -version  
应该显示:
[plain] view plain copy
  1. Apache Ant(TM) version 1.8.4 compiled on May 22 2012  

1.5 安装eclipse:
[plain] view plain copy
  1. $ sudo cp eclipse-jee-indigo-SR1-linux-gtk.tar.gz ../workenv/  
  2. $ cd ../workenv/  
  3. $ sudo gzip -d eclipse-jee-indigo-SR1-linux-gtk.tar.gz  
  4. $ sudo tar -xvf eclipse-jee-indigo-SR1-linux-gtk.tar  
  5. $ sudo chmod 777 -R eclipse/  
  6. $ rm eclipse-jee-indigo-SR1-linux-gtk.tar  

1.6 安装ADT插件
[plain] view plain copy
  1. $ ./eclips  
启动Eclipse选择“Help”>“InstallNewSoftware...”
选择Add Name:ADT Location:http://dl-ssl.google.com/Android/eclipse/
选择:AndroidDDMS和AndroidDevelopmentTools

1.7 更新Android SDK API
[plain] view plain copy
  1. $ ./eclips  
Windows > Preferences > Android > SDK Location
填入SDK的路径。
Windows > Android SDK Manger
选择 2.2 和 4.1
Install

2. 安装vlc依赖的其他库:
[plain] view plain copy
  1. $ sudo apt-get build-dep vlc  

3. 编译
3.1 设置环境变量
[plain] view plain copy
  1. $ export ANDROID_SDK=/home/workenv/android-sdk-linux  
  2. $ export ANDROID_NDK=/home/workenv/android-ndk-r8  
  3. $ export PATH=$PATH:$ANDROID_SDK/platform-tools:$ANDROID_SDK/tools如果是 ARMv7和以上并支持NEON的设备:  
  4. $ export ANDROID_ABI=armeabi-v7a  
如果是 ARMv7和以上但是不支持NEON的设备:
[plain] view plain copy
  1. $ export ANDROID_ABI=armeabi-v7a  
  2. $ export NO_NEON=1  
如何查看cpu类型和是否支持NEON?打开手机或者pad下的这个文件/proc/cpuinfo,会看到类似如下的内容:
[plain] view plain copy
  1. Processor           : ARMv7 Processor rev 2 (v7l)  
  2. BogoMIPS            : 998.36  
  3. Features            : swp half thumb fastmult vfp edsp neon vfpv3  
  4. CPU implementer     : 0x41  
  5. CPU architecture    : 7  
  6. CPU variant         : 0x3  
  7. CPU part            : 0xc08  
  8. CPU revision        : 2  
  9.   
  10. Hardware            : P1Lite Samsung Board  
  11. Revision            : 0004  
  12. Serial              : 0000000000000000  
这里就能到ARMv7并支持neon,Features里有neon,就表示支持neon,否则不支持。

3.2 获取代码
[plain] view plain copy
  1. $ git clone git://git.videolan.org/vlc-ports/android.git  
  2. $ cd android  

3.3 编译
[plain] view plain copy
  1. $ sh compile.sh  
compile.sh的执行过程,就是整个的编译过程,大致过程如下:
a. 下载vlc代码:compile.sh的42行 git clone git://git.videolan.org/vlc.git vlc。
b. 并check out vlc代码到e75d2024这个版本:compile.sh的44行 git checkout -B android ${TESTED_HASH}
c. 编译所有需要的第三方库,先下载再编译,这个过程需要很长时间,还可能下载不成功,如果无法下载某些库,就手动下载下来,并放到这个目录下即可:android/vlc/contrib/tarballs。
d. vlc的Configuring。
e. vlc的编译。
f. 编译android部分代码并链接vlc so库。

4 解决编译过程中遇到的问题
4.1 错误 C compiler cannot create executables
[plain] view plain copy
  1. configure: error: C compiler cannot create executables  
  2. See `config.log' for more details.  
找到config.log并打开:
[plain] view plain copy
  1. $ vim ./vlc/contrib/android/a52dec/config.log  
发现这样一行提示错误:
[plain] view plain copy
  1. /home/workenv/android-ndk-r8/toolchains/arm-linux-androideabi-4.4.3/prebuilt/linux-x86/bin/../lib/gcc/arm-linux-androideabi/4.4.3/../../../../arm-linux-androideabi/bin/ld: crtbegin_dynamic.o: No such file: No such file or directory  
crtbegin_dynamic.o找不到,去NDK目录下找crtbegin_dynamic.o:
[plain] view plain copy
  1. $ find -name crtbegin_dynamic.o  
找到很多:
[plain] view plain copy
  1. ./platforms/android-14/arch-x86/usr/lib/crtbegin_dynamic.o  
  2. ./platforms/android-14/arch-mips/usr/lib/crtbegin_dynamic.o  
  3. ./platforms/android-14/arch-arm/usr/lib/crtbegin_dynamic.o  
  4. ./platforms/android-3/arch-arm/usr/lib/crtbegin_dynamic.o  
  5. ./platforms/android-8/arch-arm/usr/lib/crtbegin_dynamic.o  
  6. ./platforms/android-5/arch-arm/usr/lib/crtbegin_dynamic.o  
  7. ./platforms/android-9/arch-x86/usr/lib/crtbegin_dynamic.o  
  8. ./platforms/android-9/arch-mips/usr/lib/crtbegin_dynamic.o  
  9. ./platforms/android-9/arch-arm/usr/lib/crtbegin_dynamic.o  
  10. ./platforms/android-4/arch-arm/usr/lib/crtbegin_dynamic.o  
查看一下权限
[plain] view plain copy
  1. $ ll ./platforms/android-14/arch-x86/usr/lib/crtbegin_dynamic.o  
发现普通用户没有读权限,应该就是这个原因了。改变ndk里文件权限:
[plain] view plain copy
  1. $ sudo chmod 755 -R android-ndk-r8  
再编译:
[plain] view plain copy
  1. $ sh compile.sh  
没有提示这个错误了。

4.2 ant错误
[plain] view plain copy
  1. /bin/sh: 1: ant: Permission denied  
[plain] view plain copy
  1. $ ant -version  
提示没有安装ant,已经安装了,重新设置一下环境就OK了:
[plain] view plain copy
  1. $ source /etc/profile  

4.3
[plain] view plain copy
  1. BUILD FAILED  
  2. /home/workenv/android-sdk-linux/tools/ant/build.xml:518: Unable to resolve project target 'android-15'  
  3. $ vim vlc-android/project.properties  
把15改成16,因为刚才我安装sdk api的时候只安装了8和16。
[plain] view plain copy
  1. $ vim vlc-android/AndroidManifest.xml  
把android:targetSdkVersion="15"改成android:targetSdkVersion="16"
终于:BUILD SUCCESSFUL

后记:
由于之前编译过很多次,所以这次编译还算顺利。如果有朋友遇到vlc里的某些代码编译出错的问题,那么很可能是权限、git checkout、git am打补丁的问题。后续我会总结一些vlc android的代码架构方面的东西,也会长期学习、关注vlc,希望与大家一起交流。

本文转载自:http://blog.csdn.net/asircao/article/details/7734201

Kobe_Gong_5
粉丝 2
博文 55
码字总数 43587
作品 0
成都
私信 提问
加载中

评论(1)

聂华明
聂华明
按照你的方法我也来试试
VLC for Android : 编译问题 & 解决办法

敬告: 编译前尽量安装/更新必要的软件:vlc-dep, android-sdk, android-ndk 1. libmpeg2 下载源错误, 必须修改$(vlc-setup)/vlc/contrib/src/libmpeg2/rules.mak, 内容如下: #$(vlc-setup...

有初啊
2013/03/30
4.7K
6
找资深android工程师解决vlc集成中遇到的GnuTLS漏洞问题

需要满足本需求所述能力要求的高级开发工程师驻场工作,按我方要求完成相关任务。 【工作职责】 1、我们开发了一款Android视频播放APP,解码器用的是VLC-Android开源项目,发布到Google Play...

atwal
2016/01/21
19
0
编译VLC for ios 2.7.2release版本 以及VLC for Android 最新版本

1. 编译VLC for ios 2.7.2版本。提供可在xcode7.2 or 7.3上直接运行的源代码(源码地址在这里: http://www.videolan.org/vlc/download-ios.html) 2. 编译VLC for Android最新版本。提供可在...

stane
2016/04/08
22
0
android 调用vlc程序闪退,如何定位问题点?

android 调用vlc程序闪退,如何定位问题点? 程序闪退在elipse的日志上没有任何提示, 如何才能定位到vlc里面哪句代码报错呢? 是否跟vlc编译debug有关?

jijde
2016/06/20
457
0
ndk vlc播放器

最近开始研究Android版的vlc,但是有个问题已经让我郁闷很久不会解决,希望路过的高手能指导一下,问题如下 在编译ndk,使用ndk-build clean,效果如下: ####@ubuntugavin:~/vlc_programe/...

gavin_jin
2014/06/19
2.6K
3

没有更多内容

加载失败,请刷新页面

加载更多

golang-字符串-地址分析

demo package mainimport "fmt"func main() {str := "map.baidu.com"fmt.Println(&str, str)str = str[0:5]fmt.Println(&str, str)str = "abc"fmt.Println(&s......

李琼涛
今天
4
0
Spring Boot WebFlux 增删改查完整实战 demo

03:WebFlux Web CRUD 实践 前言 上一篇基于功能性端点去创建一个简单服务,实现了 Hello 。这一篇用 Spring Boot WebFlux 的注解控制层技术创建一个 CRUD WebFlux 应用,让开发更方便。这里...

泥瓦匠BYSocket
今天
6
0
从0开始学FreeRTOS-(列表与列表项)-3

FreeRTOS列表&列表项的源码解读 第一次看列表与列表项的时候,感觉很像是链表,虽然我自己的链表也不太会,但是就是感觉很像。 在FreeRTOS中,列表与列表项使用得非常多,是FreeRTOS的一个数...

杰杰1号
今天
8
0
Java反射

Java 反射 反射是框架设计的灵魂(使用的前提条件:必须先得到代表的字节码的 Class,Class 类 用于表示.class 文件(字节码)) 一、反射的概述 定义:JAVA 反射机制是在运行状态中,对于任...

zzz1122334
今天
6
0
聊聊nacos的LocalConfigInfoProcessor

序 本文主要研究一下nacos的LocalConfigInfoProcessor LocalConfigInfoProcessor nacos-1.1.3/client/src/main/java/com/alibaba/nacos/client/config/impl/LocalConfigInfoProcessor.java p......

go4it
昨天
9
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部