一. 前言
- 首先感谢
fanplayer
作者ck
大神提供的优质项目- 由于在
fanplayer
不够详细,在构建的途中各种踩坑,至此终于完美的构建后了项目,所以将此过程记录下来,供大家学习参考,也给自己留下笔记,以免后续踩坑- 为了避免不必要的麻烦,所以我使用的是
Ubuntu 20.04系统
上进行编译(作为开发者不懂点Linux也说不过去吧~~)
二. 环境准备
NDK
:android-ndk-r13-linux-x86_64.zip
说明:
- 之前搜使用的是
android-ndk-r21b-linux-x86_64.zip
后来编译各种的报错,之后通过ck
大神了解到他用的是r13b
- 我是
Ubuntu系统
所以采用的是Linux
版本哦
JDK
,SDK
,git
等其他的一些工具我就不一一说明了, 有需要请参考我另一篇博文
编译ijkplayer最详尽的编译过程教程以及编译过程中的各种坑- 下载代码: https://github.com/rockcarry/fanplayer.git
说明:
由于政策问题, 克隆 github的代码超级的慢,如果直接克隆的话, 估计5个小时都处理不了,还有可能直接克隆失败!
对此有2个办法:
a. 参考我另一篇博文,解决git clone
慢的原因
超级牛逼的骚操作搞定GitHub龟速下载,让你从此告别抓狂.github提速骚操作
b. 使用我的gitee仓库进行下载代码,: https://gitee.com/dreamhai-github/rockcarry-ffmpeg如果你使用了我的这2中方法进行克隆代码的话,需要修改对应的脚本文件…不过也非常简单,
三. 准备编译
1. 配置环境变量
我的软件都放在/usr/local/java
中
# 编辑配置文件/etc/profile
vim /etc/profile
将下面的代码添加到文件末尾
# java
export JAVA_HOME=/usr/local/java/jdk1.8
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=:${JAVA_HOME}/lib:${JRE_HOME}/lib
export PATH=${JAVA_HOME}/bin:$PATH
# set SDK enviroment
export ANDROID_SDK=/usr/local/java/android-sdk-linux
# set ndk environment
# 编译fanplayer 的时候需要用r13b
export ANDROID_NDK=/usr/local/java/android-ndk-r13b
export PATH=$ANDROID_NDK:$PATH
# 这个NDK_HOME不加入PATH也行,因为脚本文件中直接读取了NDK_HOME
export NDK_HOME=/usr/local/java/android-ndk-r13b
下面是全部的配置文件
由于vim /etc/profile
必须是在root
用户才能修改,所以如果在执行的时候修改了用户(比如我,执行的时候使用dreamhia
进行执行的)需要重新执行source /etc/profile
生效配置文件 .
# 立即生效配置文件
source /etc/profile
2. 准备好工作目录(如仓库fanplayer
)
2.1. 由于本次主要是编译Android,所以我们进入到/fanplayer/player-android/ffmpeg
目录
请新核对以下一些情况后在执行脚本.
- 进入此文件夹后,看到两个执行脚本. 可能有些朋友的这两个
.sh
脚本没有可执行文件.所以我们通过以下命令申请可执行文件
# 通过此命令,将此目录下的2个.sh文件,申请可执行权限
chmod -R 777 build*.sh
- 在
build_ffmpeg_for_android_arm.sh
可执行脚本文件中,需要git clone
ffmpeg,而且是github上的路径, 如果直接git clone
下载速度超级慢 . 所以建议修改此脚本(如何处理下载github慢的问题,请查看 第二点,环境准备里面的. 或者直接使用我的仓库:https://gitee.com/dreamhai-github/rockcarry-ffmpeg.git)
使用了此仓库后需要对脚本进行修改 .
请查看修改后的脚本
- 针对不同的
NDK
索要执行的toolchains
路径是不同的(在此处踩坑,踩了很久.不管的排雷)
所以,需要查看一下自己的toolchains
,请直接查看我的配置文件
真正核对后以上几个步骤之后就可以执行脚本了./build_ffmpeg_for_android_arm.sh
,之后就耐心的等着大功告成.
四. 总结:
- 看似很简单,一个脚本的问题,但是这个问题,针对是折腾了好几天. 很多的小坑,在做着的wiki中没有明确说明,也没有温馨提示.所以踩坑了好几天
- 做技术,每一个细节都值得认真对待. 每一个小细节都不能忽视.
- 遇到问题更多的还是要自己来摸索,查看源码,然后在问问大神(大神一般都很忙,而且每个环境都不一样,也没有那么多时间来指点.主要还得看自己的拍错能力!!)