欢迎访问我的网站,希望内容对您有用,感兴趣的可以加入免费知识星球。

vlc for android的编译及使用

Android 迷途小书童 4年前 (2019-12-26) 3846次浏览 0个评论

软硬件环境

  • ubuntu 16.04 64bit
  • Android 5.1.1 TV Box
  • Android studio 2.1.2

概述

VLC是一款大名鼎鼎的流媒体播放器,对本地和流式媒体都支持良好,跨平台,支持当前市面上绝大多数的封装格式及编码格式,最重要的,它还是开源软件。

Android SDK和NDK环境

之前一直有用Android Studio工具,所以这个环境都已经配置好了,在工程配置文件local.properties中会有描述.

ndk.dir=/home/djstava/Workshop/tool/SDK/ndk-bundle
sdk.dir=/home/djstava/Workshop/tool/SDK

如果之前压根就没有配过,那就从头开始,安装Android Studio,再通过android studio分别去安装SDKNDK。拿到了这2个路径,设置到环境变量ANDROID_SDKANDROID_NDK中去.

export ANDROID_NDK=/home/djstava/Workshop/tool/SDK/ndk-bundle
export ANDROID_SDK=/home/djstava/Workshop/tool/SDK
export PATH=$PATH:$ANDROID_SDK/platform-tools:$ANDROID_SDK/tools

建议将上述配置语句写入~/.bashrc文件中,免得每次编译都要去手动配置

安装必备的系统工具包

首先安装一些必备的系统工具,如gitjdk8make

sudo apt-get install automake ant autopoint cmake build-essential libtool patch pkg-config protobuf-compiler ragel subversion unzip git openjdk-8-jdk

编译VLC源码

准备工作就绪,现在开始本文的重头戏.首先还是需要拉下源码

git clone https://code.videolan.org/videolan/vlc-android.git
cd vlc-android
sh compile.sh

compile.sh做了些什么?

查看compile.sh文件,知道脚本会去下载、配置gradle环境(目前的版本是2.14.1),如果执行这个脚本之前跟我一样没有设置ANDROID_ABI环境变量,编译的目标架构就是ARMv7。要修改的话就添加-a参数

sh compile.sh -a <ABI>

其中<ABI>的可选值有

  • armeabi-v7a
  • arm64-v8a
  • x86
  • x86_64
  • MIPS
  • MIPS64

gradle配置的最后会将ANDROID_SDKANDROID_NDK的值写入到vlc-android下的local.properties文件中,将app签名相关的信息写入gradle.properties文件中。

脚本的最后是去下载vlc的源码,然后调用另一个脚本文件compile-libvlc.sh去开始真正的编译。

compile-libvlc.sh做了些什么?

这是最核心的部分,它负责对vlc进行configuremake,这个过程和在Linux系统下去编译软件是一样的,所不同的是这里用的是android NDK的工具集去生成jni编程中需要用到的动态链接库.做纯app的童鞋,可能之前都没有接触过这块,不过不要紧.也许之前你只是单纯的去调用so,现在这部分我们也做了。脚本执行过程中会去下载需要的工具包,请保持网络畅通.

在播放过程中遇到的很多问题,基本上都是要从这一块来找原因,可想而知这部分的重要性了.

漫长的等待(机器性能差)后, apk终于生成了, 位于./vlc-android/build/outputs/apk/VLC-Android-2.1.0-ARMv7.apk

后续的软件升级

前面都是采用git的方式下载源码, 因此软件升级就变得非常容易了, git pull再编译就可以了,这里就不多说了.

参考文献

喜欢 (0)

您必须 登录 才能发表评论!

Ads Blocker Image Powered by Code Help Pro

Ads Blocker Detected!!!

请关闭 Adblock 等类似浏览器插件,然后刷新页面访问,感谢您的支持!

We have detected that you are using extensions to block ads. Please support us by disabling these ads blocker.