VLC-Android 在ubuntu环境下编译

时间:2023-02-02 15:54:13

由于在使用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