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 sh compile.sh -a armeabi-v7a
at the end I have this error:
contribs: make failed
Error:Execution failed for task ':libvlc:buildDebugARMv5'. > Process 'command './compile-libvlc.sh'' finished with non-zero exit value 1
I am working with Android Studio.
Update
So I have download a ubuntu 12.04 vm and I have build the VLC android project on it. The same error appear but it told me also that my gettext was to old and it should be at 0.19.1 version or later. So I quit the VM and I checked my gettext version (0.18.4) on my real machine, I put the gettext update and it is know 0.19.4 version.
I build the project and contribs: make failed
error is gone but this is know the new error :
FAILURE: Build failed with an exception.
* Where:
Build file '/home/edouard/3DSoundLabs/android/android/build.gradle' line: 16
* What went wrong:
A problem occurred evaluating root project 'android'.
> Failed to apply plugin [id 'android-sdk-manager']
> Specified SDK directory './3DSoundLabs/android/android-sdk-linux/' in 'local.properties' is not found.
* Try:
Run with --stacktrace option to get the stack trace. Run with --info or --debug option to get more log output.
BUILD FAILED
Here is my local.properties and it's seems to be good, I don't understand
local.properties :
sdk.dir=./3DSoundLabs/android/android-sdk-linux/
ndk.dir=./3DSoundLabs/android/android-ndk-r10e/
RESOLVED !!
Okay so for the second error it was just a problem of path, my bad.
Correction :
sdk.dir=../android-sdk-linux/
ndk.dir=../android-ndk-r10e/
So the principal error was my version of gettext that was to old, and I didn't found it at the begening because log did not tell this problem.
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.
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:
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.