硬件环境:PC机一台
操作系统:Ubuntu 12.04(我是Ubuntu+XP双系统)
软件环境:除Ubuntu预装的所有应用,还需要以下工具:git, ant, ccache, sdk, ndk。
其中git,ant和ccache直接使用sudo apt-get install XXX安装即可。
sdk和ndk可以在android developer网站下载,下面给出分别的下载地址:
http://dl.google.com/android/ndk/android-ndk-r9b-linux-x86.tar.bz2
http://dl.google.com/android/adt/adt-bundle-linux-x86-20130917.zip
【注】git, ant, ccache工具的说明可以参考百度/谷歌等网络资料。
1. 在$HOME目录下建立一个Development文件夹,后续我们所有的代码均放到该目录下
2. 将下载好的adt和ndk拷贝到刚才创建的Development文件夹中,并直接解压
tar xf android-ndk-r9b-linux-x86.tar.bz2
unzip adt-bundle-linux-x86-20130917.zip
3. 配置环境变量
设置ANDROID_SDK和ANDROID_NDK环境变量,并添加PATH环境变量中。
修改$HOME/.bashrc文件,在最后面添加如下代码:
4. 下载ijkplayer的代码
因为我们研究的对象ijkplayer是github上的一个开源项目,因此使用git下载其版本管理库:
git clone https://github.com/bbcallen/ijkplayer.git
【注】ijkplayer更多的信息请参考githuab上项目页面:https://github.com/bbcallen/ijkplayer
进入到ijkplayer目录
cd ijkplayer
执行init-android.sh脚本,脚本的主要作用是下载ffmpeg源码。
sh init-android.sh
执行完成后,下载好的ffmpeg源码会放到android/ffmpeg-armv7a目录。进入android目录下,执行compile-ffmpeg.sh脚本即可完成ffmpeg的编译
cd android
sh compile-ffmpeg.sh
然后,在执行compile-ijk.sh脚本,完成ijk部分的编译。
sh compile-ijk.sh
编译后会生成如下的文件:
ijkmediaplayer/libs/armeabi-v7a/libffmpeg.so
ijkmediaplayer/libs/armeabi-v7a/libijkplayer.so
ijkmediaplayer/libs/armeabi-v7a/libijksdl.so
ijkmediaplayer/libs/armeabi-v7a/libijkutil.so
ijkmediaplayer/libs/armeabi-v7a/libstlport_shared.so
打开eclipse(我们刚才下载的adt中除了sdk还有一个配置好的eclipse,位于~/Development/adt-bundle-linux-x86-20130917/eclipse/目录中),打开后直接就可以创建/使用android project。
将位于~/Development/ijkplayer/android/目录的三个android工程导入到eclipse中。其中ijkmediaplayer和ijkmediawidget两个工程编译出来的是jar包和so库,真正可以编译成apk的是ijkmediademo工程。
因为eclipse配置了自动构建,因此导入工程后,即开始自动构建。但是初次构建会失败,报出如下错误:
Cannot run program "ndk-build": Unknown reason
Error: Program "ndk-build" is not found in PATH
而我们明明在命令行,直接输入ndk-build是可以正常使用的,即ndk-build确实是在PATH中,这与当前的error信息不符。结合在windows上的android开发经验,再加上查询其它网络资料,应该是eclipse本身没有配置ndk的原因。
在eclipse-->Preferences-->Android-->NDK中,设置好正确的ndk路径:~/Development/android-ndk-r9b。然后,重新clean project --> build project --> run,即可在手机或者AVD上调试demo应用。