我前面一片文字讲的是在windows的cygwin中去编译,那真是各种坑啊,软链接无法识别,x86和86_64的so文件无法编译出来等等,我折腾了几天还是没有在cygwin中完美编译ijkplayer,今天我用了一下同事的ubuntu的电脑,变异ijkplayer-Android真的是很快,很快的。
1.前提:
下面是官方的提示:
<code class="language-xml hljs has-numbering" style="padding: 0px; border-radius: 0px; color: inherit; font-family: "Source Code Pro", monospace;font-size:undefined; display: block; white-space: pre; -ms-word-wrap: normal; box-sizing: border-box;"># install homebrew, git, yasm ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)" brew install git brew install yasm # 需要配置 SDK和NDK路径 # add these lines to your ~/.bash_profile or ~/.profile # export ANDROID_SDK=<span class="hljs-tag" style="color: rgb(0, 102, 102); box-sizing: border-box;"><<span class="hljs-title" style="color: rgb(0, 0, 136); box-sizing: border-box;">your</span> <span class="hljs-attribute" style="color: rgb(102, 0, 102); box-sizing: border-box;">sdk</span> <span class="hljs-attribute" style="color: rgb(102, 0, 102); box-sizing: border-box;">path</span>></span> # export ANDROID_NDK=<span class="hljs-tag" style="color: rgb(0, 102, 102); box-sizing: border-box;"><<span class="hljs-title" style="color: rgb(0, 0, 136); box-sizing: border-box;">your</span> <span class="hljs-attribute" style="color: rgb(102, 0, 102); box-sizing: border-box;">ndk</span> <span class="hljs-attribute" style="color: rgb(102, 0, 102); box-sizing: border-box;">path</span>></span> # Cygwin下需要安装的软件 # on Cygwin (unmaintained) # install git, make, yasm</code><ul class="pre-numbering" style="list-style: none; padding: 6px 0px 40px; left: 0px; top: 0px; width: 50px; text-align: right; border-right-color: rgb(221, 221, 221); border-right-width: 1px; border-right-style: solid; position: absolute; box-sizing: border-box; background-color: rgb(238, 238, 238);"><li style="padding: 0px 5px; box-sizing: border-box;">1</li><li style="padding: 0px 5px; box-sizing: border-box;">2</li><li style="padding: 0px 5px; box-sizing: border-box;">3</li><li style="padding: 0px 5px; box-sizing: border-box;">4</li><li style="padding: 0px 5px; box-sizing: border-box;">5</li><li style="padding: 0px 5px; box-sizing: border-box;">6</li><li style="padding: 0px 5px; box-sizing: border-box;">7</li><li style="padding: 0px 5px; box-sizing: border-box;">8</li><li style="padding: 0px 5px; box-sizing: border-box;">9</li><li style="padding: 0px 5px; box-sizing: border-box;">10</li><li style="padding: 0px 5px; box-sizing: border-box;">11</li></ul><ul class="pre-numbering" style="list-style: none; padding: 6px 0px 40px; left: 0px; top: 0px; width: 50px; text-align: right; border-right-color: rgb(221, 221, 221); border-right-width: 1px; border-right-style: solid; position: absolute; box-sizing: border-box; background-color: rgb(238, 238, 238);"><li style="padding: 0px 5px; box-sizing: border-box;">1</li><li style="padding: 0px 5px; box-sizing: border-box;">2</li><li style="padding: 0px 5px; box-sizing: border-box;">3</li><li style="padding: 0px 5px; box-sizing: border-box;">4</li><li style="padding: 0px 5px; box-sizing: border-box;">5</li><li style="padding: 0px 5px; box-sizing: border-box;">6</li><li style="padding: 0px 5px; box-sizing: border-box;">7</li><li style="padding: 0px 5px; box-sizing: border-box;">8</li><li style="padding: 0px 5px; box-sizing: border-box;">9</li><li style="padding: 0px 5px; box-sizing: border-box;">10</li><li style="padding: 0px 5px; box-sizing: border-box;">11</li></ul>
在ubuntu环境下,进入home/xxx/
xxx代表你的名字,进入目录后按Ctrl+H就可以看到隐藏的文件,你就可以看到:
.bashrc 文件,这里可以配置类似windows下的path环境变量,
打开后加上你的ANDROID_NDK和ANDROID_SDK 路径,我的配置如下:
<code class="language-xml hljs has-numbering" style="padding: 0px; border-radius: 0px; color: inherit; font-family: "Source Code Pro", monospace;font-size:undefined; display: block; white-space: pre; -ms-word-wrap: normal; box-sizing: border-box;">NDK=/home/hudong/platform-tools/android-ndk-r11b export NDK ADB=/home/hudong/Android/Sdk/platform-tools export ADB # 我们的ANDROID_NDK和ANDROID_SDK 路径 ANDROID_NDK=/home/hudong/platform-tools/android-ndk-r11b export ANDROID_NDK ANDROID_SDK=/home/hudong/android-sdk export ANDROID_SDK # 加入到PATH路径 PATH=${PATH}:${NDK}:${ADB}:${ANDROID_NDK}:&{ANDROID_SDK}</code><code class="language-xml hljs has-numbering" style="padding: 0px; border-radius: 0px; color: inherit; font-family: "Source Code Pro", monospace;font-size:undefined; display: block; white-space: pre; -ms-word-wrap: normal; box-sizing: border-box;"> </code><code class="language-xml hljs has-numbering" style="padding: 0px; border-radius: 0px; color: inherit; font-family: "Source Code Pro", monospace;font-size:undefined; display: block; white-space: pre; -ms-word-wrap: normal; box-sizing: border-box;"></code><pre class="prettyprint" style="padding: 5px 5px 5px 60px; border-radius: 0px; border: 1px solid rgba(128, 128, 128, 0.074509); line-height: 1.45; font-family: "Source Code Pro", monospace; margin-top: 0px; margin-bottom: 1.1em; white-space: nowrap; position: relative; -ms-word-break: break-all; -ms-overflow-x: auto; -ms-overflow-y: hidden; -ms-word-wrap: break-word; box-sizing: border-box;" name="code"><code class="language-xml hljs has-numbering" style="padding: 0px; border-radius: 0px; color: inherit; font-family: "Source Code Pro", monospace;font-size:undefined; display: block; white-space: pre; -ms-word-wrap: normal; box-sizing: border-box; background-color: transparent;">NDK=/home/melot/android-ndk-r11b export NDK # 我们的ANDROID_NDK和ANDROID_SDK 路径 ANDROID_NDK=/home/melot/android-ndk-r11b export ANDROID_NDK ANDROID_SDK=/data/android/android-sdk-linux export ANDROID_SDK # 加入到PATH路径 PATH=${PATH}:${NDK}:${ANDROID_NDK}:&{ANDROID_SDK}</code><div> </div>
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9
- 10
- 11
在编译之前我们需要安装一些软件,make我们就不用安装了,make是在cygwin下需要安装的,
至于Git我想大家都安装了吧,要是没有安装的话输入下面的命令就可以安装git和yasm了:
<code class="language-java hljs has-numbering" style="padding: 0px; border-radius: 0px; color: inherit; font-family: "Source Code Pro", monospace;font-size:undefined; display: block; white-space: pre; -ms-word-wrap: normal; box-sizing: border-box;">sudo apt-get update sudo apt-get install git sudo apt-get install yasm</code><ul class="pre-numbering" style="list-style: none; padding: 6px 0px 40px; left: 0px; top: 0px; width: 50px; text-align: right; border-right-color: rgb(221, 221, 221); border-right-width: 1px; border-right-style: solid; position: absolute; box-sizing: border-box; background-color: rgb(238, 238, 238);"><li style="padding: 0px 5px; box-sizing: border-box;">1</li><li style="padding: 0px 5px; box-sizing: border-box;">2</li><li style="padding: 0px 5px; box-sizing: border-box;">3</li></ul><ul class="pre-numbering" style="list-style: none; padding: 6px 0px 40px; left: 0px; top: 0px; width: 50px; text-align: right; border-right-color: rgb(221, 221, 221); border-right-width: 1px; border-right-style: solid; position: absolute; box-sizing: border-box; background-color: rgb(238, 238, 238);"><li style="padding: 0px 5px; box-sizing: border-box;">1</li><li style="padding: 0px 5px; box-sizing: border-box;">2</li><li style="padding: 0px 5px; box-sizing: border-box;">3</li></ul>
2.系统版本:
3.编译步骤:
<code class="language-xml hljs has-numbering" style="padding: 0px; border-radius: 0px; color: inherit; font-family: "Source Code Pro", monospace;font-size:undefined; display: block; white-space: pre; -ms-word-wrap: normal; box-sizing: border-box;"># 直接拉取源代码到本地 git clone https://github.com/Bilibili/ijkplayer.git ijkplayer-android cd ijkplayer-android # 检查更新代码 git checkout -B latest k0.5.1 # 初始化,会把ffmpeg的代码拉取到本地等等操作 ./init-android.sh cd android/contrib ./compile-ffmpeg.sh clean # 编译ffmpeg软解码库 ./compile-ffmpeg.sh all cd .. # 会生成各种版本的so文件 ./compile-ijk.sh all</code><ul class="pre-numbering" style="list-style: none; padding: 6px 0px 40px; left: 0px; top: 0px; width: 50px; text-align: right; border-right-color: rgb(221, 221, 221); border-right-width: 1px; border-right-style: solid; position: absolute; box-sizing: border-box; background-color: rgb(238, 238, 238);"><li style="padding: 0px 5px; box-sizing: border-box;">1</li><li style="padding: 0px 5px; box-sizing: border-box;">2</li><li style="padding: 0px 5px; box-sizing: border-box;">3</li><li style="padding: 0px 5px; box-sizing: border-box;">4</li><li style="padding: 0px 5px; box-sizing: border-box;">5</li><li style="padding: 0px 5px; box-sizing: border-box;">6</li><li style="padding: 0px 5px; box-sizing: border-box;">7</li><li style="padding: 0px 5px; box-sizing: border-box;">8</li><li style="padding: 0px 5px; box-sizing: border-box;">9</li><li style="padding: 0px 5px; box-sizing: border-box;">10</li><li style="padding: 0px 5px; box-sizing: border-box;">11</li><li style="padding: 0px 5px; box-sizing: border-box;">12</li><li style="padding: 0px 5px; box-sizing: border-box;">13</li><li style="padding: 0px 5px; box-sizing: border-box;">14</li><li style="padding: 0px 5px; box-sizing: border-box;">15</li><li style="padding: 0px 5px; box-sizing: border-box;">16</li><li style="padding: 0px 5px; box-sizing: border-box;">17</li><li style="padding: 0px 5px; box-sizing: border-box;">18</li></ul><ul class="pre-numbering" style="list-style: none; padding: 6px 0px 40px; left: 0px; top: 0px; width: 50px; text-align: right; border-right-color: rgb(221, 221, 221); border-right-width: 1px; border-right-style: solid; position: absolute; box-sizing: border-box; background-color: rgb(238, 238, 238);"><li style="padding: 0px 5px; box-sizing: border-box;">1</li><li style="padding: 0px 5px; box-sizing: border-box;">2</li><li style="padding: 0px 5px; box-sizing: border-box;">3</li><li style="padding: 0px 5px; box-sizing: border-box;">4</li><li style="padding: 0px 5px; box-sizing: border-box;">5</li><li style="padding: 0px 5px; box-sizing: border-box;">6</li><li style="padding: 0px 5px; box-sizing: border-box;">7</li><li style="padding: 0px 5px; box-sizing: border-box;">8</li><li style="padding: 0px 5px; box-sizing: border-box;">9</li><li style="padding: 0px 5px; box-sizing: border-box;">10</li><li style="padding: 0px 5px; box-sizing: border-box;">11</li><li style="padding: 0px 5px; box-sizing: border-box;">12</li><li style="padding: 0px 5px; box-sizing: border-box;">13</li><li style="padding: 0px 5px; box-sizing: border-box;">14</li><li style="padding: 0px 5px; box-sizing: border-box;">15</li><li style="padding: 0px 5px; box-sizing: border-box;">16</li><li style="padding: 0px 5px; box-sizing: border-box;">17</li><li style="padding: 0px 5px; box-sizing: border-box;">18</li></ul>
执行./compile-ffmpeg.sh all是编译ffmpeg,需要的时间久一点,只要你的配置和软件安装没有问题你就可以看到:
说明ffmpeg编译成功了,接下来就是编译ijkplayer了。
4.导入Android Studio:
这个不用我说明了吧,跟导入普通的项目是一样的:
5.最新精简源代码:
code地址: https://github.com/Dawish/ijkplayer-demo
精简代码后的目录: