windows下用cygwin编译android版ijkplayer

1. 环境搭建

1.1 安装cygwin,并安装git,make,ysam

具体安装过程网上有很多资料,不再详述。

1.2 android sdk和android ndk下载和安装

参见网上资料

1.3 下载ijkplayer源码

git clone https://github.com/Bilibili/ijkplayer.git ijkplayer
cd ijkplayer
git checkout -B latest k0.3.1

1.4 设置环境变量

在cygwin的home目录下,修改 ~/.bash_profile 或 ~/.profile文件,添加

 export ANDROID_SDK=<your sdk path>
 export ANDROID_NDK=<your ndk path>

其中的路径根据实际情况填写。

2. 编译过程

进入ijkplayer源码根目录

cd config
rm module.sh
ln -s module-default.sh module.sh
#以上是默认的设置,也可以使用
# ln -s module-lite.sh module.sh

回到ijkplayer源码根目录

# 下载ffmpeg源码
./init-android.sh

cd android/contrib
./compile-ffmpeg.sh clean
#编译ffmpeg,,以armv7a架构的cpu代码为例进行编译
./compile-ffmpeg.sh armv7a

#编译ijkplayer
cd ..
./compile-ijk.sh armv7a

如果编译成功的话,会在
F:\\ijkplayer\android\ijkplayer\player-armv7a\src\main\libs\armeabi-v7a下生成三个so库文件
windows下用cygwin编译android版ijkplayer_第1张图片

3. 编译过程中容易出问题的地方

注意:该步容易出问题,我在开始时编译只生成了一个libijkffmpeg.so。原因是F:\\ijkplayer\android\ijkplayer\player-armv7a\src\main\jni下使用了软链接,ijkmedia和android-ndk-prof分别链接到ijkplayer根目录下的/ijkmedia和/ijkprof,而cygwin和android NDK在处理文件夹软链接时似乎有问题,所以并没有执行ijkmedia和ijkprof的编译。

基于以上问题,可以做如下修改

  • 将ijkmedia和ijkprof的makefile文件写在F:\ijkplayer\android\ijkplayer\player-armv7a\src\main\jni\Android.mk
    文件的最后,用include包含进来
    这里写图片描述

  • 删除F:\ijkplayer\android\ijkplayer\player-armv7a\src\main\jni下的ijkmedia和android-ndk-prof

  • 将compile-ijk.sh中生成android-ndk-prof链接文件的部分注释掉
    windows下用cygwin编译android版ijkplayer_第2张图片

4. 将工程导入eclipse中,编译并运行

File -> New -> Project -> Android Project from Existing Code
Select android/ and import all project

编译后在真机运行即可

5. 参考文献

ijkplayer的github主页:https://github.com/Bilibili/ijkplayer

你可能感兴趣的:(eclipse,android,git,NDK)