Android、iOS ijkplayer编译步骤及相关问题解决

目录
一、iOS
二、
三、导出库文件
一、iOS
基于B站开源代码编译()
:准备一台Mac电脑,本文使用macOS 12.1:安装XCode开发工具,本文使用xcode 13.4.1:安装 、git和yasm软件:打开终端运行窗口,进入一个自己的开发文件夹,执行:git clone-ios:执行命令:cd -ios:执行命令:git-Bk0.8.8 本文是基于k0.8.8分支:执行命令:./init-ios.sh (这一步会完成一些初始化工作,并去拉取代码) 如果操作文件时没有权限,请执行 chmod 777 init-ios.sh 来修改为可读可写权限,下面遇到类似错误,同样方式处理即可
:执行命令:./init-ios-.sh 初始化https相关内容
:执行命令:cd ios (进入iOS文件夹):执行命令:./-.sh all 编译https相关内容:执行命令:./-.sh clean 不必每次都clean 除非有相关修改:执行命令:./-.sh all 编译库,此步骤十分重要,就是基于来封装 关于遇到.sh、-lite.sh 命令行找不到等问题的解决方案 直接来到和ios平级的文件夹下,执行rm .sh 删除.sh然后回到根目录下执行 ./init-.sh即可(此步骤会自动拷贝-lite.sh文件内容到.sh)
关于遇到:error:.arch armv7-a的报错的解决方案 方案一、删除armv7(32位)相关架构的编译代码,以上的手机都是64位的cup架构了,应用商店也不在支持armv7(32),因此支持删除也是可以的,具体实现如下
修改 ios文件夹下-.sh
第24行 改为: K="arm64 i386 "
第120行 改为: if [ ""=""?o"" = "arm64" ]; then
第159行 改为: echo " -.sh arm64|i386|"
方案二、兼容armv7 到ios/tools文件夹下,修改do--.sh文件在187行(行数可能会变化,找这行代码为准 :="xcrun-sdk$")下面添加如下内容:
echo"-----mv7----------begin"
if["$"="arm64"]
then
FF_AS="gas-.pl---$"
else
FF_AS="gas-.pl--$"
fi
echo"-----mv7----------end"关于缓存问题的解决方案: 执行./-.sh clean 清除之前构建内容即可:编译完成后 用xcode 打开ios//.运行看效果:导出库文件,放到其他项目中使用 二、
基于B站开源代码编译()
由于下直接编译坑太多,建议安装系统进行编译
:安装系统(本文采用-16.04.7--amd64.iso,用安装的),并进入:下载 r10e并解压(官方建议r10e的版本)注意是Linux版本:配置NDK环境变量,注意在下配置(SDK也是这样配置) gedit ~/. #在打开的文件末尾添加两行(SDK 继续在加两行)=/home/zs/-ndk-r10e(路径根据自己情况修改) PATH=$:$ ~/.(在当前环境下使其生效,执行编译命令的窗口中要执行一次这个命令,使环境变量生效)通过执行echo $ 可以查看是否配置生效:安装 git 、 并配置SDK环境变量(如果仅仅是编译出so文件的话,不装AS 不配置SDK也没有问题) 注意是在下面操作 sudo apt输入密码sudo aptgit:打开终端运行窗口,进入一个自己的开发文件夹,执行:git clone-:执行命令:cd -:执行命令:git-Bk0.8.8 本文是基于k0.8.8分支:执行命令:./init-.sh (这一步会完成一些初始化工作,并去拉取代码) 如果操作文件时没有权限,请执行 chmod 777 init-.sh 来修改为可读可写权限,下面遇到类似错误,同样方式处理即可
:执行命令:./init--.sh 初始化https相关内容
:执行命令:cd /:执行命令:./-.sh编译https相关内容,指定了,也可以写all 编译所有的cpu架构:执行命令:./-.sh clean 不必每次都clean 除非有相关修改:执行命令:./-.sh编译库,此步骤十分重要,就是基于来封装 关于遇到.sh、-lite.sh 命令行找不到等问题的解决方案 直接来到和平级的文件夹下,执行rm .sh 删除.sh然后回到根目录下执行 ./init-.sh即可(此步骤会自动拷贝-lite.sh文件内容到.sh)关于缓存问题的解决方案: 执行./-.sh clean 清除之前构建内容即可:执行命令 cd.. 回到 目录下:执行./-ijk.sh也可以选择all 根据需求来定:拷贝编译生成的so进行使用即可 /home/zs/-///-/src/main/libs/-v7a 三、导出库文件
1、端直接拷贝so和-java-(建议打包成aar)库去使用就可以了
2、这里主要说明下iOS 端
真机下 库打包导出 直接打开ios/工程
edit选择
选择Any iOS然后运行
运行后在中生成一个,这就是真机对于的库文件,show in拷贝出来即可 。

Android、iOS ijkplayer编译步骤及相关问题解决

文章插图
如果没有文件夹,在访达中右键. 显示包内容
打开.文件,然后搜索
将的值复制给,+s保存,再打开项目,你就可以在Xcode中找到目录了模拟器下 库打包导出 如果你是xcode 12 及以上,请先按照下面的合并报错的解决办法来提前配置,避免报错重打参考真机步骤即可,只需要在选择目标设备时把Any iOS改成一个模拟器即可
合并真机与模拟器的库生成最终的库文件 先说明下为啥要合并,真机下的库文件里面只有arm64 armv7等手机上的CPU架构,而模拟器下的有、i386架构通过以上两步我们得到了两个文件,下面我们通过 lipo 命令进行合并 得到最终的库
lipo -create /Users/user/Desktop/ijk-bilibili/build/framework/ipone/IJKMediaFramework.framework/IJKMediaFramework /Users/user/Desktop/ijk-bilibili/build/framework/emulator/IJKMediaFramework.framework/IJKMediaFramework -output /Users/user/Desktop/ijk-bilibili/build/framework/merge/IJKMediaFramework.framework/IJKMediaFramework
要注意命令的格式 lipo - “真机文件路径” “模拟器文件路径” “输出的文件路径”
真机文件路径指的是我们从真机编译出的包(.)里面的,请仔细看命令
模拟器文件路径的是我们从真机编译出的包(.)里面的
输出的文件路径就填真机文件路径就可以,我这里不想把真机库文件给覆盖掉,就复制了一份真机文件,建了个merge文件夹拷贝进去的,大家仔细看我命令就明白了
合并报错的解决办法:
have the same(arm64) and can't be in the same fatfile 此异常一般发生在xcode 12 及 以上,因为模拟器打出来的包也有arm64 所以就冲突了,做一个配置去掉模拟器库中的 arm64,重新打包个库即可
如果打包后在模拟器运行出现找不到相关的文件,或相关报错,请添加以下配置
【Android、iOS ijkplayer编译步骤及相关问题解决】如果你找不到这个选项就点击图中的加号添加上