介绍
很多时候,我们在编译ijkplayer SDK
的时候。问题往往会出现在ndk
的版本上。
那么我们如何确保自己下载的ndk
的版本是ijkplayer
支持的呢?由于ijkplayer
的配置已经比较久了。
我们如果下载最新的ndk
之后,能不能让ijkplayer
支持呢?
本篇文章就用来探讨这个话题。
1.ijkplayer 如何判断我们的ndk的?
在ijkplayer的源码: ijkplayer/android/contrib/tools
文件夹中有一个 do-detect-env.sh
文件。
这个文件中进行判断了ijkplayer
编译时需要的ndk
的版本。我们通过vim
命令打开文件后可以看到以下的判断:
详细阅读这个文档之后我们可以知道。ndk 10,11,12,13,14 的版本都支持。
我们如果要想它支持更高的ndk版本。可以直接修改上面的代码。
改为: 11*|12*|13*|14*|15*
等等,往后不断添加就可以了。
2. 下载NDK
我们可以通过android官网下载指定版本的ndk
NDK 下载 | Android NDK | Android Developers (google.cn)
但是上面下载的都是新的,我们还需要更老版本的:官网提供的下载链接在下面
Unsupported Downloads · android/ndk Wiki (github.com)
我列一下Linux环境下的ndk下载地址吧:
-
ndk-r22b:https://dl.google.com/android/repository/android-ndk-r22b-linux-x86_64.zip
-
ndk-r21e:https://dl.google.com/android/repository/android-ndk-r21e-linux-x86_64.zip
-
ndk-r20b:https://dl.google.com/android/repository/android-ndk-r20b-linux-x86_64.zip
-
ndk-r19c:https://dl.google.com/android/repository/android-ndk-r19c-linux-x86_64.zip
-
ndk-r18b:https://dl.google.com/android/repository/android-ndk-r18b-linux-x86_64.zip
-
ndk-r17c:https://dl.google.com/android/repository/android-ndk-r17c-linux-x86_64.zip
-
ndk-r16b:https://dl.google.com/android/repository/android-ndk-r16b-linux-x86_64.zip
-
ndk-r15c:https://dl.google.com/android/repository/android-ndk-r15c-linux-x86_64.zip
-
ndk-r14b:https://dl.google.com/android/repository/android-ndk-r14b-linux-x86_64.zip
-
ndk-r13b:https://dl.google.com/android/repository/android-ndk-r13b-linux-x86_64.zip
-
ndk-r12b:https://dl.google.com/android/repository/android-ndk-r12b-linux-x86_64.zip
-
ndk-r11c:https://dl.google.com/android/repository/android-ndk-r11c-linux-x86_64.zip
我们可以根据需求直接下载相应的ndk。
版本太老的ndk,不支持通过android SDK Manager工具进行下载了。需要我们手动下载。
3. ijkPlayer 读取的NDK的版本是从哪里获取的?
我们有时候还不能确定配置是否正确,那么ijkPlayer 读取的ndk的字段是在哪里呢?
在你的ndk的:source.properties
文件的第二行。
我们打开该文件后可以看到第二行的信息内容:
这个revision
就是ijk
判断的逻辑了。
你可以升级更高的ndk版本进行打包。但如果更高会不会有其他的编译问题,我就不知道了。
由于我本地采用的ndk-13进行的编译。
评论区