编译ijkplayer最详尽的编译过程教程以及编译过程中的各种坑

一. 摘要

从开始接触ijkplayer,到全流程编译ijkplayer真的是各种的惨痛教训和坑,经历了3天才算成功.
所以把这一路的填坑过程全部记录下来,一方面,下次需要编译的时候直接使用. 另一方面,分享给更多的朋友们.让朋友能够快速的编译.

二. 环境要求以及注意事项

这是我的环境和建议,建议大家可以好好参考,特别是NDK版本
另一方面,我已经将我验证过的所有文件放在百度云,供大家快速下载
下载链接: https://download.csdn.net/download/Dreamhai/13183373
复制这段内容后打开百度网盘手机App,操作更方便哦–来自百度网盘超级会员V7的分享

  1. 虚拟机: VMware Workstation 16 Pro

建议使用比较新的版本,原因:①我最初使用的是VMware 12 安装虚拟机的时候总是显示我电脑没有虚拟设备,经过各种踩坑和设置宿主机的cpu.最终的原因是因为VMware Workstations 版本太低导致

  1. Ubuntu 20.04xxx
  1. 我的镜像文件是ubuntu-20.04.1-desktop-amd64.iso 这个镜像文件选择倒不重要自己随意就好.
    PS: 我安装了2个虚拟机一个desktopserver 这个无所谓
  2. Ubuntu的安装过程要格外注意 , 安装的时候吧宿主机断网. 原因: ①.安装Ubuntu的时候,有一个过程就是安装更新,这一步会安装特别长的时间,有可能一整天都安装不好.断网就是避免无底线的更新. 官网安装速度很快10分钟可以解决

特别注意:
在使用VMware安装虚拟机的分配磁盘大小时,一定要分配大一点. 至少40G+ 我选择了100G
原因: 我第一安装vm的时候就是用了默认的20G 安装完基本环境 sdk , ndk , 下载了代码,准备编译的时候,提示内存空间不足… 然后各种折腾扩容 , 后来由于电脑出了问题 ,也不想折腾扩容,就直接重新创建 , 分配了100G
在这里插入图片描述
在这里插入图片描述

  1. NDK选择 android-ndk-r12b-linux-x86_64.zip
  1. 这个版本的选择非常重要 , 直接影响成败. 官网推荐的是android-ndk-r13b-linux-x86_64.zip但是我实际检测这个NDK不行.
  2. 经过各种了解和群里大佬指导,我使用的是android-ndk-r12b-linux-x86_64.zip
  3. 我听大佬说, 使用android-ndk-r13b-linux-x86_64.zip需要修改脚本文件. 我估计也是.因为最后编译时总是报一个touch: 无法创建 '/home/xxxxxxijkplayer/android/contrib/build/ffmpeg-armv7a/toolchain/touch': 没有那个文件或目录,我猜测跟一下执行脚本,然后做一个文件夹是否存在的判断,使用mkdir -p xxx创建文件夹.但是具体的我没有测试,没时间折腾了.
  1. SDK选择 android-sdk_r24.4.1-linux.tgz
  1. SDK的过程倒还是比较顺利,但是下载的东西太多了.等了很久,
  2. 我使用的是android-sdk_r24.4.1-linux.tgz
  3. 为了避免在Linux下下载速度过慢, 我已经全部打包放在百度网盘了.
  1. 其他软件

相关软件: sudo apt-get update,git , vim,openssh-server,
其他具体的命令, 需要什么的时候就直接安装.

  1. 相关工具
  1. WinSCP : 安装包都是我再我宿主机上,所以通过此工具上传至Ubuntu (这个可以自由选择)
  2. MobaXterm: shell工具

三. 软件安装与环境搭建

1. 初始化系统, 更新系统

> sudo apt-get update

2. 安装vim,openssh-server

# 安装vim
apt install vim
# 安装 net-tools
apt install net-tools
# 安装openssh-server
apt install openssh-server
# 启动ssh
sudo service ssh start

# 安装git
sudo apt install git
# 安装之后,使用命令进行最初的设置,然后进行配置信息的查看:
git config --global user.name "your name" git config --global user.email "youre mail" git config --list

3. 安装JDK配置其环境变量

安装jdk , ndk ,sdk 这些安装包我全是通过WinSCP工具从宿主机传过来的.当然也可以直接通过wget命令下载

将压缩包jdk-8u161-linux-x64.tar.gz复制到安装目录
我这儿是/usr/local/java

