1. 程式人生 > >VLC-Android 在ubuntu環境下編譯

VLC-Android 在ubuntu環境下編譯

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