由于在使用vlc的过程中发现了关闭资源需要30s的bug,所以准备自己编译一个vlc的最新版本的库来。
环境准备官网wiki
- ubuntu16+
第一步:需要安装好ubuntu,作者是在mac上安装的ubuntu的虚拟机来进行编译的 -
编译环境
sudo apt-get install automake ant autopoint cmake build-essential libtool patch pkg-config protobuf-compiler ragel subversion unzip git openjdk-8-jre openjdk-8-jdk
如果是64位的机子还需要按照
sudo dpkg --add-architecture i386
sudo apt-get update
sudo apt-get install zlib1g:i386 libstdc++6:i386 libc6:i386
sdk
1.下载 android-sutdio
2.如果你不想要as你可以只下载android-sdk-
ndk
android-ndk-r14b-linux-x86_64.zip
一定要下载r14b的版本哦如果出现
make_standalone_toolchain.py failed
这样的问题,就是ndk的问题,你需要检查你使用的ndk是否有问题 -
设置路径
export ANDROID_SDK=/path/to/android-sdk
export ANDROID_NDK=/path/to/android-ndk
export PATH=$PATH:$ANDROID_SDK/platform-tools:$ANDROID_SDK/tools
开始编译
-
获取源代码
git clone https://code.videolan.org/videolan/vlc-android.git
-
执行编译
sh compile.sh -a arm
常见问题
- make_standalone_toolchain.py failed
这是我遇到过的第一个问题,经过查看compile.sh文件之后发现需要执行这个文件然后会在pwd(当前工作目录下)生成文件,但是并没有,后来发现是ndk的版本或者文件缺失问题。 -
Unrecognized syntax identifier "proto3". This parser only recognizes "proto2"
这个问题是proto的版本不对
下载将bin里的文件复制到/usr/bin 中;将include文件夹中的文件全部复制到/usr/include文件家中
sudo cp -r /protoc-3/google/ /usr/include/
sudo cp -r /protoc-3/protoc /usr/bin/
-
LibVLC.java:32: error: cannot find symbol
@SuppressWarnings("unused, JniMissingFunction")
^
symbol: variable O
location: class VERSION_CODES
Note: /home/parallels/Workspace/vlc-android-sample/libvlc-android-samples/vlc-android/libvlc/src/org/videolan/libvlc/VLCObject.java uses unchecked or unsafe operations.
Note: Recompile with -Xlint:unchecked for details.
1 error
:libvlc:compileReleaseJavaWithJavac FAILED
起初我以为是SuppressWarnings 没有引入但是后来通过在andridstudio中测试发现应该不是这个问题,后来发现是我手贱改了build号,所以只需要使用最新版本的build版本即可。
***
在最后
我将自己编译的全部的文件以及libvlc.aar等文件上传到github 供大家下载使用
https://github.com/bokmark/VLC-Android