# 复制压缩包到指定目录
> cp jdk-8u161-linux-x64.tar.gz /usr/local/java
# 解压压缩包
> tar -zxvf jdk-8u161-linux-x64.tar.gz
# 配置环境变量
> vim /etc/profile

# 添加以下环境变量

# java
export JAVA_HOME=/usr/local/java/jdk1.8.0_161
export JRE_HOME=${JAVA_HOME}/jre
export CLASSPATH=:${JAVA_HOME}/lib:${JRE_HOME}/lib

export PATH=${JAVA_HOME}/bin:$PATH


# 生效环境变量
> source /etc/profile

# 校验是否成功
> java -version

java version "1.8.0_161"
Java(TM) SE Runtime Environment (build 1.8.0_161-b12)
Java HotSpot(TM) 64-Bit Server VM (build 25.161-b12, mixed mode)

4. 配置NDK的环境变量

这个使用了wget命令下载

# 下载安装包
> wget http://dl.google.com/android/android-sdk_r24.2-linux.tgz
# 解压
> tar -xvf android-sdk_r24.2-linux.tgz
# 进入该目录
> cd android-sdk-linux
# 执行命令
> tools/android update sdk --no-ui
# 至于为什么要执行此命令 , 在`SDK Readme.txt`中已经写明

# 配置环境变量
> vim /etc/profile

# 添加以下环境变量

# java
export ANDROID_SDK=/usr/local/java/android-sdk-linux
export PATH=$ANDROID_SDK:$PATH

# 生效环境变量
> source /etc/profile

在这里插入图片描述
在这里插入图片描述

注意:

  1. 执行tools/android update sdk --no-ui命令后,会一次下载android的各种API , 耗时很长,如果不想等待,可以只写及下载我提供的安装包

5. 安装ndk

# 解压 android-ndk-r12b-linux-x86_64.zip
> unzip android-ndk-r12b-linux-x86_64.zip

# 配置环境变量
> vim /etc/profile

# 添加以下环境变量

# set ndk environment
export ANDROID_NDK=/usr/local/java/android-ndk-r12b
export PATH=$ANDROID_NDK:$PATH

# 生效环境变量
> source /etc/profile

# 校验是否生效
> ndk-build --version
GNU Make 4.2.1
为 x86_64-pc-linux-gnu 编译

Copyright (C) 1988-2016 Free Software Foundation, Inc.
许可证:GPLv3+:GNU 通用公共许可证第 3 版或更新版本<http://gnu.org/licenses/gpl.html>。
本软件是自由软件:您可以自由修改和重新发布它。
在法律允许的范围内没有其他保证。

至此已经安装好基础的环境变量,
整体性查看下环境变量:

在这里插入图片描述

四. 编译ijkplayer

说明:
由于github 非常慢 , 再次推荐2中方案

  1. 使用我提供的百度网盘, 缺点: 不会实时更新.
  2. 使用gitee的急速下载仓库: https://gitee.com/mirrors/ijkplayer.git
  3. ijkplayer所需要的的ffmpeg 在gitee中没有备份,所以自己考虑,要么在github上下载

1. 克隆所ijkplayer仓库

使用命令git clone https://github.com/Bilibili/ijkplayer.git ijkplayer-android拷贝ijkplayer到当前目录。
在这里插入图片描述

执行命令cd ijkplayer-android git checkout -B latest k0.8.4
在这里插入图片描述
初始化需要进行编译的代码,使用命令./init-android.sh。 内容较多,我贴多一些初始化的过程图片:在这里插入图片描述

2. 进入ijkplayer阶段

2.1 编译ffmpeg

执行以下命令:cd android/contrib ./compile-ffmepg.sh clean ./compile-ffmpeg.sh all
在这里插入图片描述
在这里插入图片描述

2.2 编译ijkplayer

# 执行以下命令
cd .. ./compile-ijk.sh

在这里插入图片描述
在这里插入图片描述

五. 总结问题

1. 由于github下载速度较慢的问题

  1. 没有其他办法 , 要么自己搭建梯子 , 要么下载gitee上的 .另外就是使用我提供的(我下载了好几个小时,没有搭建梯子…)
  2. 由于ffmpeg也是已经下载好的 , 所以在执行init-android.sh的时候要进行修改:①. 注释掉31行,拉取方从github拉取代码(看下面截图) ②. 将已下载好的目录,复制到 /extra 并且要注意ffmpeg的大小写(具体为什么要复制到/extra目录,请查看执行脚本逻辑)
    在这里插入图片描述
    在这里插入图片描述

