一、准备工作
当然为了在Eclipse中开发C/C++,还可以安装 CDT。
二、环境变量配置
配置ANDROID_SDK
# export
配置ANDROID_NDK
# export
配置PATH变量
# export
配置jdk(不在详述)
配置NEON相关信息(一般编译的时候,会编译NO_NEON和支持NEON两种包出来)
# export
http://www.arm.com/zh/products/processors/technologies/neon.php
http://en.wikipedia.org/wiki/ARM_architecture#Advanced_SIMD_.28NEON.29
配置ABI
# export ANDROID_ABI=armeabi-v7a
三、获取源码
# git clone git://git.videolan.org/vlc-ports/android.git
源码下载完成后,需将源码直接放置在根目录下,否则后续的编译过程中会出现找不到库文件的错误。
四、编译源码
在编译过程中会下载各种vlc-android需要的依赖包,此过程较漫长,每次如果遇到下载失败,可以重新执行该命令。
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库。
附:编译过程中可能遇到的问题
1,checking host system type... Invalid configuration `arm-linux-androideabi': system `androideabi' not recognized
configure: error: /bin/bash autotools/config.sub arm-linux-androideabi failed
解决办法:到http://git.savannah.gnu.org /gitweb/?p=config.git;a=tree下载最新的包并解压得到config.guess和config.sub两个文件,将此两个文件拷贝到/usr/share/misc目录下覆盖,重新执行编译命令。
2,jni/libvlcjni.c: In function 'read_track_info_internal':
解决办法:找到文件android/vlc-android/jni /libvlcjni.c,并将该两行注释掉即可,然后重新执行编译命令。
3, BUILD FAILED
/androidApp/android-sdk-linux/tools/ant/build.xml:569: The following error occurred while executing this line:
/androidApp/android-sdk-linux/tools/ant/build.xml:517: Unable to resolve project target 'android-16'
解决办法:这里根据自己所安装的SDK包进行更改android/vlc- android/project.properties, android/java-libs/SlidingMenu/project.properties, android/java-libs/ActionBarSherlock/project.properties文件中的 android-x,但是对于vlc-android0.0.5版本的一定是4.0及以上版本(因为0.0.5版本的界面需要4.0及以上的特性)所以这里一定是14及以上,否则还会报错error: Error retrieving parent for item: No resource found that matches the given name'android:Widget.Holo.ActionBar'.
编译时只是这里需要4.0这个包的界面特性,但是不影响最终生成的APK的运行目标(只要不调用4.0及以上的API),比如我这里在AndroidManifest.xml中可以设置
重新执行编译命令。
4,导入Eclipse时注意除了vlc-android工程外还需要导入另外两个依赖的工程即android/java-libs目录下的SlidingMenu和ActionBarSherlock两个工程,否者会报错。
http://blog.chinaunix.net/uid-25885064-id-3357019.html。
参考文献:http://wiki.videolan.org /AndroidCompile