http://blog.csdn.net/asircao/article/details/7734201
系统: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解压到一个目录下:
-
$ sudo tar -xvf android-sdk_r20-linux.tgz
1.3 安装NDK
下载NDK:http://developer.android.com/tools/sdk/ndk/index.html
把NDK解压到一个目录下:
-
$ sudo bzip2 -d android-ndk-r5b-linux-x86.tar.bz2
-
$ sudo tar -xvf android-ndk-r5b-linux-x86.tar
1.4 安装ANT
下载ANT:
解压:
-
$ sudo tar -xvf apache-ant-1.8.4-bin.tar.gz
设置ant环境变量:
在文件末尾添加:
-
export ANT_HOME=/home/workenv/apache-ant-1.8.4
-
PATH=$PATH:/home/workenv/apache-ant-1.8.4
设置生效:
检查一下是否安装成功:
应该显示:
-
Apache Ant(TM) version 1.8.4 compiled on May 22 2012
1.5 安装eclipse:
-
$ sudo cp eclipse-jee-indigo-SR1-linux-gtk.tar.gz ../workenv/
-
$ cd ../workenv/
-
$ sudo gzip -d eclipse-jee-indigo-SR1-linux-gtk.tar.gz
-
$ sudo tar -xvf eclipse-jee-indigo-SR1-linux-gtk.tar
-
$ sudo chmod 777 -R eclipse/
-
$ rm eclipse-jee-indigo-SR1-linux-gtk.tar
1.6 安装ADT插件
启动Eclipse选择“Help”>“InstallNewSoftware...”
选择Add Name:ADT Location:
选择:AndroidDDMS和AndroidDevelopmentTools
1.7 更新Android SDK API
Windows > Preferences > Android > SDK Location
填入SDK的路径。
Windows > Android SDK Manger
选择 2.2 和 4.1
Install
2. 安装vlc依赖的其他库:
-
$ sudo apt-get build-dep vlc
3. 编译
3.1 设置环境变量
-
$ export ANDROID_SDK=/home/workenv/android-sdk-linux
-
$ export ANDROID_NDK=/home/workenv/android-ndk-r8
-
$ export PATH=$PATH:$ANDROID_SDK/platform-tools:$ANDROID_SDK/tools如果是 ARMv7和以上并支持NEON的设备:
-
$ export ANDROID_ABI=armeabi-v7a
如果是 ARMv7和以上但是不支持NEON的设备:
-
$ export ANDROID_ABI=armeabi-v7a
-
$ export NO_NEON=1
如何查看cpu类型和是否支持NEON?打开手机或者pad下的这个文件/proc/cpuinfo,会看到类似如下的内容:
-
Processor : ARMv7 Processor rev 2 (v7l)
-
BogoMIPS : 998.36
-
Features : swp half thumb fastmult vfp edsp neon vfpv3
-
CPU implementer : 0x41
-
CPU architecture : 7
-
CPU variant : 0x3
-
CPU part : 0xc08
-
CPU revision : 2
-
-
Hardware : P1Lite Samsung Board
-
Revision : 0004
-
Serial : 0000000000000000
这里就能到ARMv7并支持neon,Features里有neon,就表示支持neon,否则不支持。
3.2 获取代码
-
$ git clone git://git.videolan.org/vlc-ports/android.git
-
$ cd android
3.3 编译
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
-
configure: error: C compiler cannot create executables
-
See `config.log' for more details.
找到config.log并打开:
-
$ vim ./vlc/contrib/android/a52dec/config.log
发现这样一行提示错误:
-
/home/workenv/android-ndk-r8/toolchains/arm-linux-androideabi-4.4.3/prebuilt/linux-x86/bin/../lib/gcc/arm-linux-androideabi/4.4.3/http://www.cnblogs.com/http://www.cnblogs.com/arm-linux-androideabi/bin/ld: crtbegin_dynamic.o: No such file: No such file or directory
crtbegin_dynamic.o找不到,去NDK目录下找crtbegin_dynamic.o:
-
$ find -name crtbegin_dynamic.o
找到很多:
-
./platforms/android-14/arch-x86/usr/lib/crtbegin_dynamic.o
-
./platforms/android-14/arch-mips/usr/lib/crtbegin_dynamic.o
-
./platforms/android-14/arch-arm/usr/lib/crtbegin_dynamic.o
-
./platforms/android-3/arch-arm/usr/lib/crtbegin_dynamic.o
-
./platforms/android-8/arch-arm/usr/lib/crtbegin_dynamic.o
-
./platforms/android-5/arch-arm/usr/lib/crtbegin_dynamic.o
-
./platforms/android-9/arch-x86/usr/lib/crtbegin_dynamic.o
-
./platforms/android-9/arch-mips/usr/lib/crtbegin_dynamic.o
-
./platforms/android-9/arch-arm/usr/lib/crtbegin_dynamic.o
-
./platforms/android-4/arch-arm/usr/lib/crtbegin_dynamic.o
查看一下权限
-
$ ll ./platforms/android-14/arch-x86/usr/lib/crtbegin_dynamic.o
发现普通用户没有读权限,应该就是这个原因了。改变ndk里文件权限:
-
$ sudo chmod 755 -R android-ndk-r8
再编译:
没有提示这个错误了。
4.2 ant错误
-
/bin/sh: 1: ant: Permission denied
提示没有安装ant,已经安装了,重新设置一下环境就OK了:
4.3
-
BUILD FAILED
-
/home/workenv/android-sdk-linux/tools/ant/build.xml:518: Unable to resolve project target 'android-15'
-
$ vim vlc-android/project.properties
把15改成16,因为刚才我安装sdk api的时候只安装了8和16。
-
$ vim vlc-android/AndroidManifest.xml
把android:targetSdkVersion="15"改成android:targetSdkVersion="16"
终于:BUILD SUCCESSFUL
阅读(2388) | 评论(0) | 转发(0) |