2. 因NDK版本问题导致的异常

  1. 我首次使用的是android-ndk-r13b-linux-x86_64.zip, 为什么? 因为这是官网推荐的.但是我使用此版本会报错
    在这里插入图片描述

  2. 之后经过群好友,指点使用了android-ndk-r12b-linux-x86_64.zip圆满解决

总结:

  1. 这一路总来,折腾的太久了,导致睡觉都睡不好,做梦都在想着,哪儿出问题了.从安装虚拟机开始就各种的坑.
  2. 安装虚拟机的时候,分配硬盘空间太小了.导致要扩容. 扩容就要折腾好久.而且当时环境也不太对,所以宁愿重装系统.
  3. 安装虚拟机至少装了4~5此, 因为每次都卡在最后的更新操作 , 从上午开始安装,到下午还没装好 . 最后各种百度,就直接断网处理 . 断网后,安装15–20分钟就搞定了
  4. 然后就是,bilibili的各种仓库代码下载的问题 , 1kb/s , 恶心的一批 . 某个早上睡不着,然后就起床下载,某个瞬间下载速度特别快达到5MB/s 所以把ffmpeg ,ijkplayer 全部都下载了 . 使用自己下载的库,就意味着要逐一的修改执行脚本 . 后来权衡了下 , 只有ffmpeg仓库比较大 ,所以执行改了init-android.sh的代码,修改也很简单,只是注释了拉取库而已,其他的那些库都比较小,还能忍受
  5. 这也是最大的一个坑 , 使用官方推荐的NDK r13b 各种的报错 , 解决 . 原本打算跟一遍编译脚本然后逐一修改 . 后来问了下群友 , 有个大佬说是ndk版本问题 , 换了个ndk直接就解决了.

综上, 不懈的坚持,总算是圆满的解决了,整个流程也非常清楚 , 包括如何编译,编译的逻辑.都全部跟了一遍. 今天总算可以睡个好觉了. 哈哈

2020年11月23日23:08:18

  • 4
    点赞
  • 12
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
### 回答1: 由于Godot引擎本身是使用C++编的,因此可以在Windows环境下使用Visual Studio编译生成ARM Linux可执行文件。 编译过程如下: 1. 首先需要安装Visual Studio和Windows SDK,并配置好编译环境。 2. 下载Godot源代码,并使用scons工具构建Godot。 3. 配置编译选项,设置目标平台为ARM Linux。 4. 编译Godot源代码,生成可执行文件。 5. 将生成的可执行文件部署到目标平台上。 请注意,这个编译过程需要一定的技术知识,如果您不熟悉编译操作,建议您先了解相关知识。 ### 回答2: 在Windows下编译Godot引擎到ARM Linux需要进行一系列步骤。下面是一个简单的教程: 1. 安装必要的软件:首先,您需要安装Git进行版本控制,CMake用于构建工程,以及交叉编译工具链(即arm-linux-gnueabihf)用于生成ARM Linux目标代码。您可以在其官方网站上找到并下载这些软件。 2. 克隆Godot源代码:使用Git工具,在命令行克隆Godot引擎的源代码仓库。执行以下命令:git clone https://github.com/godotengine/godot.git 3. 配置交叉编译工具链:通过设置环境变量或在CMake配置过程指定交叉编译工具链的路径,让CMake知道您想要构建ARM Linux目标。 4. 生成Makefile文件:使用CMake配置和生成Godot引擎的Makefile文件。在命令行进入克隆的Godot源代码目录,并执行以下命令:cmake -B <build_directory> -G "Unix Makefiles" -DCMAKE_BUILD_TYPE=Release。 5. 编译Godot引擎:在步骤4生成的构建目录,执行以下命令编译Godot引擎:cmake --build <build_directory> --config Release。 6. 生成导出模板:在成功编译Godot引擎后,在构建目录执行以下命令来生成ARM Linux的导出模板:scons platform=linuxbsd target=release_debug tools=no。 7. 导出ARM Linux应用程序:根据您的需求,您可以使用Godot编辑器或命令行工具导出ARM Linux的应用程序。导出后,您将获得一个与ARM Linux操作系统兼容的可执行文件。 请注意,这个教程并不是详尽无遗的,并且可能会因不同的配置和源代码版本而有所不同。因此,在进行这个编译过程时,最好参考Godot官方文档的具体指引和要求。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值