Build VLC for Android project failed on Ubuntu 12.04

后端 未结 5 1802
广开言路
广开言路 2020-12-06 18:16

I want to work on the VLC for Android project. So first I need to compile this project, I follow all the steps on https://wiki.videolan.org/AndroidCompile/ but when I do the

相关标签:
5条回答
  • 2020-12-06 18:47

    I was stuck at:

    contribs: make failed

    I found another guide which helped me get this build working correctly.

    The part that did it for me was the downloading and installation of protobuf3. Once I did that, vlc built for me.

    Here's the snippet from the tutorial that made everything work

    Download:

    https://github.com/google/protobuf/releases/download/v3.1.0/protobuf-cpp-3.1.0.tar.gz
    

    Then do:

    sudo tar zxvf ./protobuf-cpp-3.1.0.tar.gz    # decompression
    cd ./protobuf-3.1.0/    # Extracted folder 
    ./configure    # Run configure 
    make
    make check
    sudo make install
    make clean
    sudo ldconfig  # Update shared  library cache
    

    After this, running:

    ./compile.sh
    

    worked correctly.

    I have rebuilt libvlc on Ubuntu 14.04 since my attempt above on Ubuntu 16.04, and I noticed that this didn't fix my issue for Ubuntu 14.04. Once I created another Ubuntu 16.04 VM, this seamed to do the trick.

    I think it's also related to the gettext program. Libvlc might be requiring a version of gettext only available on 16.04.

    0 讨论(0)
  • 2020-12-06 18:52

    On 64-bit Ubuntu 15.04 (Vivid) is buil succesfull without using Android studio. Is needed only change this line:

    from

    AM_GNU_GETTEXT_VERSION([0.19.3])
    

    to

    AM_GNU_GETTEXT_VERSION([0.19.2])
    

    in

    ./vlc/contrib/contrib-android-arm-linux-androideabi/libgpg-error/configure.ac
    

    after this fail:

    make: *** [.gpg-error] Error 1
    contribs: make failed
    

    As suggested: ozbek.

    0 讨论(0)
  • 2020-12-06 19:03

    You have not mentioned which bit version of Ubuntu you are using and VLC AndroidComile wiki says

    very up-to-date versions of those tools.

    So I went ahead and tested on 64-bit Ubuntu 14.04.

    Here is what I did

    Installed minimum required packages:

    sudo apt-get update
    sudo apt-get install ant autoconf automake autopoint cmake gawk gcc g++ libtool m4 patch pkg-config libprotobuf-dev libprotobuf-c0-dev protobuf-c-compiler ragel subversion unzip
    

    Navigated to VLC Android directory and run:

    ./compile.sh 
    *** No ANDROID_ABI defined architecture: using ARMv7
    inflating: ...
    ...
    
    :wrapper
    
    BUILD SUCCESSFUL
    
    Total time: 4.992 secs
    Downloading https://services.gradle.org/distributions/gradle-2.2.1-bin.zip
    ...........................................................................
    Unzipping /home/<user>/.gradle/wrapper/dists/gradle-2.2.1-bin/88n1whbyjvxg3s40jzz5ur27/gradle-2.2.1-bin.zip to /home/<user>/.gradle/wrapper/dists/gradle-2.2.1-bin/88n1whbyjvxg3s40jzz5ur27
    Set executable permissions for: /home/<user>/.gradle/wrapper/dists/gradle-2.2.1-bin/88n1whbyjvxg3s40jzz5ur27/gradle-2.2.1/bin/gradle
    
    ------------------------------------------------------------
    Gradle 2.2.1
    ------------------------------------------------------------
    
    Build time:   2014-11-24 09:45:35 UTC
    Build number: none
    Revision:     6fcb59c06f43a4e6b1bcb401f7686a8601a1fb4a
    
    Groovy:       2.3.6
    Ant:          Apache Ant(TM) version 1.9.3 compiled on December 23 2013
    JVM:          1.7.0_80 (Oracle Corporation 24.80-b11)
    OS:           Linux 3.13.0-53-generic amd64
    
    VLC source not found, cloning
    Cloning into 'vlc'...
    
    VLC source found
    Configuring
    Lots of configuration and make logs
    ...
    
    make[1]: Leaving directory `/<...>/vlc/android/vlc/extras/tools/cmake'
    touch .cmake
    You are ready to build VLC and its contribs
    Bootstraping
    NOTE: GNU gettext appears to be missing or out-of-date.
    Please install or update GNU gettext.
    Also check if you have cvs, a dependency of autopoint.
    Otherwise, you will not be able to build a source tarball.
    ==============================================================
    
    generating modules/**/Makefile.am
    .....
    + autoreconf --install --force --verbose -I m4
    autoreconf: Entering directory `.'
    autoreconf: running: true --force
    ....
    
    bin/Makefile.am: installing 'autotools/depcomp'
    autoreconf: Leaving directory `.'
    + rm -f po/Makevars.template
    + rm -f stamp-h*
    + set +x
    Successfully bootstrapped
    Building the contribs
    Generating EGL pkg-config file
    Generating GLESv2 pkg-config file
    Guessing build system... x86_64-linux-gnu
    Creating configuration file... config.mak
    Bootstrap completed.
    
    Run "make" to start compilation.
    
    Other targets:
     * make install      same as "make"
     * make prebuilt     fetch and install prebuilt binaries
     * make list         list packages
     * make fetch        fetch required source tarballs
     * make fetch-all    fetch all source tarballs
     * make distclean    clean everything and undo bootstrap
     * make mostlyclean  clean everything except source tarballs
     * make clean        clean everything
     * make package      prepare prebuilt packages
    curl -f -L -- "http://downloads.videolan.org/pub/contrib/a52dec-0.7.4.tar.gz" > "../../contrib/tarballs/a52dec-0.7.4.tar.gz"
    Lots of fetching and cloning
    ...
    
    Lots of configuration and make logs
    ...
    
    Libraries have been installed in:
    /<...>/vlc/android/vlc/contrib/arm-linux-androideabi/lib
    
    If you ever happen to want to link against installed libraries
    in a given directory, LIBDIR, you must either use libtool, and
    specify the full pathname of the library, or use the `-LLIBDIR'
    flag during linking and do at least one of the following:
       - add LIBDIR to the `LD_LIBRARY_PATH' environment variable
         during execution
       - add LIBDIR to the `LD_RUN_PATH' environment variable
         during linking
       - use the `-Wl,-rpath -Wl,LIBDIR' linker flag
       - have your system administrator add LIBDIR to `/etc/ld.so.conf'
    
    See any operating system documentation about shared libraries for
    more information, such as the ld(1) and ld.so(8) manual pages.
    ----------------------------------------------------------------------
    make[4]: Leaving directory `/<...>/vlc/android/vlc/contrib/contrib-android-arm-linux-androideabi/gmp'
    make[3]: Leaving directory `/<...>/vlc/android/vlc/contrib/contrib-android-arm-linux-androideabi/gmp'
    make[2]: Leaving directory `/<...>/vlc/android/vlc/contrib/contrib-android-arm-linux-androideabi/gmp'
    make[1]: Leaving directory `/<...>/vlc/android/vlc/contrib/contrib-android-arm-linux-androideabi/gmp'
    touch .gmp
    contribs: make failed
    

    make kept failing, but everytime with different libs, and I had to repeat ./compile.sh command several times. But after a similar error with zvbi

    make[4]: Leaving directory `/<...>/vlc/android/vlc/contrib/contrib-android-arm-linux-androideabi/zvbi'
    make[3]: Leaving directory `/<...>/vlc/android/vlc/contrib/contrib-android-arm-linux-androideabi/zvbi'
    make[2]: Leaving directory `/<...>/vlc/android/vlc/contrib/contrib-android-arm-linux-androideabi/zvbi'
    make[1]: Leaving directory `/<...>/vlc/android/vlc/contrib/contrib-android-arm-linux-androideabi/zvbi'
    touch .zvbi
    contribs: make failed
    

    There was a different error message this time:

    mkdir -p -- /<...>/vlc/android/vlc/contrib/arm-linux-androideabi/share/aclocal && cd libgpg-error && autoreconf -fiv -I/<...>/vlc/android/vlc/contrib/arm-linux-androideabi/share/aclocal
    autoreconf: Entering directory `.'
    autoreconf: running: autopoint --force
    autopoint: *** The AM_GNU_GETTEXT_VERSION declaration in your configure.ac
                   file requires the infrastructure from gettext-0.19.3 but this version
                   is older. Please upgrade to gettext-0.19.3 or newer.
    autopoint: *** Stop.
    autoreconf: autopoint failed with exit status: 1
    make: *** [.gpg-error] Error 1
    contribs: make failed
    
    $ gettext --version
    gettext (GNU gettext-runtime) 0.18.3
    

    As of this writing even vivid (v0.19.2-2) does not have that high level of gettext. So, I cheated and manually downgraded required gettext version to 0.18:

    $ grep --include=configure.ac -rn AM_GNU_GETTEXT_VERSION .
    ./vlc/configure.ac:439:AM_GNU_GETTEXT_VERSION([0.19.2])
    ./vlc/contrib/contrib-android-arm-linux-androideabi/gnutls/configure.ac:148:AM_GNU_GETTEXT_VERSION([0.18])
    ./vlc/contrib/contrib-android-arm-linux-androideabi/libgpg-error/configure.ac:158:AM_GNU_GETTEXT_VERSION([0.19.3])
    

    One more ./compile.sh and bingo:

    [armeabi-v7a] SharedLibrary  : libvlcjni.so
    [armeabi-v7a] Install        : libvlcjni.so => libs/armeabi-v7a/libvlcjni.so
    rm jni/../../android-libs/libbinder.c jni/../../android-libs/libui.c jni/../../android-libs/libutils.c jni/../../android-libs/libstagefright.c jni/../../android-libs/libcutils.c jni/../../android-libs/libhardware.c jni/../../android-libs/libmedia.c
    make: Leaving directory `/<...>/vlc/android/libvlc'
    Download https://jcenter.bintray.com/com/android/tools/build/gradle/1.2.1/gradle-1.2.1.pom
    ...
    > Configuring > 0/3 projects > root project
    

    But then it hanged there forever (probably, because of conflict in proxy configurations). ps x revealed:

    /bin/sh ./compile.sh
    java -Dorg.gradle.appname=gradlew -classpath /<...>/vlc/android/gradle/wrapper/gradle-wrapper.jar org.gradle.wrapper.GradleWrapperMain assembleVanillaARMv7Debug
    

    So, I decided to cancel Ctrl+C ./compile.sh and try to import the project to Android Studio. Launched the AS and chose "Open an existing Android Studio project". AS also fetched some packages from jcenter and bingo (this time for real)!

    Information:Gradle tasks [:libvlc:generateDebugSources, :libvlc:generateDebugAndroidTestSources, :vlc-android:generateChromeARMv5DebugSources, :vlc-android:generateChromeARMv5DebugAndroidTestSources]
    :libvlc:preBuild UP-TO-DATE
    :libvlc:preDebugBuild UP-TO-DATE
    :libvlc:checkDebugManifest
    :libvlc:prepareDebugDependencies
    :libvlc:compileDebugAidl
    :libvlc:compileDebugRenderscript
    :libvlc:generateDebugBuildConfig
    :libvlc:generateDebugAssets UP-TO-DATE
    :libvlc:mergeDebugAssets
    :libvlc:generateDebugResValues
    :libvlc:generateDebugResources
    :libvlc:packageDebugResources
    :libvlc:processDebugManifest
    :libvlc:processDebugResources
    :libvlc:generateDebugSources
    :libvlc:preDebugAndroidTestBuild UP-TO-DATE
    :libvlc:prepareDebugAndroidTestDependencies
    :libvlc:compileDebugAndroidTestAidl
    :libvlc:compileLint
    :libvlc:copyDebugLint UP-TO-DATE
    :libvlc:mergeDebugProguardFiles
    :libvlc:processDebugJavaRes UP-TO-DATE
    :libvlc:compileDebugJava
    Note: /<...>/vlc/android/libvlc/src/org/videolan/libvlc/LibVlcUtil.java uses or overrides a deprecated API.
    Note: Recompile with -Xlint:deprecation for details.
    Note: /<...>/vlc/android/libvlc/src/org/videolan/libvlc/VLCObject.java uses unchecked or unsafe operations.
    Note: Recompile with -Xlint:unchecked for details.
    :libvlc:packageDebugJar
    :libvlc:compileDebugNdk UP-TO-DATE
    :libvlc:packageDebugJniLibs
    :libvlc:packageDebugLocalJar UP-TO-DATE
    :libvlc:packageDebugRenderscript UP-TO-DATE
    :libvlc:bundleDebug
    :libvlc:compileDebugSources
    :libvlc:assembleDebug
    :libvlc:processDebugAndroidTestManifest
    :libvlc:compileDebugAndroidTestRenderscript
    :libvlc:generateDebugAndroidTestBuildConfig
    :libvlc:generateDebugAndroidTestAssets UP-TO-DATE
    :libvlc:mergeDebugAndroidTestAssets
    :libvlc:generateDebugAndroidTestResValues
    :libvlc:generateDebugAndroidTestResources
    :libvlc:mergeDebugAndroidTestResources
    :libvlc:processDebugAndroidTestResources
    :libvlc:generateDebugAndroidTestSources
    :vlc-android:preBuild UP-TO-DATE
    :vlc-android:preChromeARMv5DebugBuild UP-TO-DATE
    :vlc-android:checkChromeARMv5DebugManifest
    :libvlc:copyReleaseLint UP-TO-DATE
    :libvlc:mergeReleaseProguardFiles
    :libvlc:preReleaseBuild UP-TO-DATE
    :libvlc:checkReleaseManifest
    :libvlc:prepareReleaseDependencies
    :libvlc:compileReleaseAidl
    :libvlc:compileReleaseRenderscript
    :libvlc:generateReleaseBuildConfig
    :libvlc:generateReleaseAssets UP-TO-DATE
    :libvlc:mergeReleaseAssets
    :libvlc:generateReleaseResValues
    :libvlc:generateReleaseResources
    :libvlc:packageReleaseResources
    :libvlc:processReleaseManifest
    :libvlc:processReleaseResources
    :libvlc:generateReleaseSources
    :libvlc:processReleaseJavaRes UP-TO-DATE
    :libvlc:compileReleaseJava
    Note: /<...>/vlc/android/libvlc/src/org/videolan/libvlc/LibVlcUtil.java uses or overrides a deprecated API.
    Note: Recompile with -Xlint:deprecation for details.
    Note: /<...>/vlc/android/libvlc/src/org/videolan/libvlc/VLCObject.java uses unchecked or unsafe operations.
    Note: Recompile with -Xlint:unchecked for details.
    :libvlc:packageReleaseJar
    :libvlc:compileReleaseNdk UP-TO-DATE
    :libvlc:packageReleaseJniLibs
    :libvlc:packageReleaseLocalJar UP-TO-DATE
    :libvlc:packageReleaseRenderscript UP-TO-DATE
    :libvlc:bundleRelease
    :vlc-android:preChromeARMv5ReleaseBuild UP-TO-DATE
    :vlc-android:preChromeARMv6fpuDebugBuild UP-TO-DATE
    :vlc-android:preChromeARMv6fpuReleaseBuild UP-TO-DATE
    :vlc-android:preChromeARMv6nofpuDebugBuild UP-TO-DATE
    :vlc-android:preChromeARMv6nofpuReleaseBuild UP-TO-DATE
    :vlc-android:preChromeARMv7DebugBuild UP-TO-DATE
    :vlc-android:preChromeARMv7ReleaseBuild UP-TO-DATE
    :vlc-android:preChromeARMv8DebugBuild UP-TO-DATE
    :vlc-android:preChromeARMv8ReleaseBuild UP-TO-DATE
    :vlc-android:preChromeMIPS64DebugBuild UP-TO-DATE
    :vlc-android:preChromeMIPS64ReleaseBuild UP-TO-DATE
    :vlc-android:preChromeMIPSDebugBuild UP-TO-DATE
    :vlc-android:preChromeMIPSReleaseBuild UP-TO-DATE
    :vlc-android:preChromeX86DebugBuild UP-TO-DATE
    :vlc-android:preChromeX86ReleaseBuild UP-TO-DATE
    :vlc-android:preChromeX86_64DebugBuild UP-TO-DATE
    :vlc-android:preChromeX86_64ReleaseBuild UP-TO-DATE
    :vlc-android:preTvARMv5DebugBuild UP-TO-DATE
    :vlc-android:preTvARMv5ReleaseBuild UP-TO-DATE
    :vlc-android:preTvARMv6fpuDebugBuild UP-TO-DATE
    :vlc-android:preTvARMv6fpuReleaseBuild UP-TO-DATE
    :vlc-android:preTvARMv6nofpuDebugBuild UP-TO-DATE
    :vlc-android:preTvARMv6nofpuReleaseBuild UP-TO-DATE
    :vlc-android:preTvARMv7DebugBuild UP-TO-DATE
    :vlc-android:preTvARMv7ReleaseBuild UP-TO-DATE
    :vlc-android:preTvARMv8DebugBuild UP-TO-DATE
    :vlc-android:preTvARMv8ReleaseBuild UP-TO-DATE
    :vlc-android:preTvMIPS64DebugBuild UP-TO-DATE
    :vlc-android:preTvMIPS64ReleaseBuild UP-TO-DATE
    :vlc-android:preTvMIPSDebugBuild UP-TO-DATE
    :vlc-android:preTvMIPSReleaseBuild UP-TO-DATE
    :vlc-android:preTvX86DebugBuild UP-TO-DATE
    :vlc-android:preTvX86ReleaseBuild UP-TO-DATE
    :vlc-android:preTvX86_64DebugBuild UP-TO-DATE
    :vlc-android:preTvX86_64ReleaseBuild UP-TO-DATE
    :vlc-android:preVanillaARMv5DebugBuild UP-TO-DATE
    :vlc-android:preVanillaARMv5ReleaseBuild UP-TO-DATE
    :vlc-android:preVanillaARMv6fpuDebugBuild UP-TO-DATE
    :vlc-android:preVanillaARMv6fpuReleaseBuild UP-TO-DATE
    :vlc-android:preVanillaARMv6nofpuDebugBuild UP-TO-DATE
    :vlc-android:preVanillaARMv6nofpuReleaseBuild UP-TO-DATE
    :vlc-android:preVanillaARMv7DebugBuild UP-TO-DATE
    :vlc-android:preVanillaARMv7ReleaseBuild UP-TO-DATE
    :vlc-android:preVanillaARMv8DebugBuild UP-TO-DATE
    :vlc-android:preVanillaARMv8ReleaseBuild UP-TO-DATE
    :vlc-android:preVanillaMIPS64DebugBuild UP-TO-DATE
    :vlc-android:preVanillaMIPS64ReleaseBuild UP-TO-DATE
    :vlc-android:preVanillaMIPSDebugBuild UP-TO-DATE
    :vlc-android:preVanillaMIPSReleaseBuild UP-TO-DATE
    :vlc-android:preVanillaX86DebugBuild UP-TO-DATE
    :vlc-android:preVanillaX86ReleaseBuild UP-TO-DATE
    :vlc-android:preVanillaX86_64DebugBuild UP-TO-DATE
    :vlc-android:preVanillaX86_64ReleaseBuild UP-TO-DATE
    :vlc-android:prepareAndroidLibvlcUnspecifiedLibrary
    :vlc-android:prepareComAndroidSupportAppcompatV72211Library
    :vlc-android:prepareComAndroidSupportCardviewV72211Library
    :vlc-android:prepareComAndroidSupportRecyclerviewV72211Library
    :vlc-android:prepareComAndroidSupportSupportV42211Library
    :vlc-android:prepareChromeARMv5DebugDependencies
    :vlc-android:compileChromeARMv5DebugAidl
    :vlc-android:compileChromeARMv5DebugRenderscript
    :vlc-android:generateChromeARMv5DebugBuildConfig
    :vlc-android:generateChromeARMv5DebugAssets UP-TO-DATE
    :vlc-android:mergeChromeARMv5DebugAssets
    :vlc-android:generateChromeARMv5DebugResValues
    :vlc-android:generateChromeARMv5DebugResources
    :vlc-android:mergeChromeARMv5DebugResources
    :vlc-android:processChromeARMv5DebugManifest
    :vlc-android:processChromeARMv5DebugResources
    warning: string 'advanced_debugging' has no default translation.
    warning: string 'beta_warning' has no default translation.
    warning: string 'enable_iomx' has no default translation.
    warning: string 'enable_wheel_bar' has no default translation.
    warning: string 'filebrowser_title' has no default translation.
    warning: string 'main_prefs_category' has no default translation.
    warning: string 'new_app' has no default translation.
    warning: string 'new_app_go' has no default translation.
    warning: string 'new_app_msg' has no default translation.
    :vlc-android:generateChromeARMv5DebugSources
    :vlc-android:preChromeARMv5DebugAndroidTestBuild UP-TO-DATE
    :vlc-android:prepareChromeARMv5DebugAndroidTestDependencies
    :vlc-android:compileChromeARMv5DebugAndroidTestAidl
    :vlc-android:processChromeARMv5DebugAndroidTestManifest
    :vlc-android:compileChromeARMv5DebugAndroidTestRenderscript
    :vlc-android:generateChromeARMv5DebugAndroidTestBuildConfig
    :vlc-android:generateChromeARMv5DebugAndroidTestAssets UP-TO-DATE
    :vlc-android:mergeChromeARMv5DebugAndroidTestAssets
    :vlc-android:generateChromeARMv5DebugAndroidTestResValues
    :vlc-android:generateChromeARMv5DebugAndroidTestResources
    :vlc-android:mergeChromeARMv5DebugAndroidTestResources
    :vlc-android:processChromeARMv5DebugAndroidTestResources
    :vlc-android:generateChromeARMv5DebugAndroidTestSources
    Information:BUILD SUCCESSFUL
    Information:Total time: 22.922 secs
    Information:0 errors
    Information:0 warnings
    Information:See complete output in console
    

    Pressed Shift+F10 and:

    Android Studio: launch VLC for Android

    Uploading file
    local path: /<...>/vlc/android/vlc-android/build/outputs/apk/VLC-Android-CHROME-1.4.0-ARMv5.apk
    remote path: /data/local/tmp/org.videolan.vlc.debug
    Installing org.videolan.vlc.debug
    DEVICE SHELL COMMAND: pm install -r "/data/local/tmp/org.videolan.vlc.debug"
    pkg: /data/local/tmp/org.videolan.vlc.debug
    Success
    
    Launching application: org.videolan.vlc.debug/org.videolan.vlc.gui.MainActivity.
    DEVICE SHELL COMMAND: am start -n "org.videolan.vlc.debug/org.videolan.vlc.gui.MainActivity" -a android.intent.action.MAIN -c android.intent.category.LAUNCHER
    Starting: Intent { act=android.intent.action.MAIN cat=[android.intent.category.LAUNCHER] cmp=org.videolan.vlc.debug/org.videolan.vlc.gui.MainActivity }
    

    I put abundant information and logs here with the hope that this will be helpful for others.

    0 讨论(0)
  • 2020-12-06 19:12

    Building VLC player is really complex task and takes a lot of time. And error you get it's just first of many errors you'll try to fix on your way.

    I'll suggest to you an easy way - not build VLC by yourself. Main ideas is - if you don't want to modify VLC sources it would be enough to get .so file from original VLC.apk(you could just unzip an apk) and copy org.videolan.libvlc.* files from vlc sources in your project.

    You could check this project to get an idea how it could work.

    0 讨论(0)
  • 2020-12-06 19:12

    After four days of New Year holiday I found the way to build this project. Thanks ozbek and all helps.

    1. I install ubuntu 15.10 again and clone it from https://github.com/hieu19926/vlc Because I can't clone from origin site.

    2. Following wiki of vlc to build, and following ozbek above.

    3. Maybe you will have error of curl, following: curl Failed to connect to localhost port 80 or: https://github.com/rvm/rvm/issues/2989
      That say: $echo ip4 >> ~/.curlrc
      and logout, login again.

    4. After step 2, if you see error of contrib, if it is iconv error, just edit in file: $vi vlc/contrib/src/iconv/rules.mak line 26: comment out this line:

    $(APPLY) $(SRC)/iconv/libiconv-android-ios.patch

    And rebuild, it will run longer than before and successfully

    Now I continue to find how to import libvlc to android studio T_T, Anyone who can remember some lib to install after build success, Please comment or post here for everyone, thanks!

    0 讨论(0)
提交回复
热议问题