Win10 + cygwin64 + ndk 配置ijkplayer android

最近,在开发时,正好遇到了如何在Windows上安装ijkplayer的问题。


ijkplayer是完全基于FFmpeg的 

参考这两篇编译安装ffmpeg的文章,也许对我们有一些帮助:

https://sourceforge.net/p/servestream/code/HEAD/tree/ffmpeg/scripts/arm-build.sh

http://blog.sina.com.cn/s/blog_7a1896ee0100ppdp.html 

但是,仅仅这两篇文章还不能解决我们的问题,这是因为  ijkplayer的编译环境主要是Mac下的UNIX系统,在Mac环境下很好配置。但是

对于需要在Windows下开发的用户,就需要做一些修改了。


首先安装cygwin 配置Android开发环境等, 下载ndk等细节问题就不说了。


直接上干货:

    首先,新建一个文件夹 如Ijkplayer, 用git下载 ijkplayer源码

   在Ijkplayer目录下,创建如下sh脚本 build-android.sh(注意,最好用编辑器如 notepad++创建,然后将文件转换为UNIX格式,也可以直接在cygwin的命令行里, 将文件转换为UNIX格式,就不多说了)

   build-android.sh如下

 
  

#!/bin/bash
#!/bin/bash
cd ijkplayer

#based on the current version
git checkout -B latest k0.5.1


SDK=E:/AS_AndroidSDK/
NDK=E:/Android_NDK/android-ndk-r11c
PREBUILT=$NDK/toolchains/arm-linux-androideabi-4.9/prebuilt/*-x86/bin

echo setting the sdk and/or ndk path
export ANDROID_SDK=$SDK
export ANDROID_NDK=$NDK
export TMPDIR=E:/cygwin64/tmp 

echo config for ffmepg module
cd config
rm module.sh
ln -s module-default.sh module.sh

cd ..
echo download ffmpeg source code
./init-android.sh



#cd ijkplayer



echo intall ffmepg


cd android/contrib
./compile-ffmpeg.sh clean

./compile-ffmpeg.sh all

echo compile ijkplayer

cd ..
./compile-ijk.sh all

以上就是  基本按照官方的脚本实例来写的

用管理员权限打开cygwin.bat ,

进入创建的 Ijkplayer目录

直接执行 ./build-android.sh

但是,可能遇到注意一下问题:

1   arm-linux-androideabi-gcc cannot create a executable file , gcc test failed 

     在sh中,添加export TMPDIR=E:/cygwin64/tmp 这一句是需要的,首先创建相应temp文件夹,不然会抱  gcc 无法创建executable文件错误  


 2   无法找到NDK目录下 *-x86/prebuit/lib/python2.7路径

    由于 我们使用cygwin 环境下编译的,  因此ijk的脚本,会将找cygwin-x86或者cygwin-x86_64等文件夹,执行时找不到。就需要我们在相应目录下,复制已有的  windows-x86和 windows-x86_64文件夹,将其命名为cygwin-x86或者cygwin-x86_64。  凡是报这样错的 都做统一修改即可


3  ndk-build 不能找到

   这是因为Windows版 NDK目录下没有ndk-build,只有ndk-build.cmd

    因此,需要到, ijkplayer/android目录下  修改compile-ijk.sh文件,将 ndk-build改为ndk-build.cmd


4  arm-linux-androideabi-gcc 找不到, 接着出现在ffmpeg-*/output/prebuilt下找不到 libffmpeg.so文件的情况

    这个问题很迷惑,  在直接编译FFmpeg时也遇到过了,一般是 arm-linux-androideabi-gcc.exe的路径找不到。  添加到系统环境中即可,即将

   NDK 目录toolchains\arm-linux-androideabi-4.9\prebuilt\cygwin-x86\bin添加进去

   

    但是即便是这样添加了 还是无济于事,

    因此,可以在ijkplayer/android/contrib/tools里,修改do-compile-ffmpeg.sh

   在 284行的./configure下面 添加 

   --extra-libs=-lgcc \  即可解决改问题


5  以上编译  ffmpeg成功后, 还是出现,ffmpeg-*/output/prebuilt下找不到 libffmpeg.so文件的情况

     这个时候,可以将ijkplayer\android\ijkplayer\ijkplayer-*\src\main\jni\ffmpeg 下的 android.mk文件的  LOCAL_SRC_FILE的$(MY_APP_FFMPEG_OUTPUT_PATH) 路径 改为绝对路径  路径/IjkPlayer/ijkplayer/android/contrib/build/ffmpeg-armv7a/output/即可



你可能感兴趣的:(Android,ndk)