<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://wiki.videolan.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Dekans</id>
	<title>VideoLAN Wiki - User contributions [en]</title>
	<link rel="self" type="application/atom+xml" href="https://wiki.videolan.org/api.php?action=feedcontributions&amp;feedformat=atom&amp;user=Dekans"/>
	<link rel="alternate" type="text/html" href="https://wiki.videolan.org/Special:Contributions/Dekans/"/>
	<updated>2026-11-04T15:53:31Z</updated>
	<subtitle>User contributions</subtitle>
	<generator>MediaWiki 1.43.11</generator>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=AndroidCompile&amp;diff=62022</id>
		<title>AndroidCompile</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=AndroidCompile&amp;diff=62022"/>
		<updated>2020-03-11T15:01:28Z</updated>

		<summary type="html">&lt;p&gt;Dekans: Undo revision 62019 by Dekans (talk)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page is an introduction to the compilation of &#039;&#039;&#039;VLC for Android&#039;&#039;&#039; on Linux. &lt;br /&gt;
&lt;br /&gt;
==Android Studio, SDK and NDK installation==&lt;br /&gt;
&lt;br /&gt;
=== Requirements  ===&lt;br /&gt;
* You &#039;&#039;&#039;MUST&#039;&#039;&#039; build on Linux (or OSX if you know what you are doing).&lt;br /&gt;
* The following packages &#039;&#039;&#039;MUST&#039;&#039;&#039; must be installed:&lt;br /&gt;
** the GNU autotools: &#039;&#039;autoconf&#039;&#039;, &#039;&#039;libtool&#039;&#039;, &#039;&#039;automake&#039;&#039; and &#039;&#039;make&#039;&#039; (a.k.a. &#039;&#039;gmake&#039;&#039;)&lt;br /&gt;
** ...and their dependencies: &#039;&#039;m4&#039;&#039; and &#039;&#039;gawk&#039;&#039;, &#039;&#039;mawk&#039;&#039; or &#039;&#039;nawk&#039;&#039;,&lt;br /&gt;
** the GNU C and C++ compilers a.k.a. &#039;&#039;gcc&#039;&#039; and &#039;&#039;g++&#039;&#039;,&lt;br /&gt;
** some GNU build utilities: &#039;&#039;pkg-config&#039;&#039; and &#039;&#039;patch&#039;&#039;,&lt;br /&gt;
** the following other build utilities: &#039;&#039;Apache Ant&#039;&#039; (or &#039;&#039;Ant&#039;&#039;), &#039;&#039;cmake&#039;&#039;, &#039;&#039;protobuf&#039;&#039;, &#039;&#039;ragel&#039;&#039;,&lt;br /&gt;
** the Subversion and Git version control systems&lt;br /&gt;
** &#039;&#039;unzip&#039;&#039; and either &#039;&#039;curl&#039;&#039; or &#039;&#039;wget&#039;&#039; for retreiving sources.&lt;br /&gt;
* Very recent versions of some of those tools may be required. At the time of writing, notably gettext 0.19.3 or later is required.&lt;br /&gt;
* If any of the above is missing, expect the build to fail at some point.&lt;br /&gt;
* If targeting an Android-x86 device, &#039;&#039;yasm&#039;&#039; must be installed too.&lt;br /&gt;
&lt;br /&gt;
Precise lists of tools dependencies is listed [https://git.videolan.org/?p=vlc.git;a=blob;f=extras/tools/bootstrap;h=e60e5ebf93e69e7bb731e80d0fbc6ebd1226dfdb;hb=HEAD#l73 here].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color: #ff0000&amp;quot;&amp;gt;&#039;&#039;&#039;64-bit users&#039;&#039;&#039;&amp;lt;/span&amp;gt;: You must install these 32-bit libs as specified here: [[#Can.27t_run_aapt_or_adb_on_Linux_64-bit]]&lt;br /&gt;
&lt;br /&gt;
==== Example on Ubuntu ====&lt;br /&gt;
Install the packages as follow:&lt;br /&gt;
 sudo apt-get install automake ant autopoint cmake build-essential libtool-bin \&lt;br /&gt;
      patch pkg-config protobuf-compiler ragel subversion unzip git \&lt;br /&gt;
     openjdk-8-jre openjdk-8-jdk flex python wget&lt;br /&gt;
&lt;br /&gt;
=== SDK &amp;amp; Android Studio ===&lt;br /&gt;
# Go to [http://developer.android.com/sdk/index.html Android SDK/IDE page].&lt;br /&gt;
# Android Studio is recommended, but not mandatory!&lt;br /&gt;
&lt;br /&gt;
===Android NDK===&lt;br /&gt;
# Check that the SDK installation is correct. &lt;br /&gt;
# Go to the [https://developer.android.com/ndk/downloads/index.html Android NDK page] and download the &#039;&#039;&#039;NDK r21&#039;&#039;&#039; for Linux. &lt;br /&gt;
# Decompress it to install&lt;br /&gt;
&lt;br /&gt;
== Environment setup  ==&lt;br /&gt;
Set &#039;&#039;&#039;$ANDROID_SDK&#039;&#039;&#039; to point to your Android SDK directory &lt;br /&gt;
&lt;br /&gt;
 export ANDROID_SDK=/path/to/android-sdk&lt;br /&gt;
&lt;br /&gt;
Set &#039;&#039;&#039;$ANDROID_NDK&#039;&#039;&#039; to point to your Android NDK directory &lt;br /&gt;
&lt;br /&gt;
 export ANDROID_NDK=/path/to/android-ndk&lt;br /&gt;
&lt;br /&gt;
Add some useful binaries to your &#039;&#039;&#039;$PATH&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
 export PATH=$PATH:$ANDROID_SDK/platform-tools:$ANDROID_SDK/tools&lt;br /&gt;
&lt;br /&gt;
== Building ==&lt;br /&gt;
=== Get VLC Source ===&lt;br /&gt;
Clone the source from the VLC git!&lt;br /&gt;
&lt;br /&gt;
In your &#039;&#039;android&#039;&#039; source folder, run: &lt;br /&gt;
&lt;br /&gt;
 git clone https://code.videolan.org/videolan/vlc-android.git&lt;br /&gt;
&lt;br /&gt;
==== Setup Gradle build system ====&lt;br /&gt;
&lt;br /&gt;
Before using Android studio to compile the app, you must run &#039;&#039;&#039;compile.sh&#039;&#039;&#039; once to set up gradle build system.&lt;br /&gt;
&lt;br /&gt;
It should automatically populate mandatory local.properties and gradle.properties files with:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;local.properties&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 sdk.dir=&amp;lt;SDK path from $ANDROID_SDK&amp;gt;&lt;br /&gt;
 ndk.dir=&amp;lt;NDK path from $ANDROID_NDK&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This sets up gradle to build with correct SDK/NDK.&lt;br /&gt;
&lt;br /&gt;
Once this first compilation has succeeded, you can build from Android Studio with the &#039;&#039;&#039;Run&#039;&#039;&#039; command.&lt;br /&gt;
&lt;br /&gt;
=== Devices ===&lt;br /&gt;
&lt;br /&gt;
Find the ABI for the target device.&lt;br /&gt;
&lt;br /&gt;
* For a normal (2012-2015 consumer phone or tablet) device (e.g. Cortex-A8 or Cortex-A9)&lt;br /&gt;
 &amp;lt;code&amp;gt;armeabi-v7a&amp;lt;/code&amp;gt;&lt;br /&gt;
* For a Tegra2 device (no [[wikipedia:ARM_architecture#Advanced_SIMD_.28NEON.29|NEON]])&lt;br /&gt;
 &amp;lt;code&amp;gt;armeabi-v7a&amp;lt;/code&amp;gt;&lt;br /&gt;
* For an ARMv6 device&lt;br /&gt;
 &amp;lt;code&amp;gt;armeabi&amp;lt;/code&amp;gt;&lt;br /&gt;
* For an ARMv6 device that does not support FPU&lt;br /&gt;
 &amp;lt;code&amp;gt;armeabi-nofpu&amp;lt;/code&amp;gt;&lt;br /&gt;
* For an ARMv5 device or the Android Emulator&lt;br /&gt;
 &amp;lt;code&amp;gt;armeabi-v5&amp;lt;/code&amp;gt;&lt;br /&gt;
* For a x86 device (e.g. Android-x86, Google TV, Logitech TV, Android x86 smartphones, etc)&lt;br /&gt;
 &amp;lt;code&amp;gt;x86&amp;lt;/code&amp;gt;&lt;br /&gt;
* For a MIPS device (i.e. Ainol Novo tablets):&lt;br /&gt;
 &amp;lt;code&amp;gt;mips&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This value must be passed to the compile.sh script&lt;br /&gt;
&lt;br /&gt;
==== Compile ====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Read&#039;&#039;&#039; compile.sh first, as it contains some very useful and important information. Then run it:&lt;br /&gt;
 buildsystem/compile.sh -a &amp;lt;ABI&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039; At this point, you will get an auto-generated debug APK in the vlc-android/build/outputs/apk folder, signed with a debug key.&lt;br /&gt;
&lt;br /&gt;
In order to build a non-debug (release, and &#039;&#039;&#039;unsigned&#039;&#039;&#039;) package:&lt;br /&gt;
 buildsystem/compile.sh release&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039; At this point, you will get an release APK in the same folder.&lt;br /&gt;
&lt;br /&gt;
==== Build LibVLC ====&lt;br /&gt;
&lt;br /&gt;
To build LibVLC, simply pass the -l option:&lt;br /&gt;
 buildsystem/compile.sh -l -a &amp;lt;ABI&amp;gt; -r&lt;br /&gt;
&lt;br /&gt;
.aar archive will be located in libvlc/build/outputs/aar/&lt;br /&gt;
&lt;br /&gt;
==== Gradle tweaks ====&lt;br /&gt;
&lt;br /&gt;
To improve gradle execution time, try these options by writing this in gradle.properties in vlc android project.&lt;br /&gt;
Or directly in your ~/.gradle/gradle.properties&lt;br /&gt;
 org.gradle.parallel=true&lt;br /&gt;
 org.gradle.configureondemand=true&lt;br /&gt;
 # If you have a BUNCH of RAM available&lt;br /&gt;
 org.gradle.daemon=true&lt;br /&gt;
 org.gradle.jvmargs=-Xmx2048M&lt;br /&gt;
&lt;br /&gt;
=== Run ===&lt;br /&gt;
Run it and enjoy!&lt;br /&gt;
&lt;br /&gt;
=== Troubleshooting ===&lt;br /&gt;
==== Compilation error on Dependencies ====&lt;br /&gt;
Sometimes, especially when gradle dependencies have been upgraded, the &#039;&#039;compile.sh&#039;&#039; will fail to refetch dependencies. Just close Android Studio and re-run the script to fix this issue.&lt;br /&gt;
&lt;br /&gt;
== Debugging ==&lt;br /&gt;
Here are some helpful links if you wish to debug VLC on Android:&lt;br /&gt;
* [http://developer.android.com/guide/developing/debugging/ddms.html DDMS] &lt;br /&gt;
* [http://developer.android.com/guide/developing/tools/logcat.html Logcat]&lt;br /&gt;
&lt;br /&gt;
===Native debugging===&lt;br /&gt;
If you run VLC Android and you get a crash that looks something like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
I/DEBUG   (  958): *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***&lt;br /&gt;
I/DEBUG   (  958): Build fingerprint: &#039;MOTO/MBTCA/sesame/XT300:2.1-update1/SESLA_U3_01.71.0/110110:user/release-keys&#039;&lt;br /&gt;
I/DEBUG   (  958): pid: 1733, tid: 1733 &amp;gt;&amp;gt;&amp;gt; org.videolan.vlc &amp;lt;&amp;lt;&amp;lt;&lt;br /&gt;
I/DEBUG   (  958): signal 11 (SIGSEGV), fault addr 4237be3c&lt;br /&gt;
I/DEBUG   (  958):  r0 423640a0  r1 7ece77ac  r2 42bccdac  r3 4237be38&lt;br /&gt;
I/DEBUG   (  958):  r4 00000000  r5 42bccdac  r6 002ed088  r7 002ed018&lt;br /&gt;
I/DEBUG   (  958):  r8 7ece78e8  r9 2bafa844  10 0000000e  fp 7ece794c&lt;br /&gt;
I/DEBUG   (  958):  ip 00002ba0  sp 7ece7784  lr 423652e4  pc 4237be3c  cpsr 60000010&lt;br /&gt;
I/DEBUG   (  958):          #00  pc 0037be3c  /data/data/org.videolan.vlc/lib/libvlcjni.so&lt;br /&gt;
I/DEBUG   (  958):          #01  lr 423652e4  /data/data/org.videolan.vlc/lib/libvlcjni.so&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You have a &#039;&#039;&#039;native crash&#039;&#039;&#039;. To debug it, you need to have compiled VLC as above and installed it on your device. Once your compiled VLC build is on your device, you can find the &#039;&#039;&#039;backtrace&#039;&#039;&#039; as follows:&lt;br /&gt;
&lt;br /&gt;
# Make sure you are in the directory that you checked out VLC-Android in.&lt;br /&gt;
# Migrate the libvlc folders. (Do this every time the code is recompiled)&lt;br /&gt;
## cp -r libvlc/jni vlc-android&lt;br /&gt;
## cp -r libvlc/libs vlc-android&lt;br /&gt;
## cp -r libvlc/obj vlc-android&lt;br /&gt;
## (This is because the libvlc and VLC for Android folders were split yet the debugger needs the object files from both.)&lt;br /&gt;
# cd vlc-android&lt;br /&gt;
# $ANDROID_NDK/ndk-gdb --verbose --force --start&lt;br /&gt;
At this point, lots of stuff will appear:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Android NDK installation path: /opt/android-ndk-r8c&lt;br /&gt;
Using default adb command: /opt/android-sdk-linux_x86/platform-tools/adb&lt;br /&gt;
ADB version found: Android Debug Bridge version 1.0.29&lt;br /&gt;
Using ADB flags: &lt;br /&gt;
Using auto-detected project path: .&lt;br /&gt;
Found package name: org.videolan.vlc&lt;br /&gt;
...bunch of stuff skipped...&lt;br /&gt;
GNU gdb (GDB) 7.3.1-gg2&lt;br /&gt;
Copyright (C) 2011 Free Software Foundation, Inc.&lt;br /&gt;
License GPLv3+: GNU GPL version 3 or later &amp;lt;http://gnu.org/licenses/gpl.html&amp;gt;&lt;br /&gt;
This is free software: you are free to change and redistribute it.&lt;br /&gt;
There is NO WARRANTY, to the extent permitted by law.  Type &amp;quot;show copying&amp;quot;&lt;br /&gt;
and &amp;quot;show warranty&amp;quot; for details.&lt;br /&gt;
This GDB was configured as &amp;quot;--host=x86_64-linux-gnu --target=arm-linux-android&amp;quot;.&lt;br /&gt;
For bug reporting instructions, please see:&lt;br /&gt;
&amp;lt;http://www.gnu.org/software/gdb/bugs/&amp;gt;.&lt;br /&gt;
Remote debugging from host 0.0.0.0&lt;br /&gt;
...bunch of stuff skipped...&lt;br /&gt;
libthread_db:td_ta_new: Victory: We can debug theads!&lt;br /&gt;
warning: Breakpoint address adjusted from 0x400deaa5 to 0x400deaa4.&lt;br /&gt;
0x40107a40 in epoll_wait () from /media/data/vlc_android/vlc-android/obj/local/armeabi/libc.so&lt;br /&gt;
(gdb)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;ol start=&amp;quot;4&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;At this point, type in &amp;quot;continue&amp;quot; and press Enter.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Perform the actions you did to make it crash. It will spit out something like this:&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Program received signal SIGSEGV, Segmentation fault.&lt;br /&gt;
0x401120ae in ?? () from /media/data/vlc_android/vlc-android/obj/local/armeabi/libc.so&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;ol start=&amp;quot;6&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Now, just type in &amp;quot;&#039;&#039;&#039;bt full&#039;&#039;&#039;&amp;quot; (excluding the quotation marks) and press Enter. That is your backtrace that you should give to the developers when they ask for it (possibly on a [http://paste.kde.org/ pastebin], too).&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
(gdb) bt full&lt;br /&gt;
#0  0x401120ae in ?? () from /media/data/vlc_android/vlc-android/obj/local/armeabi/libc.so&lt;br /&gt;
No symbol table info available.&lt;br /&gt;
#1  0x40107bd8 in abort () from /media/data/vlc_android/vlc-android/obj/local/armeabi/libc.so&lt;br /&gt;
No symbol table info available.&lt;br /&gt;
#2  0x40118e6a in __assert2 () from /media/data/vlc_android/vlc-android/obj/local/armeabi/libc.so&lt;br /&gt;
No symbol table info available.&lt;br /&gt;
#3  0x5e0cdfdc in var_SetChecked (p_this=0x40134b94, psz_name=0x5ea2fcb8 &amp;quot;rate&amp;quot;, expected_type=80, val=...) at ../../src/misc/variables.c:711&lt;br /&gt;
        i_ret = 0&lt;br /&gt;
        p_var = &amp;lt;optimized out&amp;gt;&lt;br /&gt;
        oldval = {i_int = 4742037487051810480, b_bool = 176, f_float = 2.27765068e+14, psz_string = 0x574f26b0 &amp;quot;X\270|B\001\001&amp;quot;, p_address = 0x574f26b0, &lt;br /&gt;
          p_object = 0x574f26b0, p_list = 0x574f26b0, i_time = 4742037487051810480, coords = {x = 1464805040, y = 1104091640}}&lt;br /&gt;
        __func__ = &amp;quot;var_SetChecked&amp;quot;&lt;br /&gt;
        p_priv = &amp;lt;optimized out&amp;gt;&lt;br /&gt;
#4  0x5e06dd9c in var_SetFloat (f=1.41421354, psz_name=0x5ea2fcb8 &amp;quot;rate____sample_backtrace&amp;quot;, p_obj=0x0) at ../../include/vlc_variables.h:262&lt;br /&gt;
        val = &amp;lt;optimized out&amp;gt;&lt;br /&gt;
#5  libvlc_media_player_set_rate (p_mi=0x0, rate=1.41421354) at ../../lib/media_player.c:1252&lt;br /&gt;
        p_input_thread = &amp;lt;optimized out&amp;gt;&lt;br /&gt;
#6  0x5de7bd18 in Java_org_videolan_vlc_LibVLC_setRate (env=0x41cf0470, thiz=0x8ab00021, rate=1.41421354) at jni/libvlcjni.c:678&lt;br /&gt;
        mp = 0x0&lt;br /&gt;
#7  0x4076de34 in ?? ()&lt;br /&gt;
No symbol table info available.&lt;br /&gt;
#8  0x4076de34 in ?? ()&lt;br /&gt;
No symbol table info available.&lt;br /&gt;
Backtrace stopped: previous frame identical to this frame (corrupt stack?)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Troubleshooting ==&lt;br /&gt;
=== Outdated Awk ===&lt;br /&gt;
If you receive the error message while building:&lt;br /&gt;
&lt;br /&gt;
 Android NDK: Host &#039;awk&#039; tool is outdated. Please define HOST_AWK to point to Gawk or Nawk !    &lt;br /&gt;
&lt;br /&gt;
The prebuilt version of Awk that comes with the Android NDK is outdated. Defining HOST_AWK in your environment does nothing as the system still tries to just the one that comes with the Android NDK. To get around this issue, simply rename or delete the Awk binary that comes with the Android NDK. For example to move it:&lt;br /&gt;
&lt;br /&gt;
 mv $ANDROID_NDK/prebuilt/linux-x86/bin/awk $ANDROID_NDK/prebuilt/linux-x86/bin/awk.old&lt;br /&gt;
&lt;br /&gt;
=== Can&#039;t find Ant ===&lt;br /&gt;
If you&#039;re new to Ant, please be aware that some Linux distributions don&#039;t install it in the usual spot as with other programs. Try checking to see if the directory /usr/share/java/apache-ant/bin exists and add it to your path.&lt;br /&gt;
&lt;br /&gt;
===Outdated autotools-dev===&lt;br /&gt;
If you get the following error message you may have have an outdated version of autotools-dev:&lt;br /&gt;
  Invalid configuration `arm-linux-androideabi&#039;: system `androideabi&#039; not recognized&lt;br /&gt;
You may first want to check if your distribution has any available updates for this package.  Alternatively, you can manually update your config.guess and config.sub files from here: [http://git.savannah.gnu.org/gitweb/?p=config.git;a=tree].  These files are typically located in /usr/share/misc on Debian based distributions.&lt;br /&gt;
&lt;br /&gt;
===autoreconf: automake failed with exit status: 1===&lt;br /&gt;
 automake: warnings are treated as errors&lt;br /&gt;
 configure.ac:41: warning: The &#039;AM_PROG_MKDIR_P&#039; macro is deprecated, and will soon be removed.&lt;br /&gt;
 configure.ac:41: You should use the Autoconf-provided &#039;AC_PROG_MKDIR_P&#039; macro instead,&lt;br /&gt;
 configure.ac:41: and use &#039;$(MKDIR_P)&#039; instead of &#039;$(mkdir_p)&#039;in your Makefile.am files.&lt;br /&gt;
&lt;br /&gt;
If you are using Automake 1.13 or higher, you must remove -Werror from vlc/contrib/android/gnutls/configure.ac to continue. (First reported in [http://forum.videolan.org/viewtopic.php?f=35&amp;amp;t=108927])&lt;br /&gt;
&lt;br /&gt;
===autoreconf: automake failed with exit status: 1 ===&lt;br /&gt;
 make: *** [dvdnav] Error 1&lt;br /&gt;
 ...&lt;br /&gt;
 ... error: possibly undefined macro: AM_PROG_LIBTOOL&lt;br /&gt;
&lt;br /&gt;
This error may occur when compiling with an older Linux distribution, such as Ubuntu 12.04, that doesn&#039;t meet bootstrap prerequisites. As of 2014-08-09, the master branch for vlc-ports/android.git [http://git.videolan.org/?p=vlc-ports/android.git;a=summary] lacks patch 5199 [https://patches.videolan.org/patch/5199/]. Without the patch, compile.sh builds out dated automake and autoconf that may not access libtool despite presence of a current libtool binary amongst supporting tools and a similar or more recent binary present as part of the OS.&lt;br /&gt;
&lt;br /&gt;
To work around this error, patch the master branch or update the prerequisites. For Ubuntu 12.04, upgrade autoconf, automake, and cmake as dictated by vlc/extras/tools/bootstrap.&lt;br /&gt;
&lt;br /&gt;
===Can&#039;t run aapt or adb on Linux 64-bit===&lt;br /&gt;
You must install the 32-bit libraries of the following libraries, as the precompiled Google binaries depend on them: &#039;&#039;libc6&#039;&#039;, &#039;&#039;libstdc++6&#039;&#039;, and &#039;&#039;zlib&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
New versions of Debian and/or Ubuntu require you to install i386 versions of packages:&lt;br /&gt;
 sudo dpkg --add-architecture i386&lt;br /&gt;
 sudo apt-get update&lt;br /&gt;
 sudo apt-get install zlib1g:i386 libstdc++6:i386 libc6:i386&lt;br /&gt;
&lt;br /&gt;
If you are under &#039;&#039;old versions&#039;&#039; of Ubuntu, install ia32-libs can help you solve this issue.&lt;br /&gt;
 sudo apt-get install ia32-libs&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
* [[Android Report bugs]] - Bug reporting guide for VLC-Android.&lt;br /&gt;
&lt;br /&gt;
[[Category:Building]] [[Category:Android]]&lt;/div&gt;</summary>
		<author><name>Dekans</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=AndroidCompile&amp;diff=62021</id>
		<title>AndroidCompile</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=AndroidCompile&amp;diff=62021"/>
		<updated>2020-03-11T15:01:15Z</updated>

		<summary type="html">&lt;p&gt;Dekans: Undo revision 62020 by Dekans (talk)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page is an introduction to the compilation of &#039;&#039;&#039;VLC for Android&#039;&#039;&#039; on Linux. &lt;br /&gt;
&lt;br /&gt;
==Android Studio, SDK and NDK installation==&lt;br /&gt;
&lt;br /&gt;
=== Requirements  ===&lt;br /&gt;
* You &#039;&#039;&#039;MUST&#039;&#039;&#039; build on Linux (or OSX if you know what you are doing).&lt;br /&gt;
* The following packages &#039;&#039;&#039;MUST&#039;&#039;&#039; must be installed:&lt;br /&gt;
** the GNU autotools: &#039;&#039;autoconf&#039;&#039;, &#039;&#039;libtool&#039;&#039;, &#039;&#039;automake&#039;&#039; and &#039;&#039;make&#039;&#039; (a.k.a. &#039;&#039;gmake&#039;&#039;)&lt;br /&gt;
** ...and their dependencies: &#039;&#039;m4&#039;&#039; and &#039;&#039;gawk&#039;&#039;, &#039;&#039;mawk&#039;&#039; or &#039;&#039;nawk&#039;&#039;,&lt;br /&gt;
** the GNU C and C++ compilers a.k.a. &#039;&#039;gcc&#039;&#039; and &#039;&#039;g++&#039;&#039;,&lt;br /&gt;
** some GNU build utilities: &#039;&#039;pkg-config&#039;&#039; and &#039;&#039;patch&#039;&#039;,&lt;br /&gt;
** the following other build utilities: &#039;&#039;cmake&#039;&#039;, &#039;&#039;protobuf&#039;&#039;, &#039;&#039;ragel&#039;&#039;,&lt;br /&gt;
** the Subversion and Git version control systems&lt;br /&gt;
** &#039;&#039;unzip&#039;&#039; and either &#039;&#039;curl&#039;&#039; or &#039;&#039;wget&#039;&#039; for retreiving sources.&lt;br /&gt;
* Very recent versions of some of those tools may be required. At the time of writing, notably gettext 0.19.3 or later is required.&lt;br /&gt;
* If any of the above is missing, expect the build to fail at some point.&lt;br /&gt;
* If targeting an Android-x86 device, &#039;&#039;yasm&#039;&#039; must be installed too.&lt;br /&gt;
&lt;br /&gt;
Precise lists of tools dependencies is listed [https://git.videolan.org/?p=vlc.git;a=blob;f=extras/tools/bootstrap;h=e60e5ebf93e69e7bb731e80d0fbc6ebd1226dfdb;hb=HEAD#l73 here].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color: #ff0000&amp;quot;&amp;gt;&#039;&#039;&#039;64-bit users&#039;&#039;&#039;&amp;lt;/span&amp;gt;: You must install these 32-bit libs as specified here: [[#Can.27t_run_aapt_or_adb_on_Linux_64-bit]]&lt;br /&gt;
&lt;br /&gt;
==== Example on Ubuntu ====&lt;br /&gt;
Install the packages as follow:&lt;br /&gt;
 sudo apt-get install automake autopoint cmake build-essential libtool-bin \&lt;br /&gt;
      patch pkg-config protobuf-compiler ragel subversion unzip git \&lt;br /&gt;
     openjdk-8-jre openjdk-8-jdk flex python wget&lt;br /&gt;
&lt;br /&gt;
=== SDK &amp;amp; Android Studio ===&lt;br /&gt;
# Go to [http://developer.android.com/sdk/index.html Android SDK/IDE page].&lt;br /&gt;
# Android Studio is recommended, but not mandatory!&lt;br /&gt;
&lt;br /&gt;
===Android NDK===&lt;br /&gt;
# Check that the SDK installation is correct. &lt;br /&gt;
# Go to the [https://developer.android.com/ndk/downloads/index.html Android NDK page] and download the &#039;&#039;&#039;NDK r21&#039;&#039;&#039; for Linux. &lt;br /&gt;
# Decompress it to install&lt;br /&gt;
&lt;br /&gt;
== Environment setup  ==&lt;br /&gt;
Set &#039;&#039;&#039;$ANDROID_SDK&#039;&#039;&#039; to point to your Android SDK directory &lt;br /&gt;
&lt;br /&gt;
 export ANDROID_SDK=/path/to/android-sdk&lt;br /&gt;
&lt;br /&gt;
Set &#039;&#039;&#039;$ANDROID_NDK&#039;&#039;&#039; to point to your Android NDK directory &lt;br /&gt;
&lt;br /&gt;
 export ANDROID_NDK=/path/to/android-ndk&lt;br /&gt;
&lt;br /&gt;
Add some useful binaries to your &#039;&#039;&#039;$PATH&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
 export PATH=$PATH:$ANDROID_SDK/platform-tools:$ANDROID_SDK/tools&lt;br /&gt;
&lt;br /&gt;
== Building ==&lt;br /&gt;
=== Get VLC Source ===&lt;br /&gt;
Clone the source from the VLC git!&lt;br /&gt;
&lt;br /&gt;
In your &#039;&#039;android&#039;&#039; source folder, run: &lt;br /&gt;
&lt;br /&gt;
 git clone https://code.videolan.org/videolan/vlc-android.git&lt;br /&gt;
&lt;br /&gt;
==== Setup Gradle build system ====&lt;br /&gt;
&lt;br /&gt;
Before using Android studio to compile the app, you must run &#039;&#039;&#039;compile.sh&#039;&#039;&#039; once to set up gradle build system.&lt;br /&gt;
&lt;br /&gt;
It should automatically populate mandatory local.properties and gradle.properties files with:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;local.properties&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 sdk.dir=&amp;lt;SDK path from $ANDROID_SDK&amp;gt;&lt;br /&gt;
 ndk.dir=&amp;lt;NDK path from $ANDROID_NDK&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This sets up gradle to build with correct SDK/NDK.&lt;br /&gt;
&lt;br /&gt;
Once this first compilation has succeeded, you can build from Android Studio with the &#039;&#039;&#039;Run&#039;&#039;&#039; command.&lt;br /&gt;
&lt;br /&gt;
=== Devices ===&lt;br /&gt;
&lt;br /&gt;
Find the ABI for the target device.&lt;br /&gt;
&lt;br /&gt;
* For a normal (2012-2015 consumer phone or tablet) device (e.g. Cortex-A8 or Cortex-A9)&lt;br /&gt;
 &amp;lt;code&amp;gt;armeabi-v7a&amp;lt;/code&amp;gt;&lt;br /&gt;
* For a Tegra2 device (no [[wikipedia:ARM_architecture#Advanced_SIMD_.28NEON.29|NEON]])&lt;br /&gt;
 &amp;lt;code&amp;gt;armeabi-v7a&amp;lt;/code&amp;gt;&lt;br /&gt;
* For an ARMv6 device&lt;br /&gt;
 &amp;lt;code&amp;gt;armeabi&amp;lt;/code&amp;gt;&lt;br /&gt;
* For an ARMv6 device that does not support FPU&lt;br /&gt;
 &amp;lt;code&amp;gt;armeabi-nofpu&amp;lt;/code&amp;gt;&lt;br /&gt;
* For an ARMv5 device or the Android Emulator&lt;br /&gt;
 &amp;lt;code&amp;gt;armeabi-v5&amp;lt;/code&amp;gt;&lt;br /&gt;
* For a x86 device (e.g. Android-x86, Google TV, Logitech TV, Android x86 smartphones, etc)&lt;br /&gt;
 &amp;lt;code&amp;gt;x86&amp;lt;/code&amp;gt;&lt;br /&gt;
* For a MIPS device (i.e. Ainol Novo tablets):&lt;br /&gt;
 &amp;lt;code&amp;gt;mips&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This value must be passed to the compile.sh script&lt;br /&gt;
&lt;br /&gt;
==== Compile ====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Read&#039;&#039;&#039; compile.sh first, as it contains some very useful and important information. Then run it:&lt;br /&gt;
 buildsystem/compile.sh -a &amp;lt;ABI&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039; At this point, you will get an auto-generated debug APK in the vlc-android/build/outputs/apk folder, signed with a debug key.&lt;br /&gt;
&lt;br /&gt;
In order to build a non-debug (release, and &#039;&#039;&#039;unsigned&#039;&#039;&#039;) package:&lt;br /&gt;
 buildsystem/compile.sh release&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039; At this point, you will get an release APK in the same folder.&lt;br /&gt;
&lt;br /&gt;
==== Build LibVLC ====&lt;br /&gt;
&lt;br /&gt;
To build LibVLC, simply pass the -l option:&lt;br /&gt;
 buildsystem/compile.sh -l -a &amp;lt;ABI&amp;gt; -r&lt;br /&gt;
&lt;br /&gt;
.aar archive will be located in libvlc/build/outputs/aar/&lt;br /&gt;
&lt;br /&gt;
==== Gradle tweaks ====&lt;br /&gt;
&lt;br /&gt;
To improve gradle execution time, try these options by writing this in gradle.properties in vlc android project.&lt;br /&gt;
Or directly in your ~/.gradle/gradle.properties&lt;br /&gt;
 org.gradle.parallel=true&lt;br /&gt;
 org.gradle.configureondemand=true&lt;br /&gt;
 # If you have a BUNCH of RAM available&lt;br /&gt;
 org.gradle.daemon=true&lt;br /&gt;
 org.gradle.jvmargs=-Xmx2048M&lt;br /&gt;
&lt;br /&gt;
=== Run ===&lt;br /&gt;
Run it and enjoy!&lt;br /&gt;
&lt;br /&gt;
=== Troubleshooting ===&lt;br /&gt;
==== Compilation error on Dependencies ====&lt;br /&gt;
Sometimes, especially when gradle dependencies have been upgraded, the &#039;&#039;compile.sh&#039;&#039; will fail to refetch dependencies. Just close Android Studio and re-run the script to fix this issue.&lt;br /&gt;
&lt;br /&gt;
== Debugging ==&lt;br /&gt;
Here are some helpful links if you wish to debug VLC on Android:&lt;br /&gt;
* [http://developer.android.com/guide/developing/debugging/ddms.html DDMS] &lt;br /&gt;
* [http://developer.android.com/guide/developing/tools/logcat.html Logcat]&lt;br /&gt;
&lt;br /&gt;
===Native debugging===&lt;br /&gt;
If you run VLC Android and you get a crash that looks something like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
I/DEBUG   (  958): *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***&lt;br /&gt;
I/DEBUG   (  958): Build fingerprint: &#039;MOTO/MBTCA/sesame/XT300:2.1-update1/SESLA_U3_01.71.0/110110:user/release-keys&#039;&lt;br /&gt;
I/DEBUG   (  958): pid: 1733, tid: 1733 &amp;gt;&amp;gt;&amp;gt; org.videolan.vlc &amp;lt;&amp;lt;&amp;lt;&lt;br /&gt;
I/DEBUG   (  958): signal 11 (SIGSEGV), fault addr 4237be3c&lt;br /&gt;
I/DEBUG   (  958):  r0 423640a0  r1 7ece77ac  r2 42bccdac  r3 4237be38&lt;br /&gt;
I/DEBUG   (  958):  r4 00000000  r5 42bccdac  r6 002ed088  r7 002ed018&lt;br /&gt;
I/DEBUG   (  958):  r8 7ece78e8  r9 2bafa844  10 0000000e  fp 7ece794c&lt;br /&gt;
I/DEBUG   (  958):  ip 00002ba0  sp 7ece7784  lr 423652e4  pc 4237be3c  cpsr 60000010&lt;br /&gt;
I/DEBUG   (  958):          #00  pc 0037be3c  /data/data/org.videolan.vlc/lib/libvlcjni.so&lt;br /&gt;
I/DEBUG   (  958):          #01  lr 423652e4  /data/data/org.videolan.vlc/lib/libvlcjni.so&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You have a &#039;&#039;&#039;native crash&#039;&#039;&#039;. To debug it, you need to have compiled VLC as above and installed it on your device. Once your compiled VLC build is on your device, you can find the &#039;&#039;&#039;backtrace&#039;&#039;&#039; as follows:&lt;br /&gt;
&lt;br /&gt;
# Make sure you are in the directory that you checked out VLC-Android in.&lt;br /&gt;
# Migrate the libvlc folders. (Do this every time the code is recompiled)&lt;br /&gt;
## cp -r libvlc/jni vlc-android&lt;br /&gt;
## cp -r libvlc/libs vlc-android&lt;br /&gt;
## cp -r libvlc/obj vlc-android&lt;br /&gt;
## (This is because the libvlc and VLC for Android folders were split yet the debugger needs the object files from both.)&lt;br /&gt;
# cd vlc-android&lt;br /&gt;
# $ANDROID_NDK/ndk-gdb --verbose --force --start&lt;br /&gt;
At this point, lots of stuff will appear:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Android NDK installation path: /opt/android-ndk-r8c&lt;br /&gt;
Using default adb command: /opt/android-sdk-linux_x86/platform-tools/adb&lt;br /&gt;
ADB version found: Android Debug Bridge version 1.0.29&lt;br /&gt;
Using ADB flags: &lt;br /&gt;
Using auto-detected project path: .&lt;br /&gt;
Found package name: org.videolan.vlc&lt;br /&gt;
...bunch of stuff skipped...&lt;br /&gt;
GNU gdb (GDB) 7.3.1-gg2&lt;br /&gt;
Copyright (C) 2011 Free Software Foundation, Inc.&lt;br /&gt;
License GPLv3+: GNU GPL version 3 or later &amp;lt;http://gnu.org/licenses/gpl.html&amp;gt;&lt;br /&gt;
This is free software: you are free to change and redistribute it.&lt;br /&gt;
There is NO WARRANTY, to the extent permitted by law.  Type &amp;quot;show copying&amp;quot;&lt;br /&gt;
and &amp;quot;show warranty&amp;quot; for details.&lt;br /&gt;
This GDB was configured as &amp;quot;--host=x86_64-linux-gnu --target=arm-linux-android&amp;quot;.&lt;br /&gt;
For bug reporting instructions, please see:&lt;br /&gt;
&amp;lt;http://www.gnu.org/software/gdb/bugs/&amp;gt;.&lt;br /&gt;
Remote debugging from host 0.0.0.0&lt;br /&gt;
...bunch of stuff skipped...&lt;br /&gt;
libthread_db:td_ta_new: Victory: We can debug theads!&lt;br /&gt;
warning: Breakpoint address adjusted from 0x400deaa5 to 0x400deaa4.&lt;br /&gt;
0x40107a40 in epoll_wait () from /media/data/vlc_android/vlc-android/obj/local/armeabi/libc.so&lt;br /&gt;
(gdb)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;ol start=&amp;quot;4&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;At this point, type in &amp;quot;continue&amp;quot; and press Enter.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Perform the actions you did to make it crash. It will spit out something like this:&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Program received signal SIGSEGV, Segmentation fault.&lt;br /&gt;
0x401120ae in ?? () from /media/data/vlc_android/vlc-android/obj/local/armeabi/libc.so&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;ol start=&amp;quot;6&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Now, just type in &amp;quot;&#039;&#039;&#039;bt full&#039;&#039;&#039;&amp;quot; (excluding the quotation marks) and press Enter. That is your backtrace that you should give to the developers when they ask for it (possibly on a [http://paste.kde.org/ pastebin], too).&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
(gdb) bt full&lt;br /&gt;
#0  0x401120ae in ?? () from /media/data/vlc_android/vlc-android/obj/local/armeabi/libc.so&lt;br /&gt;
No symbol table info available.&lt;br /&gt;
#1  0x40107bd8 in abort () from /media/data/vlc_android/vlc-android/obj/local/armeabi/libc.so&lt;br /&gt;
No symbol table info available.&lt;br /&gt;
#2  0x40118e6a in __assert2 () from /media/data/vlc_android/vlc-android/obj/local/armeabi/libc.so&lt;br /&gt;
No symbol table info available.&lt;br /&gt;
#3  0x5e0cdfdc in var_SetChecked (p_this=0x40134b94, psz_name=0x5ea2fcb8 &amp;quot;rate&amp;quot;, expected_type=80, val=...) at ../../src/misc/variables.c:711&lt;br /&gt;
        i_ret = 0&lt;br /&gt;
        p_var = &amp;lt;optimized out&amp;gt;&lt;br /&gt;
        oldval = {i_int = 4742037487051810480, b_bool = 176, f_float = 2.27765068e+14, psz_string = 0x574f26b0 &amp;quot;X\270|B\001\001&amp;quot;, p_address = 0x574f26b0, &lt;br /&gt;
          p_object = 0x574f26b0, p_list = 0x574f26b0, i_time = 4742037487051810480, coords = {x = 1464805040, y = 1104091640}}&lt;br /&gt;
        __func__ = &amp;quot;var_SetChecked&amp;quot;&lt;br /&gt;
        p_priv = &amp;lt;optimized out&amp;gt;&lt;br /&gt;
#4  0x5e06dd9c in var_SetFloat (f=1.41421354, psz_name=0x5ea2fcb8 &amp;quot;rate____sample_backtrace&amp;quot;, p_obj=0x0) at ../../include/vlc_variables.h:262&lt;br /&gt;
        val = &amp;lt;optimized out&amp;gt;&lt;br /&gt;
#5  libvlc_media_player_set_rate (p_mi=0x0, rate=1.41421354) at ../../lib/media_player.c:1252&lt;br /&gt;
        p_input_thread = &amp;lt;optimized out&amp;gt;&lt;br /&gt;
#6  0x5de7bd18 in Java_org_videolan_vlc_LibVLC_setRate (env=0x41cf0470, thiz=0x8ab00021, rate=1.41421354) at jni/libvlcjni.c:678&lt;br /&gt;
        mp = 0x0&lt;br /&gt;
#7  0x4076de34 in ?? ()&lt;br /&gt;
No symbol table info available.&lt;br /&gt;
#8  0x4076de34 in ?? ()&lt;br /&gt;
No symbol table info available.&lt;br /&gt;
Backtrace stopped: previous frame identical to this frame (corrupt stack?)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Troubleshooting ==&lt;br /&gt;
=== Outdated Awk ===&lt;br /&gt;
If you receive the error message while building:&lt;br /&gt;
&lt;br /&gt;
 Android NDK: Host &#039;awk&#039; tool is outdated. Please define HOST_AWK to point to Gawk or Nawk !    &lt;br /&gt;
&lt;br /&gt;
The prebuilt version of Awk that comes with the Android NDK is outdated. Defining HOST_AWK in your environment does nothing as the system still tries to just the one that comes with the Android NDK. To get around this issue, simply rename or delete the Awk binary that comes with the Android NDK. For example to move it:&lt;br /&gt;
&lt;br /&gt;
 mv $ANDROID_NDK/prebuilt/linux-x86/bin/awk $ANDROID_NDK/prebuilt/linux-x86/bin/awk.old&lt;br /&gt;
&lt;br /&gt;
=== Can&#039;t find Ant ===&lt;br /&gt;
If you&#039;re new to Ant, please be aware that some Linux distributions don&#039;t install it in the usual spot as with other programs. Try checking to see if the directory /usr/share/java/apache-ant/bin exists and add it to your path.&lt;br /&gt;
&lt;br /&gt;
===Outdated autotools-dev===&lt;br /&gt;
If you get the following error message you may have have an outdated version of autotools-dev:&lt;br /&gt;
  Invalid configuration `arm-linux-androideabi&#039;: system `androideabi&#039; not recognized&lt;br /&gt;
You may first want to check if your distribution has any available updates for this package.  Alternatively, you can manually update your config.guess and config.sub files from here: [http://git.savannah.gnu.org/gitweb/?p=config.git;a=tree].  These files are typically located in /usr/share/misc on Debian based distributions.&lt;br /&gt;
&lt;br /&gt;
===autoreconf: automake failed with exit status: 1===&lt;br /&gt;
 automake: warnings are treated as errors&lt;br /&gt;
 configure.ac:41: warning: The &#039;AM_PROG_MKDIR_P&#039; macro is deprecated, and will soon be removed.&lt;br /&gt;
 configure.ac:41: You should use the Autoconf-provided &#039;AC_PROG_MKDIR_P&#039; macro instead,&lt;br /&gt;
 configure.ac:41: and use &#039;$(MKDIR_P)&#039; instead of &#039;$(mkdir_p)&#039;in your Makefile.am files.&lt;br /&gt;
&lt;br /&gt;
If you are using Automake 1.13 or higher, you must remove -Werror from vlc/contrib/android/gnutls/configure.ac to continue. (First reported in [http://forum.videolan.org/viewtopic.php?f=35&amp;amp;t=108927])&lt;br /&gt;
&lt;br /&gt;
===autoreconf: automake failed with exit status: 1 ===&lt;br /&gt;
 make: *** [dvdnav] Error 1&lt;br /&gt;
 ...&lt;br /&gt;
 ... error: possibly undefined macro: AM_PROG_LIBTOOL&lt;br /&gt;
&lt;br /&gt;
This error may occur when compiling with an older Linux distribution, such as Ubuntu 12.04, that doesn&#039;t meet bootstrap prerequisites. As of 2014-08-09, the master branch for vlc-ports/android.git [http://git.videolan.org/?p=vlc-ports/android.git;a=summary] lacks patch 5199 [https://patches.videolan.org/patch/5199/]. Without the patch, compile.sh builds out dated automake and autoconf that may not access libtool despite presence of a current libtool binary amongst supporting tools and a similar or more recent binary present as part of the OS.&lt;br /&gt;
&lt;br /&gt;
To work around this error, patch the master branch or update the prerequisites. For Ubuntu 12.04, upgrade autoconf, automake, and cmake as dictated by vlc/extras/tools/bootstrap.&lt;br /&gt;
&lt;br /&gt;
===Can&#039;t run aapt or adb on Linux 64-bit===&lt;br /&gt;
You must install the 32-bit libraries of the following libraries, as the precompiled Google binaries depend on them: &#039;&#039;libc6&#039;&#039;, &#039;&#039;libstdc++6&#039;&#039;, and &#039;&#039;zlib&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
New versions of Debian and/or Ubuntu require you to install i386 versions of packages:&lt;br /&gt;
 sudo dpkg --add-architecture i386&lt;br /&gt;
 sudo apt-get update&lt;br /&gt;
 sudo apt-get install zlib1g:i386 libstdc++6:i386 libc6:i386&lt;br /&gt;
&lt;br /&gt;
If you are under &#039;&#039;old versions&#039;&#039; of Ubuntu, install ia32-libs can help you solve this issue.&lt;br /&gt;
 sudo apt-get install ia32-libs&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
* [[Android Report bugs]] - Bug reporting guide for VLC-Android.&lt;br /&gt;
&lt;br /&gt;
[[Category:Building]] [[Category:Android]]&lt;/div&gt;</summary>
		<author><name>Dekans</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=AndroidCompile&amp;diff=62020</id>
		<title>AndroidCompile</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=AndroidCompile&amp;diff=62020"/>
		<updated>2020-03-11T15:00:16Z</updated>

		<summary type="html">&lt;p&gt;Dekans: /* Troubleshooting */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page is an introduction to the compilation of &#039;&#039;&#039;VLC for Android&#039;&#039;&#039; on Linux. &lt;br /&gt;
&lt;br /&gt;
==Android Studio, SDK and NDK installation==&lt;br /&gt;
&lt;br /&gt;
=== Requirements  ===&lt;br /&gt;
* You &#039;&#039;&#039;MUST&#039;&#039;&#039; build on Linux (or OSX if you know what you are doing).&lt;br /&gt;
* The following packages &#039;&#039;&#039;MUST&#039;&#039;&#039; must be installed:&lt;br /&gt;
** the GNU autotools: &#039;&#039;autoconf&#039;&#039;, &#039;&#039;libtool&#039;&#039;, &#039;&#039;automake&#039;&#039; and &#039;&#039;make&#039;&#039; (a.k.a. &#039;&#039;gmake&#039;&#039;)&lt;br /&gt;
** ...and their dependencies: &#039;&#039;m4&#039;&#039; and &#039;&#039;gawk&#039;&#039;, &#039;&#039;mawk&#039;&#039; or &#039;&#039;nawk&#039;&#039;,&lt;br /&gt;
** the GNU C and C++ compilers a.k.a. &#039;&#039;gcc&#039;&#039; and &#039;&#039;g++&#039;&#039;,&lt;br /&gt;
** some GNU build utilities: &#039;&#039;pkg-config&#039;&#039; and &#039;&#039;patch&#039;&#039;,&lt;br /&gt;
** the following other build utilities: &#039;&#039;cmake&#039;&#039;, &#039;&#039;protobuf&#039;&#039;, &#039;&#039;ragel&#039;&#039;,&lt;br /&gt;
** the Subversion and Git version control systems&lt;br /&gt;
** &#039;&#039;unzip&#039;&#039; and either &#039;&#039;curl&#039;&#039; or &#039;&#039;wget&#039;&#039; for retreiving sources.&lt;br /&gt;
* Very recent versions of some of those tools may be required. At the time of writing, notably gettext 0.19.3 or later is required.&lt;br /&gt;
* If any of the above is missing, expect the build to fail at some point.&lt;br /&gt;
* If targeting an Android-x86 device, &#039;&#039;yasm&#039;&#039; must be installed too.&lt;br /&gt;
&lt;br /&gt;
Precise lists of tools dependencies is listed [https://git.videolan.org/?p=vlc.git;a=blob;f=extras/tools/bootstrap;h=e60e5ebf93e69e7bb731e80d0fbc6ebd1226dfdb;hb=HEAD#l73 here].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color: #ff0000&amp;quot;&amp;gt;&#039;&#039;&#039;64-bit users&#039;&#039;&#039;&amp;lt;/span&amp;gt;: You must install these 32-bit libs as specified here: [[#Can.27t_run_aapt_or_adb_on_Linux_64-bit]]&lt;br /&gt;
&lt;br /&gt;
==== Example on Ubuntu ====&lt;br /&gt;
Install the packages as follow:&lt;br /&gt;
 sudo apt-get install automake autopoint cmake build-essential libtool-bin \&lt;br /&gt;
      patch pkg-config protobuf-compiler ragel subversion unzip git \&lt;br /&gt;
     openjdk-8-jre openjdk-8-jdk flex python wget&lt;br /&gt;
&lt;br /&gt;
=== SDK &amp;amp; Android Studio ===&lt;br /&gt;
# Go to [http://developer.android.com/sdk/index.html Android SDK/IDE page].&lt;br /&gt;
# Android Studio is recommended, but not mandatory!&lt;br /&gt;
&lt;br /&gt;
===Android NDK===&lt;br /&gt;
# Check that the SDK installation is correct. &lt;br /&gt;
# Go to the [https://developer.android.com/ndk/downloads/index.html Android NDK page] and download the &#039;&#039;&#039;NDK r21&#039;&#039;&#039; for Linux. &lt;br /&gt;
# Decompress it to install&lt;br /&gt;
&lt;br /&gt;
== Environment setup  ==&lt;br /&gt;
Set &#039;&#039;&#039;$ANDROID_SDK&#039;&#039;&#039; to point to your Android SDK directory &lt;br /&gt;
&lt;br /&gt;
 export ANDROID_SDK=/path/to/android-sdk&lt;br /&gt;
&lt;br /&gt;
Set &#039;&#039;&#039;$ANDROID_NDK&#039;&#039;&#039; to point to your Android NDK directory &lt;br /&gt;
&lt;br /&gt;
 export ANDROID_NDK=/path/to/android-ndk&lt;br /&gt;
&lt;br /&gt;
Add some useful binaries to your &#039;&#039;&#039;$PATH&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
 export PATH=$PATH:$ANDROID_SDK/platform-tools:$ANDROID_SDK/tools&lt;br /&gt;
&lt;br /&gt;
== Building ==&lt;br /&gt;
=== Get VLC Source ===&lt;br /&gt;
Clone the source from the VLC git!&lt;br /&gt;
&lt;br /&gt;
In your &#039;&#039;android&#039;&#039; source folder, run: &lt;br /&gt;
&lt;br /&gt;
 git clone https://code.videolan.org/videolan/vlc-android.git&lt;br /&gt;
&lt;br /&gt;
==== Setup Gradle build system ====&lt;br /&gt;
&lt;br /&gt;
Before using Android studio to compile the app, you must run &#039;&#039;&#039;compile.sh&#039;&#039;&#039; once to set up gradle build system.&lt;br /&gt;
&lt;br /&gt;
It should automatically populate mandatory local.properties and gradle.properties files with:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;local.properties&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 sdk.dir=&amp;lt;SDK path from $ANDROID_SDK&amp;gt;&lt;br /&gt;
 ndk.dir=&amp;lt;NDK path from $ANDROID_NDK&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This sets up gradle to build with correct SDK/NDK.&lt;br /&gt;
&lt;br /&gt;
Once this first compilation has succeeded, you can build from Android Studio with the &#039;&#039;&#039;Run&#039;&#039;&#039; command.&lt;br /&gt;
&lt;br /&gt;
=== Devices ===&lt;br /&gt;
&lt;br /&gt;
Find the ABI for the target device.&lt;br /&gt;
&lt;br /&gt;
* For a normal (2012-2015 consumer phone or tablet) device (e.g. Cortex-A8 or Cortex-A9)&lt;br /&gt;
 &amp;lt;code&amp;gt;armeabi-v7a&amp;lt;/code&amp;gt;&lt;br /&gt;
* For a Tegra2 device (no [[wikipedia:ARM_architecture#Advanced_SIMD_.28NEON.29|NEON]])&lt;br /&gt;
 &amp;lt;code&amp;gt;armeabi-v7a&amp;lt;/code&amp;gt;&lt;br /&gt;
* For an ARMv6 device&lt;br /&gt;
 &amp;lt;code&amp;gt;armeabi&amp;lt;/code&amp;gt;&lt;br /&gt;
* For an ARMv6 device that does not support FPU&lt;br /&gt;
 &amp;lt;code&amp;gt;armeabi-nofpu&amp;lt;/code&amp;gt;&lt;br /&gt;
* For an ARMv5 device or the Android Emulator&lt;br /&gt;
 &amp;lt;code&amp;gt;armeabi-v5&amp;lt;/code&amp;gt;&lt;br /&gt;
* For a x86 device (e.g. Android-x86, Google TV, Logitech TV, Android x86 smartphones, etc)&lt;br /&gt;
 &amp;lt;code&amp;gt;x86&amp;lt;/code&amp;gt;&lt;br /&gt;
* For a MIPS device (i.e. Ainol Novo tablets):&lt;br /&gt;
 &amp;lt;code&amp;gt;mips&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This value must be passed to the compile.sh script&lt;br /&gt;
&lt;br /&gt;
==== Compile ====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Read&#039;&#039;&#039; compile.sh first, as it contains some very useful and important information. Then run it:&lt;br /&gt;
 buildsystem/compile.sh -a &amp;lt;ABI&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039; At this point, you will get an auto-generated debug APK in the vlc-android/build/outputs/apk folder, signed with a debug key.&lt;br /&gt;
&lt;br /&gt;
In order to build a non-debug (release, and &#039;&#039;&#039;unsigned&#039;&#039;&#039;) package:&lt;br /&gt;
 buildsystem/compile.sh release&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039; At this point, you will get an release APK in the same folder.&lt;br /&gt;
&lt;br /&gt;
==== Build LibVLC ====&lt;br /&gt;
&lt;br /&gt;
To build LibVLC, simply pass the -l option:&lt;br /&gt;
 buildsystem/compile.sh -l -a &amp;lt;ABI&amp;gt; -r&lt;br /&gt;
&lt;br /&gt;
.aar archive will be located in libvlc/build/outputs/aar/&lt;br /&gt;
&lt;br /&gt;
==== Gradle tweaks ====&lt;br /&gt;
&lt;br /&gt;
To improve gradle execution time, try these options by writing this in gradle.properties in vlc android project.&lt;br /&gt;
Or directly in your ~/.gradle/gradle.properties&lt;br /&gt;
 org.gradle.parallel=true&lt;br /&gt;
 org.gradle.configureondemand=true&lt;br /&gt;
 # If you have a BUNCH of RAM available&lt;br /&gt;
 org.gradle.daemon=true&lt;br /&gt;
 org.gradle.jvmargs=-Xmx2048M&lt;br /&gt;
&lt;br /&gt;
=== Run ===&lt;br /&gt;
Run it and enjoy!&lt;br /&gt;
&lt;br /&gt;
=== Troubleshooting ===&lt;br /&gt;
==== Compilation error on Dependencies ====&lt;br /&gt;
Sometimes, especially when gradle dependencies have been upgraded, the &#039;&#039;compile.sh&#039;&#039; will fail to refetch dependencies. Just close Android Studio and re-run the script to fix this issue.&lt;br /&gt;
&lt;br /&gt;
== Debugging ==&lt;br /&gt;
Here are some helpful links if you wish to debug VLC on Android:&lt;br /&gt;
* [http://developer.android.com/guide/developing/debugging/ddms.html DDMS] &lt;br /&gt;
* [http://developer.android.com/guide/developing/tools/logcat.html Logcat]&lt;br /&gt;
&lt;br /&gt;
===Native debugging===&lt;br /&gt;
If you run VLC Android and you get a crash that looks something like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
I/DEBUG   (  958): *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***&lt;br /&gt;
I/DEBUG   (  958): Build fingerprint: &#039;MOTO/MBTCA/sesame/XT300:2.1-update1/SESLA_U3_01.71.0/110110:user/release-keys&#039;&lt;br /&gt;
I/DEBUG   (  958): pid: 1733, tid: 1733 &amp;gt;&amp;gt;&amp;gt; org.videolan.vlc &amp;lt;&amp;lt;&amp;lt;&lt;br /&gt;
I/DEBUG   (  958): signal 11 (SIGSEGV), fault addr 4237be3c&lt;br /&gt;
I/DEBUG   (  958):  r0 423640a0  r1 7ece77ac  r2 42bccdac  r3 4237be38&lt;br /&gt;
I/DEBUG   (  958):  r4 00000000  r5 42bccdac  r6 002ed088  r7 002ed018&lt;br /&gt;
I/DEBUG   (  958):  r8 7ece78e8  r9 2bafa844  10 0000000e  fp 7ece794c&lt;br /&gt;
I/DEBUG   (  958):  ip 00002ba0  sp 7ece7784  lr 423652e4  pc 4237be3c  cpsr 60000010&lt;br /&gt;
I/DEBUG   (  958):          #00  pc 0037be3c  /data/data/org.videolan.vlc/lib/libvlcjni.so&lt;br /&gt;
I/DEBUG   (  958):          #01  lr 423652e4  /data/data/org.videolan.vlc/lib/libvlcjni.so&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You have a &#039;&#039;&#039;native crash&#039;&#039;&#039;. To debug it, you need to have compiled VLC as above and installed it on your device. Once your compiled VLC build is on your device, you can find the &#039;&#039;&#039;backtrace&#039;&#039;&#039; as follows:&lt;br /&gt;
&lt;br /&gt;
# Make sure you are in the directory that you checked out VLC-Android in.&lt;br /&gt;
# Migrate the libvlc folders. (Do this every time the code is recompiled)&lt;br /&gt;
## cp -r libvlc/jni vlc-android&lt;br /&gt;
## cp -r libvlc/libs vlc-android&lt;br /&gt;
## cp -r libvlc/obj vlc-android&lt;br /&gt;
## (This is because the libvlc and VLC for Android folders were split yet the debugger needs the object files from both.)&lt;br /&gt;
# cd vlc-android&lt;br /&gt;
# $ANDROID_NDK/ndk-gdb --verbose --force --start&lt;br /&gt;
At this point, lots of stuff will appear:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Android NDK installation path: /opt/android-ndk-r8c&lt;br /&gt;
Using default adb command: /opt/android-sdk-linux_x86/platform-tools/adb&lt;br /&gt;
ADB version found: Android Debug Bridge version 1.0.29&lt;br /&gt;
Using ADB flags: &lt;br /&gt;
Using auto-detected project path: .&lt;br /&gt;
Found package name: org.videolan.vlc&lt;br /&gt;
...bunch of stuff skipped...&lt;br /&gt;
GNU gdb (GDB) 7.3.1-gg2&lt;br /&gt;
Copyright (C) 2011 Free Software Foundation, Inc.&lt;br /&gt;
License GPLv3+: GNU GPL version 3 or later &amp;lt;http://gnu.org/licenses/gpl.html&amp;gt;&lt;br /&gt;
This is free software: you are free to change and redistribute it.&lt;br /&gt;
There is NO WARRANTY, to the extent permitted by law.  Type &amp;quot;show copying&amp;quot;&lt;br /&gt;
and &amp;quot;show warranty&amp;quot; for details.&lt;br /&gt;
This GDB was configured as &amp;quot;--host=x86_64-linux-gnu --target=arm-linux-android&amp;quot;.&lt;br /&gt;
For bug reporting instructions, please see:&lt;br /&gt;
&amp;lt;http://www.gnu.org/software/gdb/bugs/&amp;gt;.&lt;br /&gt;
Remote debugging from host 0.0.0.0&lt;br /&gt;
...bunch of stuff skipped...&lt;br /&gt;
libthread_db:td_ta_new: Victory: We can debug theads!&lt;br /&gt;
warning: Breakpoint address adjusted from 0x400deaa5 to 0x400deaa4.&lt;br /&gt;
0x40107a40 in epoll_wait () from /media/data/vlc_android/vlc-android/obj/local/armeabi/libc.so&lt;br /&gt;
(gdb)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;ol start=&amp;quot;4&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;At this point, type in &amp;quot;continue&amp;quot; and press Enter.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Perform the actions you did to make it crash. It will spit out something like this:&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Program received signal SIGSEGV, Segmentation fault.&lt;br /&gt;
0x401120ae in ?? () from /media/data/vlc_android/vlc-android/obj/local/armeabi/libc.so&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;ol start=&amp;quot;6&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Now, just type in &amp;quot;&#039;&#039;&#039;bt full&#039;&#039;&#039;&amp;quot; (excluding the quotation marks) and press Enter. That is your backtrace that you should give to the developers when they ask for it (possibly on a [http://paste.kde.org/ pastebin], too).&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
(gdb) bt full&lt;br /&gt;
#0  0x401120ae in ?? () from /media/data/vlc_android/vlc-android/obj/local/armeabi/libc.so&lt;br /&gt;
No symbol table info available.&lt;br /&gt;
#1  0x40107bd8 in abort () from /media/data/vlc_android/vlc-android/obj/local/armeabi/libc.so&lt;br /&gt;
No symbol table info available.&lt;br /&gt;
#2  0x40118e6a in __assert2 () from /media/data/vlc_android/vlc-android/obj/local/armeabi/libc.so&lt;br /&gt;
No symbol table info available.&lt;br /&gt;
#3  0x5e0cdfdc in var_SetChecked (p_this=0x40134b94, psz_name=0x5ea2fcb8 &amp;quot;rate&amp;quot;, expected_type=80, val=...) at ../../src/misc/variables.c:711&lt;br /&gt;
        i_ret = 0&lt;br /&gt;
        p_var = &amp;lt;optimized out&amp;gt;&lt;br /&gt;
        oldval = {i_int = 4742037487051810480, b_bool = 176, f_float = 2.27765068e+14, psz_string = 0x574f26b0 &amp;quot;X\270|B\001\001&amp;quot;, p_address = 0x574f26b0, &lt;br /&gt;
          p_object = 0x574f26b0, p_list = 0x574f26b0, i_time = 4742037487051810480, coords = {x = 1464805040, y = 1104091640}}&lt;br /&gt;
        __func__ = &amp;quot;var_SetChecked&amp;quot;&lt;br /&gt;
        p_priv = &amp;lt;optimized out&amp;gt;&lt;br /&gt;
#4  0x5e06dd9c in var_SetFloat (f=1.41421354, psz_name=0x5ea2fcb8 &amp;quot;rate____sample_backtrace&amp;quot;, p_obj=0x0) at ../../include/vlc_variables.h:262&lt;br /&gt;
        val = &amp;lt;optimized out&amp;gt;&lt;br /&gt;
#5  libvlc_media_player_set_rate (p_mi=0x0, rate=1.41421354) at ../../lib/media_player.c:1252&lt;br /&gt;
        p_input_thread = &amp;lt;optimized out&amp;gt;&lt;br /&gt;
#6  0x5de7bd18 in Java_org_videolan_vlc_LibVLC_setRate (env=0x41cf0470, thiz=0x8ab00021, rate=1.41421354) at jni/libvlcjni.c:678&lt;br /&gt;
        mp = 0x0&lt;br /&gt;
#7  0x4076de34 in ?? ()&lt;br /&gt;
No symbol table info available.&lt;br /&gt;
#8  0x4076de34 in ?? ()&lt;br /&gt;
No symbol table info available.&lt;br /&gt;
Backtrace stopped: previous frame identical to this frame (corrupt stack?)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Troubleshooting ==&lt;br /&gt;
=== Outdated Awk ===&lt;br /&gt;
If you receive the error message while building:&lt;br /&gt;
&lt;br /&gt;
 Android NDK: Host &#039;awk&#039; tool is outdated. Please define HOST_AWK to point to Gawk or Nawk !    &lt;br /&gt;
&lt;br /&gt;
The prebuilt version of Awk that comes with the Android NDK is outdated. Defining HOST_AWK in your environment does nothing as the system still tries to just the one that comes with the Android NDK. To get around this issue, simply rename or delete the Awk binary that comes with the Android NDK. For example to move it:&lt;br /&gt;
&lt;br /&gt;
 mv $ANDROID_NDK/prebuilt/linux-x86/bin/awk $ANDROID_NDK/prebuilt/linux-x86/bin/awk.old&lt;br /&gt;
&lt;br /&gt;
===Outdated autotools-dev===&lt;br /&gt;
If you get the following error message you may have have an outdated version of autotools-dev:&lt;br /&gt;
  Invalid configuration `arm-linux-androideabi&#039;: system `androideabi&#039; not recognized&lt;br /&gt;
You may first want to check if your distribution has any available updates for this package.  Alternatively, you can manually update your config.guess and config.sub files from here: [http://git.savannah.gnu.org/gitweb/?p=config.git;a=tree].  These files are typically located in /usr/share/misc on Debian based distributions.&lt;br /&gt;
&lt;br /&gt;
===autoreconf: automake failed with exit status: 1===&lt;br /&gt;
 automake: warnings are treated as errors&lt;br /&gt;
 configure.ac:41: warning: The &#039;AM_PROG_MKDIR_P&#039; macro is deprecated, and will soon be removed.&lt;br /&gt;
 configure.ac:41: You should use the Autoconf-provided &#039;AC_PROG_MKDIR_P&#039; macro instead,&lt;br /&gt;
 configure.ac:41: and use &#039;$(MKDIR_P)&#039; instead of &#039;$(mkdir_p)&#039;in your Makefile.am files.&lt;br /&gt;
&lt;br /&gt;
If you are using Automake 1.13 or higher, you must remove -Werror from vlc/contrib/android/gnutls/configure.ac to continue. (First reported in [http://forum.videolan.org/viewtopic.php?f=35&amp;amp;t=108927])&lt;br /&gt;
&lt;br /&gt;
===autoreconf: automake failed with exit status: 1 ===&lt;br /&gt;
 make: *** [dvdnav] Error 1&lt;br /&gt;
 ...&lt;br /&gt;
 ... error: possibly undefined macro: AM_PROG_LIBTOOL&lt;br /&gt;
&lt;br /&gt;
This error may occur when compiling with an older Linux distribution, such as Ubuntu 12.04, that doesn&#039;t meet bootstrap prerequisites. As of 2014-08-09, the master branch for vlc-ports/android.git [http://git.videolan.org/?p=vlc-ports/android.git;a=summary] lacks patch 5199 [https://patches.videolan.org/patch/5199/]. Without the patch, compile.sh builds out dated automake and autoconf that may not access libtool despite presence of a current libtool binary amongst supporting tools and a similar or more recent binary present as part of the OS.&lt;br /&gt;
&lt;br /&gt;
To work around this error, patch the master branch or update the prerequisites. For Ubuntu 12.04, upgrade autoconf, automake, and cmake as dictated by vlc/extras/tools/bootstrap.&lt;br /&gt;
&lt;br /&gt;
===Can&#039;t run aapt or adb on Linux 64-bit===&lt;br /&gt;
You must install the 32-bit libraries of the following libraries, as the precompiled Google binaries depend on them: &#039;&#039;libc6&#039;&#039;, &#039;&#039;libstdc++6&#039;&#039;, and &#039;&#039;zlib&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
New versions of Debian and/or Ubuntu require you to install i386 versions of packages:&lt;br /&gt;
 sudo dpkg --add-architecture i386&lt;br /&gt;
 sudo apt-get update&lt;br /&gt;
 sudo apt-get install zlib1g:i386 libstdc++6:i386 libc6:i386&lt;br /&gt;
&lt;br /&gt;
If you are under &#039;&#039;old versions&#039;&#039; of Ubuntu, install ia32-libs can help you solve this issue.&lt;br /&gt;
 sudo apt-get install ia32-libs&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
* [[Android Report bugs]] - Bug reporting guide for VLC-Android.&lt;br /&gt;
&lt;br /&gt;
[[Category:Building]] [[Category:Android]]&lt;/div&gt;</summary>
		<author><name>Dekans</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=AndroidCompile&amp;diff=62019</id>
		<title>AndroidCompile</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=AndroidCompile&amp;diff=62019"/>
		<updated>2020-03-11T14:59:56Z</updated>

		<summary type="html">&lt;p&gt;Dekans: /* Android Studio, SDK and NDK installation */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page is an introduction to the compilation of &#039;&#039;&#039;VLC for Android&#039;&#039;&#039; on Linux. &lt;br /&gt;
&lt;br /&gt;
==Android Studio, SDK and NDK installation==&lt;br /&gt;
&lt;br /&gt;
=== Requirements  ===&lt;br /&gt;
* You &#039;&#039;&#039;MUST&#039;&#039;&#039; build on Linux (or OSX if you know what you are doing).&lt;br /&gt;
* The following packages &#039;&#039;&#039;MUST&#039;&#039;&#039; must be installed:&lt;br /&gt;
** the GNU autotools: &#039;&#039;autoconf&#039;&#039;, &#039;&#039;libtool&#039;&#039;, &#039;&#039;automake&#039;&#039; and &#039;&#039;make&#039;&#039; (a.k.a. &#039;&#039;gmake&#039;&#039;)&lt;br /&gt;
** ...and their dependencies: &#039;&#039;m4&#039;&#039; and &#039;&#039;gawk&#039;&#039;, &#039;&#039;mawk&#039;&#039; or &#039;&#039;nawk&#039;&#039;,&lt;br /&gt;
** the GNU C and C++ compilers a.k.a. &#039;&#039;gcc&#039;&#039; and &#039;&#039;g++&#039;&#039;,&lt;br /&gt;
** some GNU build utilities: &#039;&#039;pkg-config&#039;&#039; and &#039;&#039;patch&#039;&#039;,&lt;br /&gt;
** the following other build utilities: &#039;&#039;cmake&#039;&#039;, &#039;&#039;protobuf&#039;&#039;, &#039;&#039;ragel&#039;&#039;,&lt;br /&gt;
** the Subversion and Git version control systems&lt;br /&gt;
** &#039;&#039;unzip&#039;&#039; and either &#039;&#039;curl&#039;&#039; or &#039;&#039;wget&#039;&#039; for retreiving sources.&lt;br /&gt;
* Very recent versions of some of those tools may be required. At the time of writing, notably gettext 0.19.3 or later is required.&lt;br /&gt;
* If any of the above is missing, expect the build to fail at some point.&lt;br /&gt;
* If targeting an Android-x86 device, &#039;&#039;yasm&#039;&#039; must be installed too.&lt;br /&gt;
&lt;br /&gt;
Precise lists of tools dependencies is listed [https://git.videolan.org/?p=vlc.git;a=blob;f=extras/tools/bootstrap;h=e60e5ebf93e69e7bb731e80d0fbc6ebd1226dfdb;hb=HEAD#l73 here].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color: #ff0000&amp;quot;&amp;gt;&#039;&#039;&#039;64-bit users&#039;&#039;&#039;&amp;lt;/span&amp;gt;: You must install these 32-bit libs as specified here: [[#Can.27t_run_aapt_or_adb_on_Linux_64-bit]]&lt;br /&gt;
&lt;br /&gt;
==== Example on Ubuntu ====&lt;br /&gt;
Install the packages as follow:&lt;br /&gt;
 sudo apt-get install automake autopoint cmake build-essential libtool-bin \&lt;br /&gt;
      patch pkg-config protobuf-compiler ragel subversion unzip git \&lt;br /&gt;
     openjdk-8-jre openjdk-8-jdk flex python wget&lt;br /&gt;
&lt;br /&gt;
=== SDK &amp;amp; Android Studio ===&lt;br /&gt;
# Go to [http://developer.android.com/sdk/index.html Android SDK/IDE page].&lt;br /&gt;
# Android Studio is recommended, but not mandatory!&lt;br /&gt;
&lt;br /&gt;
===Android NDK===&lt;br /&gt;
# Check that the SDK installation is correct. &lt;br /&gt;
# Go to the [https://developer.android.com/ndk/downloads/index.html Android NDK page] and download the &#039;&#039;&#039;NDK r21&#039;&#039;&#039; for Linux. &lt;br /&gt;
# Decompress it to install&lt;br /&gt;
&lt;br /&gt;
== Environment setup  ==&lt;br /&gt;
Set &#039;&#039;&#039;$ANDROID_SDK&#039;&#039;&#039; to point to your Android SDK directory &lt;br /&gt;
&lt;br /&gt;
 export ANDROID_SDK=/path/to/android-sdk&lt;br /&gt;
&lt;br /&gt;
Set &#039;&#039;&#039;$ANDROID_NDK&#039;&#039;&#039; to point to your Android NDK directory &lt;br /&gt;
&lt;br /&gt;
 export ANDROID_NDK=/path/to/android-ndk&lt;br /&gt;
&lt;br /&gt;
Add some useful binaries to your &#039;&#039;&#039;$PATH&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
 export PATH=$PATH:$ANDROID_SDK/platform-tools:$ANDROID_SDK/tools&lt;br /&gt;
&lt;br /&gt;
== Building ==&lt;br /&gt;
=== Get VLC Source ===&lt;br /&gt;
Clone the source from the VLC git!&lt;br /&gt;
&lt;br /&gt;
In your &#039;&#039;android&#039;&#039; source folder, run: &lt;br /&gt;
&lt;br /&gt;
 git clone https://code.videolan.org/videolan/vlc-android.git&lt;br /&gt;
&lt;br /&gt;
==== Setup Gradle build system ====&lt;br /&gt;
&lt;br /&gt;
Before using Android studio to compile the app, you must run &#039;&#039;&#039;compile.sh&#039;&#039;&#039; once to set up gradle build system.&lt;br /&gt;
&lt;br /&gt;
It should automatically populate mandatory local.properties and gradle.properties files with:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;local.properties&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 sdk.dir=&amp;lt;SDK path from $ANDROID_SDK&amp;gt;&lt;br /&gt;
 ndk.dir=&amp;lt;NDK path from $ANDROID_NDK&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This sets up gradle to build with correct SDK/NDK.&lt;br /&gt;
&lt;br /&gt;
Once this first compilation has succeeded, you can build from Android Studio with the &#039;&#039;&#039;Run&#039;&#039;&#039; command.&lt;br /&gt;
&lt;br /&gt;
=== Devices ===&lt;br /&gt;
&lt;br /&gt;
Find the ABI for the target device.&lt;br /&gt;
&lt;br /&gt;
* For a normal (2012-2015 consumer phone or tablet) device (e.g. Cortex-A8 or Cortex-A9)&lt;br /&gt;
 &amp;lt;code&amp;gt;armeabi-v7a&amp;lt;/code&amp;gt;&lt;br /&gt;
* For a Tegra2 device (no [[wikipedia:ARM_architecture#Advanced_SIMD_.28NEON.29|NEON]])&lt;br /&gt;
 &amp;lt;code&amp;gt;armeabi-v7a&amp;lt;/code&amp;gt;&lt;br /&gt;
* For an ARMv6 device&lt;br /&gt;
 &amp;lt;code&amp;gt;armeabi&amp;lt;/code&amp;gt;&lt;br /&gt;
* For an ARMv6 device that does not support FPU&lt;br /&gt;
 &amp;lt;code&amp;gt;armeabi-nofpu&amp;lt;/code&amp;gt;&lt;br /&gt;
* For an ARMv5 device or the Android Emulator&lt;br /&gt;
 &amp;lt;code&amp;gt;armeabi-v5&amp;lt;/code&amp;gt;&lt;br /&gt;
* For a x86 device (e.g. Android-x86, Google TV, Logitech TV, Android x86 smartphones, etc)&lt;br /&gt;
 &amp;lt;code&amp;gt;x86&amp;lt;/code&amp;gt;&lt;br /&gt;
* For a MIPS device (i.e. Ainol Novo tablets):&lt;br /&gt;
 &amp;lt;code&amp;gt;mips&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This value must be passed to the compile.sh script&lt;br /&gt;
&lt;br /&gt;
==== Compile ====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Read&#039;&#039;&#039; compile.sh first, as it contains some very useful and important information. Then run it:&lt;br /&gt;
 buildsystem/compile.sh -a &amp;lt;ABI&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039; At this point, you will get an auto-generated debug APK in the vlc-android/build/outputs/apk folder, signed with a debug key.&lt;br /&gt;
&lt;br /&gt;
In order to build a non-debug (release, and &#039;&#039;&#039;unsigned&#039;&#039;&#039;) package:&lt;br /&gt;
 buildsystem/compile.sh release&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039; At this point, you will get an release APK in the same folder.&lt;br /&gt;
&lt;br /&gt;
==== Build LibVLC ====&lt;br /&gt;
&lt;br /&gt;
To build LibVLC, simply pass the -l option:&lt;br /&gt;
 buildsystem/compile.sh -l -a &amp;lt;ABI&amp;gt; -r&lt;br /&gt;
&lt;br /&gt;
.aar archive will be located in libvlc/build/outputs/aar/&lt;br /&gt;
&lt;br /&gt;
==== Gradle tweaks ====&lt;br /&gt;
&lt;br /&gt;
To improve gradle execution time, try these options by writing this in gradle.properties in vlc android project.&lt;br /&gt;
Or directly in your ~/.gradle/gradle.properties&lt;br /&gt;
 org.gradle.parallel=true&lt;br /&gt;
 org.gradle.configureondemand=true&lt;br /&gt;
 # If you have a BUNCH of RAM available&lt;br /&gt;
 org.gradle.daemon=true&lt;br /&gt;
 org.gradle.jvmargs=-Xmx2048M&lt;br /&gt;
&lt;br /&gt;
=== Run ===&lt;br /&gt;
Run it and enjoy!&lt;br /&gt;
&lt;br /&gt;
=== Troubleshooting ===&lt;br /&gt;
==== Compilation error on Dependencies ====&lt;br /&gt;
Sometimes, especially when gradle dependencies have been upgraded, the &#039;&#039;compile.sh&#039;&#039; will fail to refetch dependencies. Just close Android Studio and re-run the script to fix this issue.&lt;br /&gt;
&lt;br /&gt;
== Debugging ==&lt;br /&gt;
Here are some helpful links if you wish to debug VLC on Android:&lt;br /&gt;
* [http://developer.android.com/guide/developing/debugging/ddms.html DDMS] &lt;br /&gt;
* [http://developer.android.com/guide/developing/tools/logcat.html Logcat]&lt;br /&gt;
&lt;br /&gt;
===Native debugging===&lt;br /&gt;
If you run VLC Android and you get a crash that looks something like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
I/DEBUG   (  958): *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***&lt;br /&gt;
I/DEBUG   (  958): Build fingerprint: &#039;MOTO/MBTCA/sesame/XT300:2.1-update1/SESLA_U3_01.71.0/110110:user/release-keys&#039;&lt;br /&gt;
I/DEBUG   (  958): pid: 1733, tid: 1733 &amp;gt;&amp;gt;&amp;gt; org.videolan.vlc &amp;lt;&amp;lt;&amp;lt;&lt;br /&gt;
I/DEBUG   (  958): signal 11 (SIGSEGV), fault addr 4237be3c&lt;br /&gt;
I/DEBUG   (  958):  r0 423640a0  r1 7ece77ac  r2 42bccdac  r3 4237be38&lt;br /&gt;
I/DEBUG   (  958):  r4 00000000  r5 42bccdac  r6 002ed088  r7 002ed018&lt;br /&gt;
I/DEBUG   (  958):  r8 7ece78e8  r9 2bafa844  10 0000000e  fp 7ece794c&lt;br /&gt;
I/DEBUG   (  958):  ip 00002ba0  sp 7ece7784  lr 423652e4  pc 4237be3c  cpsr 60000010&lt;br /&gt;
I/DEBUG   (  958):          #00  pc 0037be3c  /data/data/org.videolan.vlc/lib/libvlcjni.so&lt;br /&gt;
I/DEBUG   (  958):          #01  lr 423652e4  /data/data/org.videolan.vlc/lib/libvlcjni.so&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You have a &#039;&#039;&#039;native crash&#039;&#039;&#039;. To debug it, you need to have compiled VLC as above and installed it on your device. Once your compiled VLC build is on your device, you can find the &#039;&#039;&#039;backtrace&#039;&#039;&#039; as follows:&lt;br /&gt;
&lt;br /&gt;
# Make sure you are in the directory that you checked out VLC-Android in.&lt;br /&gt;
# Migrate the libvlc folders. (Do this every time the code is recompiled)&lt;br /&gt;
## cp -r libvlc/jni vlc-android&lt;br /&gt;
## cp -r libvlc/libs vlc-android&lt;br /&gt;
## cp -r libvlc/obj vlc-android&lt;br /&gt;
## (This is because the libvlc and VLC for Android folders were split yet the debugger needs the object files from both.)&lt;br /&gt;
# cd vlc-android&lt;br /&gt;
# $ANDROID_NDK/ndk-gdb --verbose --force --start&lt;br /&gt;
At this point, lots of stuff will appear:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Android NDK installation path: /opt/android-ndk-r8c&lt;br /&gt;
Using default adb command: /opt/android-sdk-linux_x86/platform-tools/adb&lt;br /&gt;
ADB version found: Android Debug Bridge version 1.0.29&lt;br /&gt;
Using ADB flags: &lt;br /&gt;
Using auto-detected project path: .&lt;br /&gt;
Found package name: org.videolan.vlc&lt;br /&gt;
...bunch of stuff skipped...&lt;br /&gt;
GNU gdb (GDB) 7.3.1-gg2&lt;br /&gt;
Copyright (C) 2011 Free Software Foundation, Inc.&lt;br /&gt;
License GPLv3+: GNU GPL version 3 or later &amp;lt;http://gnu.org/licenses/gpl.html&amp;gt;&lt;br /&gt;
This is free software: you are free to change and redistribute it.&lt;br /&gt;
There is NO WARRANTY, to the extent permitted by law.  Type &amp;quot;show copying&amp;quot;&lt;br /&gt;
and &amp;quot;show warranty&amp;quot; for details.&lt;br /&gt;
This GDB was configured as &amp;quot;--host=x86_64-linux-gnu --target=arm-linux-android&amp;quot;.&lt;br /&gt;
For bug reporting instructions, please see:&lt;br /&gt;
&amp;lt;http://www.gnu.org/software/gdb/bugs/&amp;gt;.&lt;br /&gt;
Remote debugging from host 0.0.0.0&lt;br /&gt;
...bunch of stuff skipped...&lt;br /&gt;
libthread_db:td_ta_new: Victory: We can debug theads!&lt;br /&gt;
warning: Breakpoint address adjusted from 0x400deaa5 to 0x400deaa4.&lt;br /&gt;
0x40107a40 in epoll_wait () from /media/data/vlc_android/vlc-android/obj/local/armeabi/libc.so&lt;br /&gt;
(gdb)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;ol start=&amp;quot;4&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;At this point, type in &amp;quot;continue&amp;quot; and press Enter.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Perform the actions you did to make it crash. It will spit out something like this:&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Program received signal SIGSEGV, Segmentation fault.&lt;br /&gt;
0x401120ae in ?? () from /media/data/vlc_android/vlc-android/obj/local/armeabi/libc.so&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;ol start=&amp;quot;6&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Now, just type in &amp;quot;&#039;&#039;&#039;bt full&#039;&#039;&#039;&amp;quot; (excluding the quotation marks) and press Enter. That is your backtrace that you should give to the developers when they ask for it (possibly on a [http://paste.kde.org/ pastebin], too).&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
(gdb) bt full&lt;br /&gt;
#0  0x401120ae in ?? () from /media/data/vlc_android/vlc-android/obj/local/armeabi/libc.so&lt;br /&gt;
No symbol table info available.&lt;br /&gt;
#1  0x40107bd8 in abort () from /media/data/vlc_android/vlc-android/obj/local/armeabi/libc.so&lt;br /&gt;
No symbol table info available.&lt;br /&gt;
#2  0x40118e6a in __assert2 () from /media/data/vlc_android/vlc-android/obj/local/armeabi/libc.so&lt;br /&gt;
No symbol table info available.&lt;br /&gt;
#3  0x5e0cdfdc in var_SetChecked (p_this=0x40134b94, psz_name=0x5ea2fcb8 &amp;quot;rate&amp;quot;, expected_type=80, val=...) at ../../src/misc/variables.c:711&lt;br /&gt;
        i_ret = 0&lt;br /&gt;
        p_var = &amp;lt;optimized out&amp;gt;&lt;br /&gt;
        oldval = {i_int = 4742037487051810480, b_bool = 176, f_float = 2.27765068e+14, psz_string = 0x574f26b0 &amp;quot;X\270|B\001\001&amp;quot;, p_address = 0x574f26b0, &lt;br /&gt;
          p_object = 0x574f26b0, p_list = 0x574f26b0, i_time = 4742037487051810480, coords = {x = 1464805040, y = 1104091640}}&lt;br /&gt;
        __func__ = &amp;quot;var_SetChecked&amp;quot;&lt;br /&gt;
        p_priv = &amp;lt;optimized out&amp;gt;&lt;br /&gt;
#4  0x5e06dd9c in var_SetFloat (f=1.41421354, psz_name=0x5ea2fcb8 &amp;quot;rate____sample_backtrace&amp;quot;, p_obj=0x0) at ../../include/vlc_variables.h:262&lt;br /&gt;
        val = &amp;lt;optimized out&amp;gt;&lt;br /&gt;
#5  libvlc_media_player_set_rate (p_mi=0x0, rate=1.41421354) at ../../lib/media_player.c:1252&lt;br /&gt;
        p_input_thread = &amp;lt;optimized out&amp;gt;&lt;br /&gt;
#6  0x5de7bd18 in Java_org_videolan_vlc_LibVLC_setRate (env=0x41cf0470, thiz=0x8ab00021, rate=1.41421354) at jni/libvlcjni.c:678&lt;br /&gt;
        mp = 0x0&lt;br /&gt;
#7  0x4076de34 in ?? ()&lt;br /&gt;
No symbol table info available.&lt;br /&gt;
#8  0x4076de34 in ?? ()&lt;br /&gt;
No symbol table info available.&lt;br /&gt;
Backtrace stopped: previous frame identical to this frame (corrupt stack?)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Troubleshooting ==&lt;br /&gt;
=== Outdated Awk ===&lt;br /&gt;
If you receive the error message while building:&lt;br /&gt;
&lt;br /&gt;
 Android NDK: Host &#039;awk&#039; tool is outdated. Please define HOST_AWK to point to Gawk or Nawk !    &lt;br /&gt;
&lt;br /&gt;
The prebuilt version of Awk that comes with the Android NDK is outdated. Defining HOST_AWK in your environment does nothing as the system still tries to just the one that comes with the Android NDK. To get around this issue, simply rename or delete the Awk binary that comes with the Android NDK. For example to move it:&lt;br /&gt;
&lt;br /&gt;
 mv $ANDROID_NDK/prebuilt/linux-x86/bin/awk $ANDROID_NDK/prebuilt/linux-x86/bin/awk.old&lt;br /&gt;
&lt;br /&gt;
=== Can&#039;t find Ant ===&lt;br /&gt;
If you&#039;re new to Ant, please be aware that some Linux distributions don&#039;t install it in the usual spot as with other programs. Try checking to see if the directory /usr/share/java/apache-ant/bin exists and add it to your path.&lt;br /&gt;
&lt;br /&gt;
===Outdated autotools-dev===&lt;br /&gt;
If you get the following error message you may have have an outdated version of autotools-dev:&lt;br /&gt;
  Invalid configuration `arm-linux-androideabi&#039;: system `androideabi&#039; not recognized&lt;br /&gt;
You may first want to check if your distribution has any available updates for this package.  Alternatively, you can manually update your config.guess and config.sub files from here: [http://git.savannah.gnu.org/gitweb/?p=config.git;a=tree].  These files are typically located in /usr/share/misc on Debian based distributions.&lt;br /&gt;
&lt;br /&gt;
===autoreconf: automake failed with exit status: 1===&lt;br /&gt;
 automake: warnings are treated as errors&lt;br /&gt;
 configure.ac:41: warning: The &#039;AM_PROG_MKDIR_P&#039; macro is deprecated, and will soon be removed.&lt;br /&gt;
 configure.ac:41: You should use the Autoconf-provided &#039;AC_PROG_MKDIR_P&#039; macro instead,&lt;br /&gt;
 configure.ac:41: and use &#039;$(MKDIR_P)&#039; instead of &#039;$(mkdir_p)&#039;in your Makefile.am files.&lt;br /&gt;
&lt;br /&gt;
If you are using Automake 1.13 or higher, you must remove -Werror from vlc/contrib/android/gnutls/configure.ac to continue. (First reported in [http://forum.videolan.org/viewtopic.php?f=35&amp;amp;t=108927])&lt;br /&gt;
&lt;br /&gt;
===autoreconf: automake failed with exit status: 1 ===&lt;br /&gt;
 make: *** [dvdnav] Error 1&lt;br /&gt;
 ...&lt;br /&gt;
 ... error: possibly undefined macro: AM_PROG_LIBTOOL&lt;br /&gt;
&lt;br /&gt;
This error may occur when compiling with an older Linux distribution, such as Ubuntu 12.04, that doesn&#039;t meet bootstrap prerequisites. As of 2014-08-09, the master branch for vlc-ports/android.git [http://git.videolan.org/?p=vlc-ports/android.git;a=summary] lacks patch 5199 [https://patches.videolan.org/patch/5199/]. Without the patch, compile.sh builds out dated automake and autoconf that may not access libtool despite presence of a current libtool binary amongst supporting tools and a similar or more recent binary present as part of the OS.&lt;br /&gt;
&lt;br /&gt;
To work around this error, patch the master branch or update the prerequisites. For Ubuntu 12.04, upgrade autoconf, automake, and cmake as dictated by vlc/extras/tools/bootstrap.&lt;br /&gt;
&lt;br /&gt;
===Can&#039;t run aapt or adb on Linux 64-bit===&lt;br /&gt;
You must install the 32-bit libraries of the following libraries, as the precompiled Google binaries depend on them: &#039;&#039;libc6&#039;&#039;, &#039;&#039;libstdc++6&#039;&#039;, and &#039;&#039;zlib&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
New versions of Debian and/or Ubuntu require you to install i386 versions of packages:&lt;br /&gt;
 sudo dpkg --add-architecture i386&lt;br /&gt;
 sudo apt-get update&lt;br /&gt;
 sudo apt-get install zlib1g:i386 libstdc++6:i386 libc6:i386&lt;br /&gt;
&lt;br /&gt;
If you are under &#039;&#039;old versions&#039;&#039; of Ubuntu, install ia32-libs can help you solve this issue.&lt;br /&gt;
 sudo apt-get install ia32-libs&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
* [[Android Report bugs]] - Bug reporting guide for VLC-Android.&lt;br /&gt;
&lt;br /&gt;
[[Category:Building]] [[Category:Android]]&lt;/div&gt;</summary>
		<author><name>Dekans</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=AndroidCompile&amp;diff=62006</id>
		<title>AndroidCompile</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=AndroidCompile&amp;diff=62006"/>
		<updated>2020-02-20T14:44:24Z</updated>

		<summary type="html">&lt;p&gt;Dekans: /* Android NDK */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page is an introduction to the compilation of &#039;&#039;&#039;VLC for Android&#039;&#039;&#039; on Linux. &lt;br /&gt;
&lt;br /&gt;
==Android Studio, SDK and NDK installation==&lt;br /&gt;
&lt;br /&gt;
=== Requirements  ===&lt;br /&gt;
* You &#039;&#039;&#039;MUST&#039;&#039;&#039; build on Linux (or OSX if you know what you are doing).&lt;br /&gt;
* The following packages &#039;&#039;&#039;MUST&#039;&#039;&#039; must be installed:&lt;br /&gt;
** the GNU autotools: &#039;&#039;autoconf&#039;&#039;, &#039;&#039;libtool&#039;&#039;, &#039;&#039;automake&#039;&#039; and &#039;&#039;make&#039;&#039; (a.k.a. &#039;&#039;gmake&#039;&#039;)&lt;br /&gt;
** ...and their dependencies: &#039;&#039;m4&#039;&#039; and &#039;&#039;gawk&#039;&#039;, &#039;&#039;mawk&#039;&#039; or &#039;&#039;nawk&#039;&#039;,&lt;br /&gt;
** the GNU C and C++ compilers a.k.a. &#039;&#039;gcc&#039;&#039; and &#039;&#039;g++&#039;&#039;,&lt;br /&gt;
** some GNU build utilities: &#039;&#039;pkg-config&#039;&#039; and &#039;&#039;patch&#039;&#039;,&lt;br /&gt;
** the following other build utilities: &#039;&#039;Apache Ant&#039;&#039; (or &#039;&#039;Ant&#039;&#039;), &#039;&#039;cmake&#039;&#039;, &#039;&#039;protobuf&#039;&#039;, &#039;&#039;ragel&#039;&#039;,&lt;br /&gt;
** the Subversion and Git version control systems&lt;br /&gt;
** &#039;&#039;unzip&#039;&#039; and either &#039;&#039;curl&#039;&#039; or &#039;&#039;wget&#039;&#039; for retreiving sources.&lt;br /&gt;
* Very recent versions of some of those tools may be required. At the time of writing, notably gettext 0.19.3 or later is required.&lt;br /&gt;
* If any of the above is missing, expect the build to fail at some point.&lt;br /&gt;
* If targeting an Android-x86 device, &#039;&#039;yasm&#039;&#039; must be installed too.&lt;br /&gt;
&lt;br /&gt;
Precise lists of tools dependencies is listed [https://git.videolan.org/?p=vlc.git;a=blob;f=extras/tools/bootstrap;h=e60e5ebf93e69e7bb731e80d0fbc6ebd1226dfdb;hb=HEAD#l73 here].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color: #ff0000&amp;quot;&amp;gt;&#039;&#039;&#039;64-bit users&#039;&#039;&#039;&amp;lt;/span&amp;gt;: You must install these 32-bit libs as specified here: [[#Can.27t_run_aapt_or_adb_on_Linux_64-bit]]&lt;br /&gt;
&lt;br /&gt;
==== Example on Ubuntu ====&lt;br /&gt;
Install the packages as follow:&lt;br /&gt;
 sudo apt-get install automake ant autopoint cmake build-essential libtool-bin \&lt;br /&gt;
      patch pkg-config protobuf-compiler ragel subversion unzip git \&lt;br /&gt;
     openjdk-8-jre openjdk-8-jdk flex python wget&lt;br /&gt;
&lt;br /&gt;
=== SDK &amp;amp; Android Studio ===&lt;br /&gt;
# Go to [http://developer.android.com/sdk/index.html Android SDK/IDE page].&lt;br /&gt;
# Android Studio is recommended, but not mandatory!&lt;br /&gt;
&lt;br /&gt;
===Android NDK===&lt;br /&gt;
# Check that the SDK installation is correct. &lt;br /&gt;
# Go to the [https://developer.android.com/ndk/downloads/index.html Android NDK page] and download the &#039;&#039;&#039;NDK r21&#039;&#039;&#039; for Linux. &lt;br /&gt;
# Decompress it to install&lt;br /&gt;
&lt;br /&gt;
== Environment setup  ==&lt;br /&gt;
Set &#039;&#039;&#039;$ANDROID_SDK&#039;&#039;&#039; to point to your Android SDK directory &lt;br /&gt;
&lt;br /&gt;
 export ANDROID_SDK=/path/to/android-sdk&lt;br /&gt;
&lt;br /&gt;
Set &#039;&#039;&#039;$ANDROID_NDK&#039;&#039;&#039; to point to your Android NDK directory &lt;br /&gt;
&lt;br /&gt;
 export ANDROID_NDK=/path/to/android-ndk&lt;br /&gt;
&lt;br /&gt;
Add some useful binaries to your &#039;&#039;&#039;$PATH&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
 export PATH=$PATH:$ANDROID_SDK/platform-tools:$ANDROID_SDK/tools&lt;br /&gt;
&lt;br /&gt;
== Building ==&lt;br /&gt;
=== Get VLC Source ===&lt;br /&gt;
Clone the source from the VLC git!&lt;br /&gt;
&lt;br /&gt;
In your &#039;&#039;android&#039;&#039; source folder, run: &lt;br /&gt;
&lt;br /&gt;
 git clone https://code.videolan.org/videolan/vlc-android.git&lt;br /&gt;
&lt;br /&gt;
==== Setup Gradle build system ====&lt;br /&gt;
&lt;br /&gt;
Before using Android studio to compile the app, you must run &#039;&#039;&#039;compile.sh&#039;&#039;&#039; once to set up gradle build system.&lt;br /&gt;
&lt;br /&gt;
It should automatically populate mandatory local.properties and gradle.properties files with:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;local.properties&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 sdk.dir=&amp;lt;SDK path from $ANDROID_SDK&amp;gt;&lt;br /&gt;
 ndk.dir=&amp;lt;NDK path from $ANDROID_NDK&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This sets up gradle to build with correct SDK/NDK.&lt;br /&gt;
&lt;br /&gt;
Once this first compilation has succeeded, you can build from Android Studio with the &#039;&#039;&#039;Run&#039;&#039;&#039; command.&lt;br /&gt;
&lt;br /&gt;
=== Devices ===&lt;br /&gt;
&lt;br /&gt;
Find the ABI for the target device.&lt;br /&gt;
&lt;br /&gt;
* For a normal (2012-2015 consumer phone or tablet) device (e.g. Cortex-A8 or Cortex-A9)&lt;br /&gt;
 &amp;lt;code&amp;gt;armeabi-v7a&amp;lt;/code&amp;gt;&lt;br /&gt;
* For a Tegra2 device (no [[wikipedia:ARM_architecture#Advanced_SIMD_.28NEON.29|NEON]])&lt;br /&gt;
 &amp;lt;code&amp;gt;armeabi-v7a&amp;lt;/code&amp;gt;&lt;br /&gt;
* For an ARMv6 device&lt;br /&gt;
 &amp;lt;code&amp;gt;armeabi&amp;lt;/code&amp;gt;&lt;br /&gt;
* For an ARMv6 device that does not support FPU&lt;br /&gt;
 &amp;lt;code&amp;gt;armeabi-nofpu&amp;lt;/code&amp;gt;&lt;br /&gt;
* For an ARMv5 device or the Android Emulator&lt;br /&gt;
 &amp;lt;code&amp;gt;armeabi-v5&amp;lt;/code&amp;gt;&lt;br /&gt;
* For a x86 device (e.g. Android-x86, Google TV, Logitech TV, Android x86 smartphones, etc)&lt;br /&gt;
 &amp;lt;code&amp;gt;x86&amp;lt;/code&amp;gt;&lt;br /&gt;
* For a MIPS device (i.e. Ainol Novo tablets):&lt;br /&gt;
 &amp;lt;code&amp;gt;mips&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This value must be passed to the compile.sh script&lt;br /&gt;
&lt;br /&gt;
==== Compile ====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Read&#039;&#039;&#039; compile.sh first, as it contains some very useful and important information. Then run it:&lt;br /&gt;
 buildsystem/compile.sh -a &amp;lt;ABI&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039; At this point, you will get an auto-generated debug APK in the vlc-android/build/outputs/apk folder, signed with a debug key.&lt;br /&gt;
&lt;br /&gt;
In order to build a non-debug (release, and &#039;&#039;&#039;unsigned&#039;&#039;&#039;) package:&lt;br /&gt;
 buildsystem/compile.sh release&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039; At this point, you will get an release APK in the same folder.&lt;br /&gt;
&lt;br /&gt;
==== Build LibVLC ====&lt;br /&gt;
&lt;br /&gt;
To build LibVLC, simply pass the -l option:&lt;br /&gt;
 buildsystem/compile.sh -l -a &amp;lt;ABI&amp;gt; -r&lt;br /&gt;
&lt;br /&gt;
.aar archive will be located in libvlc/build/outputs/aar/&lt;br /&gt;
&lt;br /&gt;
==== Gradle tweaks ====&lt;br /&gt;
&lt;br /&gt;
To improve gradle execution time, try these options by writing this in gradle.properties in vlc android project.&lt;br /&gt;
Or directly in your ~/.gradle/gradle.properties&lt;br /&gt;
 org.gradle.parallel=true&lt;br /&gt;
 org.gradle.configureondemand=true&lt;br /&gt;
 # If you have a BUNCH of RAM available&lt;br /&gt;
 org.gradle.daemon=true&lt;br /&gt;
 org.gradle.jvmargs=-Xmx2048M&lt;br /&gt;
&lt;br /&gt;
=== Run ===&lt;br /&gt;
Run it and enjoy!&lt;br /&gt;
&lt;br /&gt;
=== Troubleshooting ===&lt;br /&gt;
==== Compilation error on Dependencies ====&lt;br /&gt;
Sometimes, especially when gradle dependencies have been upgraded, the &#039;&#039;compile.sh&#039;&#039; will fail to refetch dependencies. Just close Android Studio and re-run the script to fix this issue.&lt;br /&gt;
&lt;br /&gt;
== Debugging ==&lt;br /&gt;
Here are some helpful links if you wish to debug VLC on Android:&lt;br /&gt;
* [http://developer.android.com/guide/developing/debugging/ddms.html DDMS] &lt;br /&gt;
* [http://developer.android.com/guide/developing/tools/logcat.html Logcat]&lt;br /&gt;
&lt;br /&gt;
===Native debugging===&lt;br /&gt;
If you run VLC Android and you get a crash that looks something like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
I/DEBUG   (  958): *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***&lt;br /&gt;
I/DEBUG   (  958): Build fingerprint: &#039;MOTO/MBTCA/sesame/XT300:2.1-update1/SESLA_U3_01.71.0/110110:user/release-keys&#039;&lt;br /&gt;
I/DEBUG   (  958): pid: 1733, tid: 1733 &amp;gt;&amp;gt;&amp;gt; org.videolan.vlc &amp;lt;&amp;lt;&amp;lt;&lt;br /&gt;
I/DEBUG   (  958): signal 11 (SIGSEGV), fault addr 4237be3c&lt;br /&gt;
I/DEBUG   (  958):  r0 423640a0  r1 7ece77ac  r2 42bccdac  r3 4237be38&lt;br /&gt;
I/DEBUG   (  958):  r4 00000000  r5 42bccdac  r6 002ed088  r7 002ed018&lt;br /&gt;
I/DEBUG   (  958):  r8 7ece78e8  r9 2bafa844  10 0000000e  fp 7ece794c&lt;br /&gt;
I/DEBUG   (  958):  ip 00002ba0  sp 7ece7784  lr 423652e4  pc 4237be3c  cpsr 60000010&lt;br /&gt;
I/DEBUG   (  958):          #00  pc 0037be3c  /data/data/org.videolan.vlc/lib/libvlcjni.so&lt;br /&gt;
I/DEBUG   (  958):          #01  lr 423652e4  /data/data/org.videolan.vlc/lib/libvlcjni.so&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You have a &#039;&#039;&#039;native crash&#039;&#039;&#039;. To debug it, you need to have compiled VLC as above and installed it on your device. Once your compiled VLC build is on your device, you can find the &#039;&#039;&#039;backtrace&#039;&#039;&#039; as follows:&lt;br /&gt;
&lt;br /&gt;
# Make sure you are in the directory that you checked out VLC-Android in.&lt;br /&gt;
# Migrate the libvlc folders. (Do this every time the code is recompiled)&lt;br /&gt;
## cp -r libvlc/jni vlc-android&lt;br /&gt;
## cp -r libvlc/libs vlc-android&lt;br /&gt;
## cp -r libvlc/obj vlc-android&lt;br /&gt;
## (This is because the libvlc and VLC for Android folders were split yet the debugger needs the object files from both.)&lt;br /&gt;
# cd vlc-android&lt;br /&gt;
# $ANDROID_NDK/ndk-gdb --verbose --force --start&lt;br /&gt;
At this point, lots of stuff will appear:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Android NDK installation path: /opt/android-ndk-r8c&lt;br /&gt;
Using default adb command: /opt/android-sdk-linux_x86/platform-tools/adb&lt;br /&gt;
ADB version found: Android Debug Bridge version 1.0.29&lt;br /&gt;
Using ADB flags: &lt;br /&gt;
Using auto-detected project path: .&lt;br /&gt;
Found package name: org.videolan.vlc&lt;br /&gt;
...bunch of stuff skipped...&lt;br /&gt;
GNU gdb (GDB) 7.3.1-gg2&lt;br /&gt;
Copyright (C) 2011 Free Software Foundation, Inc.&lt;br /&gt;
License GPLv3+: GNU GPL version 3 or later &amp;lt;http://gnu.org/licenses/gpl.html&amp;gt;&lt;br /&gt;
This is free software: you are free to change and redistribute it.&lt;br /&gt;
There is NO WARRANTY, to the extent permitted by law.  Type &amp;quot;show copying&amp;quot;&lt;br /&gt;
and &amp;quot;show warranty&amp;quot; for details.&lt;br /&gt;
This GDB was configured as &amp;quot;--host=x86_64-linux-gnu --target=arm-linux-android&amp;quot;.&lt;br /&gt;
For bug reporting instructions, please see:&lt;br /&gt;
&amp;lt;http://www.gnu.org/software/gdb/bugs/&amp;gt;.&lt;br /&gt;
Remote debugging from host 0.0.0.0&lt;br /&gt;
...bunch of stuff skipped...&lt;br /&gt;
libthread_db:td_ta_new: Victory: We can debug theads!&lt;br /&gt;
warning: Breakpoint address adjusted from 0x400deaa5 to 0x400deaa4.&lt;br /&gt;
0x40107a40 in epoll_wait () from /media/data/vlc_android/vlc-android/obj/local/armeabi/libc.so&lt;br /&gt;
(gdb)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;ol start=&amp;quot;4&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;At this point, type in &amp;quot;continue&amp;quot; and press Enter.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Perform the actions you did to make it crash. It will spit out something like this:&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Program received signal SIGSEGV, Segmentation fault.&lt;br /&gt;
0x401120ae in ?? () from /media/data/vlc_android/vlc-android/obj/local/armeabi/libc.so&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;ol start=&amp;quot;6&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Now, just type in &amp;quot;&#039;&#039;&#039;bt full&#039;&#039;&#039;&amp;quot; (excluding the quotation marks) and press Enter. That is your backtrace that you should give to the developers when they ask for it (possibly on a [http://paste.kde.org/ pastebin], too).&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
(gdb) bt full&lt;br /&gt;
#0  0x401120ae in ?? () from /media/data/vlc_android/vlc-android/obj/local/armeabi/libc.so&lt;br /&gt;
No symbol table info available.&lt;br /&gt;
#1  0x40107bd8 in abort () from /media/data/vlc_android/vlc-android/obj/local/armeabi/libc.so&lt;br /&gt;
No symbol table info available.&lt;br /&gt;
#2  0x40118e6a in __assert2 () from /media/data/vlc_android/vlc-android/obj/local/armeabi/libc.so&lt;br /&gt;
No symbol table info available.&lt;br /&gt;
#3  0x5e0cdfdc in var_SetChecked (p_this=0x40134b94, psz_name=0x5ea2fcb8 &amp;quot;rate&amp;quot;, expected_type=80, val=...) at ../../src/misc/variables.c:711&lt;br /&gt;
        i_ret = 0&lt;br /&gt;
        p_var = &amp;lt;optimized out&amp;gt;&lt;br /&gt;
        oldval = {i_int = 4742037487051810480, b_bool = 176, f_float = 2.27765068e+14, psz_string = 0x574f26b0 &amp;quot;X\270|B\001\001&amp;quot;, p_address = 0x574f26b0, &lt;br /&gt;
          p_object = 0x574f26b0, p_list = 0x574f26b0, i_time = 4742037487051810480, coords = {x = 1464805040, y = 1104091640}}&lt;br /&gt;
        __func__ = &amp;quot;var_SetChecked&amp;quot;&lt;br /&gt;
        p_priv = &amp;lt;optimized out&amp;gt;&lt;br /&gt;
#4  0x5e06dd9c in var_SetFloat (f=1.41421354, psz_name=0x5ea2fcb8 &amp;quot;rate____sample_backtrace&amp;quot;, p_obj=0x0) at ../../include/vlc_variables.h:262&lt;br /&gt;
        val = &amp;lt;optimized out&amp;gt;&lt;br /&gt;
#5  libvlc_media_player_set_rate (p_mi=0x0, rate=1.41421354) at ../../lib/media_player.c:1252&lt;br /&gt;
        p_input_thread = &amp;lt;optimized out&amp;gt;&lt;br /&gt;
#6  0x5de7bd18 in Java_org_videolan_vlc_LibVLC_setRate (env=0x41cf0470, thiz=0x8ab00021, rate=1.41421354) at jni/libvlcjni.c:678&lt;br /&gt;
        mp = 0x0&lt;br /&gt;
#7  0x4076de34 in ?? ()&lt;br /&gt;
No symbol table info available.&lt;br /&gt;
#8  0x4076de34 in ?? ()&lt;br /&gt;
No symbol table info available.&lt;br /&gt;
Backtrace stopped: previous frame identical to this frame (corrupt stack?)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Troubleshooting ==&lt;br /&gt;
=== Outdated Awk ===&lt;br /&gt;
If you receive the error message while building:&lt;br /&gt;
&lt;br /&gt;
 Android NDK: Host &#039;awk&#039; tool is outdated. Please define HOST_AWK to point to Gawk or Nawk !    &lt;br /&gt;
&lt;br /&gt;
The prebuilt version of Awk that comes with the Android NDK is outdated. Defining HOST_AWK in your environment does nothing as the system still tries to just the one that comes with the Android NDK. To get around this issue, simply rename or delete the Awk binary that comes with the Android NDK. For example to move it:&lt;br /&gt;
&lt;br /&gt;
 mv $ANDROID_NDK/prebuilt/linux-x86/bin/awk $ANDROID_NDK/prebuilt/linux-x86/bin/awk.old&lt;br /&gt;
&lt;br /&gt;
=== Can&#039;t find Ant ===&lt;br /&gt;
If you&#039;re new to Ant, please be aware that some Linux distributions don&#039;t install it in the usual spot as with other programs. Try checking to see if the directory /usr/share/java/apache-ant/bin exists and add it to your path.&lt;br /&gt;
&lt;br /&gt;
===Outdated autotools-dev===&lt;br /&gt;
If you get the following error message you may have have an outdated version of autotools-dev:&lt;br /&gt;
  Invalid configuration `arm-linux-androideabi&#039;: system `androideabi&#039; not recognized&lt;br /&gt;
You may first want to check if your distribution has any available updates for this package.  Alternatively, you can manually update your config.guess and config.sub files from here: [http://git.savannah.gnu.org/gitweb/?p=config.git;a=tree].  These files are typically located in /usr/share/misc on Debian based distributions.&lt;br /&gt;
&lt;br /&gt;
===autoreconf: automake failed with exit status: 1===&lt;br /&gt;
 automake: warnings are treated as errors&lt;br /&gt;
 configure.ac:41: warning: The &#039;AM_PROG_MKDIR_P&#039; macro is deprecated, and will soon be removed.&lt;br /&gt;
 configure.ac:41: You should use the Autoconf-provided &#039;AC_PROG_MKDIR_P&#039; macro instead,&lt;br /&gt;
 configure.ac:41: and use &#039;$(MKDIR_P)&#039; instead of &#039;$(mkdir_p)&#039;in your Makefile.am files.&lt;br /&gt;
&lt;br /&gt;
If you are using Automake 1.13 or higher, you must remove -Werror from vlc/contrib/android/gnutls/configure.ac to continue. (First reported in [http://forum.videolan.org/viewtopic.php?f=35&amp;amp;t=108927])&lt;br /&gt;
&lt;br /&gt;
===autoreconf: automake failed with exit status: 1 ===&lt;br /&gt;
 make: *** [dvdnav] Error 1&lt;br /&gt;
 ...&lt;br /&gt;
 ... error: possibly undefined macro: AM_PROG_LIBTOOL&lt;br /&gt;
&lt;br /&gt;
This error may occur when compiling with an older Linux distribution, such as Ubuntu 12.04, that doesn&#039;t meet bootstrap prerequisites. As of 2014-08-09, the master branch for vlc-ports/android.git [http://git.videolan.org/?p=vlc-ports/android.git;a=summary] lacks patch 5199 [https://patches.videolan.org/patch/5199/]. Without the patch, compile.sh builds out dated automake and autoconf that may not access libtool despite presence of a current libtool binary amongst supporting tools and a similar or more recent binary present as part of the OS.&lt;br /&gt;
&lt;br /&gt;
To work around this error, patch the master branch or update the prerequisites. For Ubuntu 12.04, upgrade autoconf, automake, and cmake as dictated by vlc/extras/tools/bootstrap.&lt;br /&gt;
&lt;br /&gt;
===Can&#039;t run aapt or adb on Linux 64-bit===&lt;br /&gt;
You must install the 32-bit libraries of the following libraries, as the precompiled Google binaries depend on them: &#039;&#039;libc6&#039;&#039;, &#039;&#039;libstdc++6&#039;&#039;, and &#039;&#039;zlib&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
New versions of Debian and/or Ubuntu require you to install i386 versions of packages:&lt;br /&gt;
 sudo dpkg --add-architecture i386&lt;br /&gt;
 sudo apt-get update&lt;br /&gt;
 sudo apt-get install zlib1g:i386 libstdc++6:i386 libc6:i386&lt;br /&gt;
&lt;br /&gt;
If you are under &#039;&#039;old versions&#039;&#039; of Ubuntu, install ia32-libs can help you solve this issue.&lt;br /&gt;
 sudo apt-get install ia32-libs&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
* [[Android Report bugs]] - Bug reporting guide for VLC-Android.&lt;br /&gt;
&lt;br /&gt;
[[Category:Building]] [[Category:Android]]&lt;/div&gt;</summary>
		<author><name>Dekans</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=AndroidCompile&amp;diff=61989</id>
		<title>AndroidCompile</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=AndroidCompile&amp;diff=61989"/>
		<updated>2019-12-23T10:36:29Z</updated>

		<summary type="html">&lt;p&gt;Dekans: /* Build LibVLC */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page is an introduction to the compilation of &#039;&#039;&#039;VLC for Android&#039;&#039;&#039; on Linux. &lt;br /&gt;
&lt;br /&gt;
==Android Studio, SDK and NDK installation==&lt;br /&gt;
&lt;br /&gt;
=== Requirements  ===&lt;br /&gt;
* You &#039;&#039;&#039;MUST&#039;&#039;&#039; build on Linux (or OSX if you know what you are doing).&lt;br /&gt;
* The following packages &#039;&#039;&#039;MUST&#039;&#039;&#039; must be installed:&lt;br /&gt;
** the GNU autotools: &#039;&#039;autoconf&#039;&#039;, &#039;&#039;libtool&#039;&#039;, &#039;&#039;automake&#039;&#039; and &#039;&#039;make&#039;&#039; (a.k.a. &#039;&#039;gmake&#039;&#039;)&lt;br /&gt;
** ...and their dependencies: &#039;&#039;m4&#039;&#039; and &#039;&#039;gawk&#039;&#039;, &#039;&#039;mawk&#039;&#039; or &#039;&#039;nawk&#039;&#039;,&lt;br /&gt;
** the GNU C and C++ compilers a.k.a. &#039;&#039;gcc&#039;&#039; and &#039;&#039;g++&#039;&#039;,&lt;br /&gt;
** some GNU build utilities: &#039;&#039;pkg-config&#039;&#039; and &#039;&#039;patch&#039;&#039;,&lt;br /&gt;
** the following other build utilities: &#039;&#039;Apache Ant&#039;&#039; (or &#039;&#039;Ant&#039;&#039;), &#039;&#039;cmake&#039;&#039;, &#039;&#039;protobuf&#039;&#039;, &#039;&#039;ragel&#039;&#039;,&lt;br /&gt;
** the Subversion and Git version control systems&lt;br /&gt;
** &#039;&#039;unzip&#039;&#039; and either &#039;&#039;curl&#039;&#039; or &#039;&#039;wget&#039;&#039; for retreiving sources.&lt;br /&gt;
* Very recent versions of some of those tools may be required. At the time of writing, notably gettext 0.19.3 or later is required.&lt;br /&gt;
* If any of the above is missing, expect the build to fail at some point.&lt;br /&gt;
* If targeting an Android-x86 device, &#039;&#039;yasm&#039;&#039; must be installed too.&lt;br /&gt;
&lt;br /&gt;
Precise lists of tools dependencies is listed [https://git.videolan.org/?p=vlc.git;a=blob;f=extras/tools/bootstrap;h=e60e5ebf93e69e7bb731e80d0fbc6ebd1226dfdb;hb=HEAD#l73 here].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color: #ff0000&amp;quot;&amp;gt;&#039;&#039;&#039;64-bit users&#039;&#039;&#039;&amp;lt;/span&amp;gt;: You must install these 32-bit libs as specified here: [[#Can.27t_run_aapt_or_adb_on_Linux_64-bit]]&lt;br /&gt;
&lt;br /&gt;
==== Example on Ubuntu ====&lt;br /&gt;
Install the packages as follow:&lt;br /&gt;
 sudo apt-get install automake ant autopoint cmake build-essential libtool-bin \&lt;br /&gt;
      patch pkg-config protobuf-compiler ragel subversion unzip git \&lt;br /&gt;
     openjdk-8-jre openjdk-8-jdk flex python wget&lt;br /&gt;
&lt;br /&gt;
=== SDK &amp;amp; Android Studio ===&lt;br /&gt;
# Go to [http://developer.android.com/sdk/index.html Android SDK/IDE page].&lt;br /&gt;
# Android Studio is recommended, but not mandatory!&lt;br /&gt;
&lt;br /&gt;
===Android NDK===&lt;br /&gt;
# Check that the SDK installation is correct. &lt;br /&gt;
# Go to the [https://developer.android.com/ndk/downloads/index.html Android NDK page] and download the &#039;&#039;&#039;NDK r18b&#039;&#039;&#039; for Linux. &lt;br /&gt;
# Decompress it to install&lt;br /&gt;
&lt;br /&gt;
== Environment setup  ==&lt;br /&gt;
Set &#039;&#039;&#039;$ANDROID_SDK&#039;&#039;&#039; to point to your Android SDK directory &lt;br /&gt;
&lt;br /&gt;
 export ANDROID_SDK=/path/to/android-sdk&lt;br /&gt;
&lt;br /&gt;
Set &#039;&#039;&#039;$ANDROID_NDK&#039;&#039;&#039; to point to your Android NDK directory &lt;br /&gt;
&lt;br /&gt;
 export ANDROID_NDK=/path/to/android-ndk&lt;br /&gt;
&lt;br /&gt;
Add some useful binaries to your &#039;&#039;&#039;$PATH&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
 export PATH=$PATH:$ANDROID_SDK/platform-tools:$ANDROID_SDK/tools&lt;br /&gt;
&lt;br /&gt;
== Building ==&lt;br /&gt;
=== Get VLC Source ===&lt;br /&gt;
Clone the source from the VLC git!&lt;br /&gt;
&lt;br /&gt;
In your &#039;&#039;android&#039;&#039; source folder, run: &lt;br /&gt;
&lt;br /&gt;
 git clone https://code.videolan.org/videolan/vlc-android.git&lt;br /&gt;
&lt;br /&gt;
==== Setup Gradle build system ====&lt;br /&gt;
&lt;br /&gt;
Before using Android studio to compile the app, you must run &#039;&#039;&#039;compile.sh&#039;&#039;&#039; once to set up gradle build system.&lt;br /&gt;
&lt;br /&gt;
It should automatically populate mandatory local.properties and gradle.properties files with:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;local.properties&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 sdk.dir=&amp;lt;SDK path from $ANDROID_SDK&amp;gt;&lt;br /&gt;
 ndk.dir=&amp;lt;NDK path from $ANDROID_NDK&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This sets up gradle to build with correct SDK/NDK.&lt;br /&gt;
&lt;br /&gt;
Once this first compilation has succeeded, you can build from Android Studio with the &#039;&#039;&#039;Run&#039;&#039;&#039; command.&lt;br /&gt;
&lt;br /&gt;
=== Devices ===&lt;br /&gt;
&lt;br /&gt;
Find the ABI for the target device.&lt;br /&gt;
&lt;br /&gt;
* For a normal (2012-2015 consumer phone or tablet) device (e.g. Cortex-A8 or Cortex-A9)&lt;br /&gt;
 &amp;lt;code&amp;gt;armeabi-v7a&amp;lt;/code&amp;gt;&lt;br /&gt;
* For a Tegra2 device (no [[wikipedia:ARM_architecture#Advanced_SIMD_.28NEON.29|NEON]])&lt;br /&gt;
 &amp;lt;code&amp;gt;armeabi-v7a&amp;lt;/code&amp;gt;&lt;br /&gt;
* For an ARMv6 device&lt;br /&gt;
 &amp;lt;code&amp;gt;armeabi&amp;lt;/code&amp;gt;&lt;br /&gt;
* For an ARMv6 device that does not support FPU&lt;br /&gt;
 &amp;lt;code&amp;gt;armeabi-nofpu&amp;lt;/code&amp;gt;&lt;br /&gt;
* For an ARMv5 device or the Android Emulator&lt;br /&gt;
 &amp;lt;code&amp;gt;armeabi-v5&amp;lt;/code&amp;gt;&lt;br /&gt;
* For a x86 device (e.g. Android-x86, Google TV, Logitech TV, Android x86 smartphones, etc)&lt;br /&gt;
 &amp;lt;code&amp;gt;x86&amp;lt;/code&amp;gt;&lt;br /&gt;
* For a MIPS device (i.e. Ainol Novo tablets):&lt;br /&gt;
 &amp;lt;code&amp;gt;mips&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This value must be passed to the compile.sh script&lt;br /&gt;
&lt;br /&gt;
==== Compile ====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Read&#039;&#039;&#039; compile.sh first, as it contains some very useful and important information. Then run it:&lt;br /&gt;
 buildsystem/compile.sh -a &amp;lt;ABI&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039; At this point, you will get an auto-generated debug APK in the vlc-android/build/outputs/apk folder, signed with a debug key.&lt;br /&gt;
&lt;br /&gt;
In order to build a non-debug (release, and &#039;&#039;&#039;unsigned&#039;&#039;&#039;) package:&lt;br /&gt;
 buildsystem/compile.sh release&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039; At this point, you will get an release APK in the same folder.&lt;br /&gt;
&lt;br /&gt;
==== Build LibVLC ====&lt;br /&gt;
&lt;br /&gt;
To build LibVLC, simply pass the -l option:&lt;br /&gt;
 buildsystem/compile.sh -l -a &amp;lt;ABI&amp;gt; -r&lt;br /&gt;
&lt;br /&gt;
.aar archive will be located in libvlc/build/outputs/aar/&lt;br /&gt;
&lt;br /&gt;
==== Gradle tweaks ====&lt;br /&gt;
&lt;br /&gt;
To improve gradle execution time, try these options by writing this in gradle.properties in vlc android project.&lt;br /&gt;
Or directly in your ~/.gradle/gradle.properties&lt;br /&gt;
 org.gradle.parallel=true&lt;br /&gt;
 org.gradle.configureondemand=true&lt;br /&gt;
 # If you have a BUNCH of RAM available&lt;br /&gt;
 org.gradle.daemon=true&lt;br /&gt;
 org.gradle.jvmargs=-Xmx2048M&lt;br /&gt;
&lt;br /&gt;
=== Run ===&lt;br /&gt;
Run it and enjoy!&lt;br /&gt;
&lt;br /&gt;
=== Troubleshooting ===&lt;br /&gt;
==== Compilation error on Dependencies ====&lt;br /&gt;
Sometimes, especially when gradle dependencies have been upgraded, the &#039;&#039;compile.sh&#039;&#039; will fail to refetch dependencies. Just close Android Studio and re-run the script to fix this issue.&lt;br /&gt;
&lt;br /&gt;
== Debugging ==&lt;br /&gt;
Here are some helpful links if you wish to debug VLC on Android:&lt;br /&gt;
* [http://developer.android.com/guide/developing/debugging/ddms.html DDMS] &lt;br /&gt;
* [http://developer.android.com/guide/developing/tools/logcat.html Logcat]&lt;br /&gt;
&lt;br /&gt;
===Native debugging===&lt;br /&gt;
If you run VLC Android and you get a crash that looks something like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
I/DEBUG   (  958): *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***&lt;br /&gt;
I/DEBUG   (  958): Build fingerprint: &#039;MOTO/MBTCA/sesame/XT300:2.1-update1/SESLA_U3_01.71.0/110110:user/release-keys&#039;&lt;br /&gt;
I/DEBUG   (  958): pid: 1733, tid: 1733 &amp;gt;&amp;gt;&amp;gt; org.videolan.vlc &amp;lt;&amp;lt;&amp;lt;&lt;br /&gt;
I/DEBUG   (  958): signal 11 (SIGSEGV), fault addr 4237be3c&lt;br /&gt;
I/DEBUG   (  958):  r0 423640a0  r1 7ece77ac  r2 42bccdac  r3 4237be38&lt;br /&gt;
I/DEBUG   (  958):  r4 00000000  r5 42bccdac  r6 002ed088  r7 002ed018&lt;br /&gt;
I/DEBUG   (  958):  r8 7ece78e8  r9 2bafa844  10 0000000e  fp 7ece794c&lt;br /&gt;
I/DEBUG   (  958):  ip 00002ba0  sp 7ece7784  lr 423652e4  pc 4237be3c  cpsr 60000010&lt;br /&gt;
I/DEBUG   (  958):          #00  pc 0037be3c  /data/data/org.videolan.vlc/lib/libvlcjni.so&lt;br /&gt;
I/DEBUG   (  958):          #01  lr 423652e4  /data/data/org.videolan.vlc/lib/libvlcjni.so&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You have a &#039;&#039;&#039;native crash&#039;&#039;&#039;. To debug it, you need to have compiled VLC as above and installed it on your device. Once your compiled VLC build is on your device, you can find the &#039;&#039;&#039;backtrace&#039;&#039;&#039; as follows:&lt;br /&gt;
&lt;br /&gt;
# Make sure you are in the directory that you checked out VLC-Android in.&lt;br /&gt;
# Migrate the libvlc folders. (Do this every time the code is recompiled)&lt;br /&gt;
## cp -r libvlc/jni vlc-android&lt;br /&gt;
## cp -r libvlc/libs vlc-android&lt;br /&gt;
## cp -r libvlc/obj vlc-android&lt;br /&gt;
## (This is because the libvlc and VLC for Android folders were split yet the debugger needs the object files from both.)&lt;br /&gt;
# cd vlc-android&lt;br /&gt;
# $ANDROID_NDK/ndk-gdb --verbose --force --start&lt;br /&gt;
At this point, lots of stuff will appear:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Android NDK installation path: /opt/android-ndk-r8c&lt;br /&gt;
Using default adb command: /opt/android-sdk-linux_x86/platform-tools/adb&lt;br /&gt;
ADB version found: Android Debug Bridge version 1.0.29&lt;br /&gt;
Using ADB flags: &lt;br /&gt;
Using auto-detected project path: .&lt;br /&gt;
Found package name: org.videolan.vlc&lt;br /&gt;
...bunch of stuff skipped...&lt;br /&gt;
GNU gdb (GDB) 7.3.1-gg2&lt;br /&gt;
Copyright (C) 2011 Free Software Foundation, Inc.&lt;br /&gt;
License GPLv3+: GNU GPL version 3 or later &amp;lt;http://gnu.org/licenses/gpl.html&amp;gt;&lt;br /&gt;
This is free software: you are free to change and redistribute it.&lt;br /&gt;
There is NO WARRANTY, to the extent permitted by law.  Type &amp;quot;show copying&amp;quot;&lt;br /&gt;
and &amp;quot;show warranty&amp;quot; for details.&lt;br /&gt;
This GDB was configured as &amp;quot;--host=x86_64-linux-gnu --target=arm-linux-android&amp;quot;.&lt;br /&gt;
For bug reporting instructions, please see:&lt;br /&gt;
&amp;lt;http://www.gnu.org/software/gdb/bugs/&amp;gt;.&lt;br /&gt;
Remote debugging from host 0.0.0.0&lt;br /&gt;
...bunch of stuff skipped...&lt;br /&gt;
libthread_db:td_ta_new: Victory: We can debug theads!&lt;br /&gt;
warning: Breakpoint address adjusted from 0x400deaa5 to 0x400deaa4.&lt;br /&gt;
0x40107a40 in epoll_wait () from /media/data/vlc_android/vlc-android/obj/local/armeabi/libc.so&lt;br /&gt;
(gdb)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;ol start=&amp;quot;4&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;At this point, type in &amp;quot;continue&amp;quot; and press Enter.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Perform the actions you did to make it crash. It will spit out something like this:&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Program received signal SIGSEGV, Segmentation fault.&lt;br /&gt;
0x401120ae in ?? () from /media/data/vlc_android/vlc-android/obj/local/armeabi/libc.so&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;ol start=&amp;quot;6&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Now, just type in &amp;quot;&#039;&#039;&#039;bt full&#039;&#039;&#039;&amp;quot; (excluding the quotation marks) and press Enter. That is your backtrace that you should give to the developers when they ask for it (possibly on a [http://paste.kde.org/ pastebin], too).&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
(gdb) bt full&lt;br /&gt;
#0  0x401120ae in ?? () from /media/data/vlc_android/vlc-android/obj/local/armeabi/libc.so&lt;br /&gt;
No symbol table info available.&lt;br /&gt;
#1  0x40107bd8 in abort () from /media/data/vlc_android/vlc-android/obj/local/armeabi/libc.so&lt;br /&gt;
No symbol table info available.&lt;br /&gt;
#2  0x40118e6a in __assert2 () from /media/data/vlc_android/vlc-android/obj/local/armeabi/libc.so&lt;br /&gt;
No symbol table info available.&lt;br /&gt;
#3  0x5e0cdfdc in var_SetChecked (p_this=0x40134b94, psz_name=0x5ea2fcb8 &amp;quot;rate&amp;quot;, expected_type=80, val=...) at ../../src/misc/variables.c:711&lt;br /&gt;
        i_ret = 0&lt;br /&gt;
        p_var = &amp;lt;optimized out&amp;gt;&lt;br /&gt;
        oldval = {i_int = 4742037487051810480, b_bool = 176, f_float = 2.27765068e+14, psz_string = 0x574f26b0 &amp;quot;X\270|B\001\001&amp;quot;, p_address = 0x574f26b0, &lt;br /&gt;
          p_object = 0x574f26b0, p_list = 0x574f26b0, i_time = 4742037487051810480, coords = {x = 1464805040, y = 1104091640}}&lt;br /&gt;
        __func__ = &amp;quot;var_SetChecked&amp;quot;&lt;br /&gt;
        p_priv = &amp;lt;optimized out&amp;gt;&lt;br /&gt;
#4  0x5e06dd9c in var_SetFloat (f=1.41421354, psz_name=0x5ea2fcb8 &amp;quot;rate____sample_backtrace&amp;quot;, p_obj=0x0) at ../../include/vlc_variables.h:262&lt;br /&gt;
        val = &amp;lt;optimized out&amp;gt;&lt;br /&gt;
#5  libvlc_media_player_set_rate (p_mi=0x0, rate=1.41421354) at ../../lib/media_player.c:1252&lt;br /&gt;
        p_input_thread = &amp;lt;optimized out&amp;gt;&lt;br /&gt;
#6  0x5de7bd18 in Java_org_videolan_vlc_LibVLC_setRate (env=0x41cf0470, thiz=0x8ab00021, rate=1.41421354) at jni/libvlcjni.c:678&lt;br /&gt;
        mp = 0x0&lt;br /&gt;
#7  0x4076de34 in ?? ()&lt;br /&gt;
No symbol table info available.&lt;br /&gt;
#8  0x4076de34 in ?? ()&lt;br /&gt;
No symbol table info available.&lt;br /&gt;
Backtrace stopped: previous frame identical to this frame (corrupt stack?)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Troubleshooting ==&lt;br /&gt;
=== Outdated Awk ===&lt;br /&gt;
If you receive the error message while building:&lt;br /&gt;
&lt;br /&gt;
 Android NDK: Host &#039;awk&#039; tool is outdated. Please define HOST_AWK to point to Gawk or Nawk !    &lt;br /&gt;
&lt;br /&gt;
The prebuilt version of Awk that comes with the Android NDK is outdated. Defining HOST_AWK in your environment does nothing as the system still tries to just the one that comes with the Android NDK. To get around this issue, simply rename or delete the Awk binary that comes with the Android NDK. For example to move it:&lt;br /&gt;
&lt;br /&gt;
 mv $ANDROID_NDK/prebuilt/linux-x86/bin/awk $ANDROID_NDK/prebuilt/linux-x86/bin/awk.old&lt;br /&gt;
&lt;br /&gt;
=== Can&#039;t find Ant ===&lt;br /&gt;
If you&#039;re new to Ant, please be aware that some Linux distributions don&#039;t install it in the usual spot as with other programs. Try checking to see if the directory /usr/share/java/apache-ant/bin exists and add it to your path.&lt;br /&gt;
&lt;br /&gt;
===Outdated autotools-dev===&lt;br /&gt;
If you get the following error message you may have have an outdated version of autotools-dev:&lt;br /&gt;
  Invalid configuration `arm-linux-androideabi&#039;: system `androideabi&#039; not recognized&lt;br /&gt;
You may first want to check if your distribution has any available updates for this package.  Alternatively, you can manually update your config.guess and config.sub files from here: [http://git.savannah.gnu.org/gitweb/?p=config.git;a=tree].  These files are typically located in /usr/share/misc on Debian based distributions.&lt;br /&gt;
&lt;br /&gt;
===autoreconf: automake failed with exit status: 1===&lt;br /&gt;
 automake: warnings are treated as errors&lt;br /&gt;
 configure.ac:41: warning: The &#039;AM_PROG_MKDIR_P&#039; macro is deprecated, and will soon be removed.&lt;br /&gt;
 configure.ac:41: You should use the Autoconf-provided &#039;AC_PROG_MKDIR_P&#039; macro instead,&lt;br /&gt;
 configure.ac:41: and use &#039;$(MKDIR_P)&#039; instead of &#039;$(mkdir_p)&#039;in your Makefile.am files.&lt;br /&gt;
&lt;br /&gt;
If you are using Automake 1.13 or higher, you must remove -Werror from vlc/contrib/android/gnutls/configure.ac to continue. (First reported in [http://forum.videolan.org/viewtopic.php?f=35&amp;amp;t=108927])&lt;br /&gt;
&lt;br /&gt;
===autoreconf: automake failed with exit status: 1 ===&lt;br /&gt;
 make: *** [dvdnav] Error 1&lt;br /&gt;
 ...&lt;br /&gt;
 ... error: possibly undefined macro: AM_PROG_LIBTOOL&lt;br /&gt;
&lt;br /&gt;
This error may occur when compiling with an older Linux distribution, such as Ubuntu 12.04, that doesn&#039;t meet bootstrap prerequisites. As of 2014-08-09, the master branch for vlc-ports/android.git [http://git.videolan.org/?p=vlc-ports/android.git;a=summary] lacks patch 5199 [https://patches.videolan.org/patch/5199/]. Without the patch, compile.sh builds out dated automake and autoconf that may not access libtool despite presence of a current libtool binary amongst supporting tools and a similar or more recent binary present as part of the OS.&lt;br /&gt;
&lt;br /&gt;
To work around this error, patch the master branch or update the prerequisites. For Ubuntu 12.04, upgrade autoconf, automake, and cmake as dictated by vlc/extras/tools/bootstrap.&lt;br /&gt;
&lt;br /&gt;
===Can&#039;t run aapt or adb on Linux 64-bit===&lt;br /&gt;
You must install the 32-bit libraries of the following libraries, as the precompiled Google binaries depend on them: &#039;&#039;libc6&#039;&#039;, &#039;&#039;libstdc++6&#039;&#039;, and &#039;&#039;zlib&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
New versions of Debian and/or Ubuntu require you to install i386 versions of packages:&lt;br /&gt;
 sudo dpkg --add-architecture i386&lt;br /&gt;
 sudo apt-get update&lt;br /&gt;
 sudo apt-get install zlib1g:i386 libstdc++6:i386 libc6:i386&lt;br /&gt;
&lt;br /&gt;
If you are under &#039;&#039;old versions&#039;&#039; of Ubuntu, install ia32-libs can help you solve this issue.&lt;br /&gt;
 sudo apt-get install ia32-libs&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
* [[Android Report bugs]] - Bug reporting guide for VLC-Android.&lt;br /&gt;
&lt;br /&gt;
[[Category:Building]] [[Category:Android]]&lt;/div&gt;</summary>
		<author><name>Dekans</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=AndroidCompile&amp;diff=61988</id>
		<title>AndroidCompile</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=AndroidCompile&amp;diff=61988"/>
		<updated>2019-12-23T10:36:13Z</updated>

		<summary type="html">&lt;p&gt;Dekans: /* Build LibVLC */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page is an introduction to the compilation of &#039;&#039;&#039;VLC for Android&#039;&#039;&#039; on Linux. &lt;br /&gt;
&lt;br /&gt;
==Android Studio, SDK and NDK installation==&lt;br /&gt;
&lt;br /&gt;
=== Requirements  ===&lt;br /&gt;
* You &#039;&#039;&#039;MUST&#039;&#039;&#039; build on Linux (or OSX if you know what you are doing).&lt;br /&gt;
* The following packages &#039;&#039;&#039;MUST&#039;&#039;&#039; must be installed:&lt;br /&gt;
** the GNU autotools: &#039;&#039;autoconf&#039;&#039;, &#039;&#039;libtool&#039;&#039;, &#039;&#039;automake&#039;&#039; and &#039;&#039;make&#039;&#039; (a.k.a. &#039;&#039;gmake&#039;&#039;)&lt;br /&gt;
** ...and their dependencies: &#039;&#039;m4&#039;&#039; and &#039;&#039;gawk&#039;&#039;, &#039;&#039;mawk&#039;&#039; or &#039;&#039;nawk&#039;&#039;,&lt;br /&gt;
** the GNU C and C++ compilers a.k.a. &#039;&#039;gcc&#039;&#039; and &#039;&#039;g++&#039;&#039;,&lt;br /&gt;
** some GNU build utilities: &#039;&#039;pkg-config&#039;&#039; and &#039;&#039;patch&#039;&#039;,&lt;br /&gt;
** the following other build utilities: &#039;&#039;Apache Ant&#039;&#039; (or &#039;&#039;Ant&#039;&#039;), &#039;&#039;cmake&#039;&#039;, &#039;&#039;protobuf&#039;&#039;, &#039;&#039;ragel&#039;&#039;,&lt;br /&gt;
** the Subversion and Git version control systems&lt;br /&gt;
** &#039;&#039;unzip&#039;&#039; and either &#039;&#039;curl&#039;&#039; or &#039;&#039;wget&#039;&#039; for retreiving sources.&lt;br /&gt;
* Very recent versions of some of those tools may be required. At the time of writing, notably gettext 0.19.3 or later is required.&lt;br /&gt;
* If any of the above is missing, expect the build to fail at some point.&lt;br /&gt;
* If targeting an Android-x86 device, &#039;&#039;yasm&#039;&#039; must be installed too.&lt;br /&gt;
&lt;br /&gt;
Precise lists of tools dependencies is listed [https://git.videolan.org/?p=vlc.git;a=blob;f=extras/tools/bootstrap;h=e60e5ebf93e69e7bb731e80d0fbc6ebd1226dfdb;hb=HEAD#l73 here].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color: #ff0000&amp;quot;&amp;gt;&#039;&#039;&#039;64-bit users&#039;&#039;&#039;&amp;lt;/span&amp;gt;: You must install these 32-bit libs as specified here: [[#Can.27t_run_aapt_or_adb_on_Linux_64-bit]]&lt;br /&gt;
&lt;br /&gt;
==== Example on Ubuntu ====&lt;br /&gt;
Install the packages as follow:&lt;br /&gt;
 sudo apt-get install automake ant autopoint cmake build-essential libtool-bin \&lt;br /&gt;
      patch pkg-config protobuf-compiler ragel subversion unzip git \&lt;br /&gt;
     openjdk-8-jre openjdk-8-jdk flex python wget&lt;br /&gt;
&lt;br /&gt;
=== SDK &amp;amp; Android Studio ===&lt;br /&gt;
# Go to [http://developer.android.com/sdk/index.html Android SDK/IDE page].&lt;br /&gt;
# Android Studio is recommended, but not mandatory!&lt;br /&gt;
&lt;br /&gt;
===Android NDK===&lt;br /&gt;
# Check that the SDK installation is correct. &lt;br /&gt;
# Go to the [https://developer.android.com/ndk/downloads/index.html Android NDK page] and download the &#039;&#039;&#039;NDK r18b&#039;&#039;&#039; for Linux. &lt;br /&gt;
# Decompress it to install&lt;br /&gt;
&lt;br /&gt;
== Environment setup  ==&lt;br /&gt;
Set &#039;&#039;&#039;$ANDROID_SDK&#039;&#039;&#039; to point to your Android SDK directory &lt;br /&gt;
&lt;br /&gt;
 export ANDROID_SDK=/path/to/android-sdk&lt;br /&gt;
&lt;br /&gt;
Set &#039;&#039;&#039;$ANDROID_NDK&#039;&#039;&#039; to point to your Android NDK directory &lt;br /&gt;
&lt;br /&gt;
 export ANDROID_NDK=/path/to/android-ndk&lt;br /&gt;
&lt;br /&gt;
Add some useful binaries to your &#039;&#039;&#039;$PATH&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
 export PATH=$PATH:$ANDROID_SDK/platform-tools:$ANDROID_SDK/tools&lt;br /&gt;
&lt;br /&gt;
== Building ==&lt;br /&gt;
=== Get VLC Source ===&lt;br /&gt;
Clone the source from the VLC git!&lt;br /&gt;
&lt;br /&gt;
In your &#039;&#039;android&#039;&#039; source folder, run: &lt;br /&gt;
&lt;br /&gt;
 git clone https://code.videolan.org/videolan/vlc-android.git&lt;br /&gt;
&lt;br /&gt;
==== Setup Gradle build system ====&lt;br /&gt;
&lt;br /&gt;
Before using Android studio to compile the app, you must run &#039;&#039;&#039;compile.sh&#039;&#039;&#039; once to set up gradle build system.&lt;br /&gt;
&lt;br /&gt;
It should automatically populate mandatory local.properties and gradle.properties files with:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;local.properties&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 sdk.dir=&amp;lt;SDK path from $ANDROID_SDK&amp;gt;&lt;br /&gt;
 ndk.dir=&amp;lt;NDK path from $ANDROID_NDK&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This sets up gradle to build with correct SDK/NDK.&lt;br /&gt;
&lt;br /&gt;
Once this first compilation has succeeded, you can build from Android Studio with the &#039;&#039;&#039;Run&#039;&#039;&#039; command.&lt;br /&gt;
&lt;br /&gt;
=== Devices ===&lt;br /&gt;
&lt;br /&gt;
Find the ABI for the target device.&lt;br /&gt;
&lt;br /&gt;
* For a normal (2012-2015 consumer phone or tablet) device (e.g. Cortex-A8 or Cortex-A9)&lt;br /&gt;
 &amp;lt;code&amp;gt;armeabi-v7a&amp;lt;/code&amp;gt;&lt;br /&gt;
* For a Tegra2 device (no [[wikipedia:ARM_architecture#Advanced_SIMD_.28NEON.29|NEON]])&lt;br /&gt;
 &amp;lt;code&amp;gt;armeabi-v7a&amp;lt;/code&amp;gt;&lt;br /&gt;
* For an ARMv6 device&lt;br /&gt;
 &amp;lt;code&amp;gt;armeabi&amp;lt;/code&amp;gt;&lt;br /&gt;
* For an ARMv6 device that does not support FPU&lt;br /&gt;
 &amp;lt;code&amp;gt;armeabi-nofpu&amp;lt;/code&amp;gt;&lt;br /&gt;
* For an ARMv5 device or the Android Emulator&lt;br /&gt;
 &amp;lt;code&amp;gt;armeabi-v5&amp;lt;/code&amp;gt;&lt;br /&gt;
* For a x86 device (e.g. Android-x86, Google TV, Logitech TV, Android x86 smartphones, etc)&lt;br /&gt;
 &amp;lt;code&amp;gt;x86&amp;lt;/code&amp;gt;&lt;br /&gt;
* For a MIPS device (i.e. Ainol Novo tablets):&lt;br /&gt;
 &amp;lt;code&amp;gt;mips&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This value must be passed to the compile.sh script&lt;br /&gt;
&lt;br /&gt;
==== Compile ====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Read&#039;&#039;&#039; compile.sh first, as it contains some very useful and important information. Then run it:&lt;br /&gt;
 buildsystem/compile.sh -a &amp;lt;ABI&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039; At this point, you will get an auto-generated debug APK in the vlc-android/build/outputs/apk folder, signed with a debug key.&lt;br /&gt;
&lt;br /&gt;
In order to build a non-debug (release, and &#039;&#039;&#039;unsigned&#039;&#039;&#039;) package:&lt;br /&gt;
 buildsystem/compile.sh release&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039; At this point, you will get an release APK in the same folder.&lt;br /&gt;
&lt;br /&gt;
==== Build LibVLC ====&lt;br /&gt;
&lt;br /&gt;
To build LibVLC, simply pass the -l option:&lt;br /&gt;
  buildsystem/compile.sh -l -a &amp;lt;ABI&amp;gt; -r&lt;br /&gt;
&lt;br /&gt;
.aar archive will be located in libvlc/build/outputs/aar/&lt;br /&gt;
&lt;br /&gt;
==== Gradle tweaks ====&lt;br /&gt;
&lt;br /&gt;
To improve gradle execution time, try these options by writing this in gradle.properties in vlc android project.&lt;br /&gt;
Or directly in your ~/.gradle/gradle.properties&lt;br /&gt;
 org.gradle.parallel=true&lt;br /&gt;
 org.gradle.configureondemand=true&lt;br /&gt;
 # If you have a BUNCH of RAM available&lt;br /&gt;
 org.gradle.daemon=true&lt;br /&gt;
 org.gradle.jvmargs=-Xmx2048M&lt;br /&gt;
&lt;br /&gt;
=== Run ===&lt;br /&gt;
Run it and enjoy!&lt;br /&gt;
&lt;br /&gt;
=== Troubleshooting ===&lt;br /&gt;
==== Compilation error on Dependencies ====&lt;br /&gt;
Sometimes, especially when gradle dependencies have been upgraded, the &#039;&#039;compile.sh&#039;&#039; will fail to refetch dependencies. Just close Android Studio and re-run the script to fix this issue.&lt;br /&gt;
&lt;br /&gt;
== Debugging ==&lt;br /&gt;
Here are some helpful links if you wish to debug VLC on Android:&lt;br /&gt;
* [http://developer.android.com/guide/developing/debugging/ddms.html DDMS] &lt;br /&gt;
* [http://developer.android.com/guide/developing/tools/logcat.html Logcat]&lt;br /&gt;
&lt;br /&gt;
===Native debugging===&lt;br /&gt;
If you run VLC Android and you get a crash that looks something like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
I/DEBUG   (  958): *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***&lt;br /&gt;
I/DEBUG   (  958): Build fingerprint: &#039;MOTO/MBTCA/sesame/XT300:2.1-update1/SESLA_U3_01.71.0/110110:user/release-keys&#039;&lt;br /&gt;
I/DEBUG   (  958): pid: 1733, tid: 1733 &amp;gt;&amp;gt;&amp;gt; org.videolan.vlc &amp;lt;&amp;lt;&amp;lt;&lt;br /&gt;
I/DEBUG   (  958): signal 11 (SIGSEGV), fault addr 4237be3c&lt;br /&gt;
I/DEBUG   (  958):  r0 423640a0  r1 7ece77ac  r2 42bccdac  r3 4237be38&lt;br /&gt;
I/DEBUG   (  958):  r4 00000000  r5 42bccdac  r6 002ed088  r7 002ed018&lt;br /&gt;
I/DEBUG   (  958):  r8 7ece78e8  r9 2bafa844  10 0000000e  fp 7ece794c&lt;br /&gt;
I/DEBUG   (  958):  ip 00002ba0  sp 7ece7784  lr 423652e4  pc 4237be3c  cpsr 60000010&lt;br /&gt;
I/DEBUG   (  958):          #00  pc 0037be3c  /data/data/org.videolan.vlc/lib/libvlcjni.so&lt;br /&gt;
I/DEBUG   (  958):          #01  lr 423652e4  /data/data/org.videolan.vlc/lib/libvlcjni.so&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You have a &#039;&#039;&#039;native crash&#039;&#039;&#039;. To debug it, you need to have compiled VLC as above and installed it on your device. Once your compiled VLC build is on your device, you can find the &#039;&#039;&#039;backtrace&#039;&#039;&#039; as follows:&lt;br /&gt;
&lt;br /&gt;
# Make sure you are in the directory that you checked out VLC-Android in.&lt;br /&gt;
# Migrate the libvlc folders. (Do this every time the code is recompiled)&lt;br /&gt;
## cp -r libvlc/jni vlc-android&lt;br /&gt;
## cp -r libvlc/libs vlc-android&lt;br /&gt;
## cp -r libvlc/obj vlc-android&lt;br /&gt;
## (This is because the libvlc and VLC for Android folders were split yet the debugger needs the object files from both.)&lt;br /&gt;
# cd vlc-android&lt;br /&gt;
# $ANDROID_NDK/ndk-gdb --verbose --force --start&lt;br /&gt;
At this point, lots of stuff will appear:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Android NDK installation path: /opt/android-ndk-r8c&lt;br /&gt;
Using default adb command: /opt/android-sdk-linux_x86/platform-tools/adb&lt;br /&gt;
ADB version found: Android Debug Bridge version 1.0.29&lt;br /&gt;
Using ADB flags: &lt;br /&gt;
Using auto-detected project path: .&lt;br /&gt;
Found package name: org.videolan.vlc&lt;br /&gt;
...bunch of stuff skipped...&lt;br /&gt;
GNU gdb (GDB) 7.3.1-gg2&lt;br /&gt;
Copyright (C) 2011 Free Software Foundation, Inc.&lt;br /&gt;
License GPLv3+: GNU GPL version 3 or later &amp;lt;http://gnu.org/licenses/gpl.html&amp;gt;&lt;br /&gt;
This is free software: you are free to change and redistribute it.&lt;br /&gt;
There is NO WARRANTY, to the extent permitted by law.  Type &amp;quot;show copying&amp;quot;&lt;br /&gt;
and &amp;quot;show warranty&amp;quot; for details.&lt;br /&gt;
This GDB was configured as &amp;quot;--host=x86_64-linux-gnu --target=arm-linux-android&amp;quot;.&lt;br /&gt;
For bug reporting instructions, please see:&lt;br /&gt;
&amp;lt;http://www.gnu.org/software/gdb/bugs/&amp;gt;.&lt;br /&gt;
Remote debugging from host 0.0.0.0&lt;br /&gt;
...bunch of stuff skipped...&lt;br /&gt;
libthread_db:td_ta_new: Victory: We can debug theads!&lt;br /&gt;
warning: Breakpoint address adjusted from 0x400deaa5 to 0x400deaa4.&lt;br /&gt;
0x40107a40 in epoll_wait () from /media/data/vlc_android/vlc-android/obj/local/armeabi/libc.so&lt;br /&gt;
(gdb)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;ol start=&amp;quot;4&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;At this point, type in &amp;quot;continue&amp;quot; and press Enter.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Perform the actions you did to make it crash. It will spit out something like this:&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Program received signal SIGSEGV, Segmentation fault.&lt;br /&gt;
0x401120ae in ?? () from /media/data/vlc_android/vlc-android/obj/local/armeabi/libc.so&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;ol start=&amp;quot;6&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Now, just type in &amp;quot;&#039;&#039;&#039;bt full&#039;&#039;&#039;&amp;quot; (excluding the quotation marks) and press Enter. That is your backtrace that you should give to the developers when they ask for it (possibly on a [http://paste.kde.org/ pastebin], too).&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
(gdb) bt full&lt;br /&gt;
#0  0x401120ae in ?? () from /media/data/vlc_android/vlc-android/obj/local/armeabi/libc.so&lt;br /&gt;
No symbol table info available.&lt;br /&gt;
#1  0x40107bd8 in abort () from /media/data/vlc_android/vlc-android/obj/local/armeabi/libc.so&lt;br /&gt;
No symbol table info available.&lt;br /&gt;
#2  0x40118e6a in __assert2 () from /media/data/vlc_android/vlc-android/obj/local/armeabi/libc.so&lt;br /&gt;
No symbol table info available.&lt;br /&gt;
#3  0x5e0cdfdc in var_SetChecked (p_this=0x40134b94, psz_name=0x5ea2fcb8 &amp;quot;rate&amp;quot;, expected_type=80, val=...) at ../../src/misc/variables.c:711&lt;br /&gt;
        i_ret = 0&lt;br /&gt;
        p_var = &amp;lt;optimized out&amp;gt;&lt;br /&gt;
        oldval = {i_int = 4742037487051810480, b_bool = 176, f_float = 2.27765068e+14, psz_string = 0x574f26b0 &amp;quot;X\270|B\001\001&amp;quot;, p_address = 0x574f26b0, &lt;br /&gt;
          p_object = 0x574f26b0, p_list = 0x574f26b0, i_time = 4742037487051810480, coords = {x = 1464805040, y = 1104091640}}&lt;br /&gt;
        __func__ = &amp;quot;var_SetChecked&amp;quot;&lt;br /&gt;
        p_priv = &amp;lt;optimized out&amp;gt;&lt;br /&gt;
#4  0x5e06dd9c in var_SetFloat (f=1.41421354, psz_name=0x5ea2fcb8 &amp;quot;rate____sample_backtrace&amp;quot;, p_obj=0x0) at ../../include/vlc_variables.h:262&lt;br /&gt;
        val = &amp;lt;optimized out&amp;gt;&lt;br /&gt;
#5  libvlc_media_player_set_rate (p_mi=0x0, rate=1.41421354) at ../../lib/media_player.c:1252&lt;br /&gt;
        p_input_thread = &amp;lt;optimized out&amp;gt;&lt;br /&gt;
#6  0x5de7bd18 in Java_org_videolan_vlc_LibVLC_setRate (env=0x41cf0470, thiz=0x8ab00021, rate=1.41421354) at jni/libvlcjni.c:678&lt;br /&gt;
        mp = 0x0&lt;br /&gt;
#7  0x4076de34 in ?? ()&lt;br /&gt;
No symbol table info available.&lt;br /&gt;
#8  0x4076de34 in ?? ()&lt;br /&gt;
No symbol table info available.&lt;br /&gt;
Backtrace stopped: previous frame identical to this frame (corrupt stack?)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Troubleshooting ==&lt;br /&gt;
=== Outdated Awk ===&lt;br /&gt;
If you receive the error message while building:&lt;br /&gt;
&lt;br /&gt;
 Android NDK: Host &#039;awk&#039; tool is outdated. Please define HOST_AWK to point to Gawk or Nawk !    &lt;br /&gt;
&lt;br /&gt;
The prebuilt version of Awk that comes with the Android NDK is outdated. Defining HOST_AWK in your environment does nothing as the system still tries to just the one that comes with the Android NDK. To get around this issue, simply rename or delete the Awk binary that comes with the Android NDK. For example to move it:&lt;br /&gt;
&lt;br /&gt;
 mv $ANDROID_NDK/prebuilt/linux-x86/bin/awk $ANDROID_NDK/prebuilt/linux-x86/bin/awk.old&lt;br /&gt;
&lt;br /&gt;
=== Can&#039;t find Ant ===&lt;br /&gt;
If you&#039;re new to Ant, please be aware that some Linux distributions don&#039;t install it in the usual spot as with other programs. Try checking to see if the directory /usr/share/java/apache-ant/bin exists and add it to your path.&lt;br /&gt;
&lt;br /&gt;
===Outdated autotools-dev===&lt;br /&gt;
If you get the following error message you may have have an outdated version of autotools-dev:&lt;br /&gt;
  Invalid configuration `arm-linux-androideabi&#039;: system `androideabi&#039; not recognized&lt;br /&gt;
You may first want to check if your distribution has any available updates for this package.  Alternatively, you can manually update your config.guess and config.sub files from here: [http://git.savannah.gnu.org/gitweb/?p=config.git;a=tree].  These files are typically located in /usr/share/misc on Debian based distributions.&lt;br /&gt;
&lt;br /&gt;
===autoreconf: automake failed with exit status: 1===&lt;br /&gt;
 automake: warnings are treated as errors&lt;br /&gt;
 configure.ac:41: warning: The &#039;AM_PROG_MKDIR_P&#039; macro is deprecated, and will soon be removed.&lt;br /&gt;
 configure.ac:41: You should use the Autoconf-provided &#039;AC_PROG_MKDIR_P&#039; macro instead,&lt;br /&gt;
 configure.ac:41: and use &#039;$(MKDIR_P)&#039; instead of &#039;$(mkdir_p)&#039;in your Makefile.am files.&lt;br /&gt;
&lt;br /&gt;
If you are using Automake 1.13 or higher, you must remove -Werror from vlc/contrib/android/gnutls/configure.ac to continue. (First reported in [http://forum.videolan.org/viewtopic.php?f=35&amp;amp;t=108927])&lt;br /&gt;
&lt;br /&gt;
===autoreconf: automake failed with exit status: 1 ===&lt;br /&gt;
 make: *** [dvdnav] Error 1&lt;br /&gt;
 ...&lt;br /&gt;
 ... error: possibly undefined macro: AM_PROG_LIBTOOL&lt;br /&gt;
&lt;br /&gt;
This error may occur when compiling with an older Linux distribution, such as Ubuntu 12.04, that doesn&#039;t meet bootstrap prerequisites. As of 2014-08-09, the master branch for vlc-ports/android.git [http://git.videolan.org/?p=vlc-ports/android.git;a=summary] lacks patch 5199 [https://patches.videolan.org/patch/5199/]. Without the patch, compile.sh builds out dated automake and autoconf that may not access libtool despite presence of a current libtool binary amongst supporting tools and a similar or more recent binary present as part of the OS.&lt;br /&gt;
&lt;br /&gt;
To work around this error, patch the master branch or update the prerequisites. For Ubuntu 12.04, upgrade autoconf, automake, and cmake as dictated by vlc/extras/tools/bootstrap.&lt;br /&gt;
&lt;br /&gt;
===Can&#039;t run aapt or adb on Linux 64-bit===&lt;br /&gt;
You must install the 32-bit libraries of the following libraries, as the precompiled Google binaries depend on them: &#039;&#039;libc6&#039;&#039;, &#039;&#039;libstdc++6&#039;&#039;, and &#039;&#039;zlib&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
New versions of Debian and/or Ubuntu require you to install i386 versions of packages:&lt;br /&gt;
 sudo dpkg --add-architecture i386&lt;br /&gt;
 sudo apt-get update&lt;br /&gt;
 sudo apt-get install zlib1g:i386 libstdc++6:i386 libc6:i386&lt;br /&gt;
&lt;br /&gt;
If you are under &#039;&#039;old versions&#039;&#039; of Ubuntu, install ia32-libs can help you solve this issue.&lt;br /&gt;
 sudo apt-get install ia32-libs&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
* [[Android Report bugs]] - Bug reporting guide for VLC-Android.&lt;br /&gt;
&lt;br /&gt;
[[Category:Building]] [[Category:Android]]&lt;/div&gt;</summary>
		<author><name>Dekans</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=AndroidCompile&amp;diff=61987</id>
		<title>AndroidCompile</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=AndroidCompile&amp;diff=61987"/>
		<updated>2019-12-23T10:35:58Z</updated>

		<summary type="html">&lt;p&gt;Dekans: Change compile script location&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page is an introduction to the compilation of &#039;&#039;&#039;VLC for Android&#039;&#039;&#039; on Linux. &lt;br /&gt;
&lt;br /&gt;
==Android Studio, SDK and NDK installation==&lt;br /&gt;
&lt;br /&gt;
=== Requirements  ===&lt;br /&gt;
* You &#039;&#039;&#039;MUST&#039;&#039;&#039; build on Linux (or OSX if you know what you are doing).&lt;br /&gt;
* The following packages &#039;&#039;&#039;MUST&#039;&#039;&#039; must be installed:&lt;br /&gt;
** the GNU autotools: &#039;&#039;autoconf&#039;&#039;, &#039;&#039;libtool&#039;&#039;, &#039;&#039;automake&#039;&#039; and &#039;&#039;make&#039;&#039; (a.k.a. &#039;&#039;gmake&#039;&#039;)&lt;br /&gt;
** ...and their dependencies: &#039;&#039;m4&#039;&#039; and &#039;&#039;gawk&#039;&#039;, &#039;&#039;mawk&#039;&#039; or &#039;&#039;nawk&#039;&#039;,&lt;br /&gt;
** the GNU C and C++ compilers a.k.a. &#039;&#039;gcc&#039;&#039; and &#039;&#039;g++&#039;&#039;,&lt;br /&gt;
** some GNU build utilities: &#039;&#039;pkg-config&#039;&#039; and &#039;&#039;patch&#039;&#039;,&lt;br /&gt;
** the following other build utilities: &#039;&#039;Apache Ant&#039;&#039; (or &#039;&#039;Ant&#039;&#039;), &#039;&#039;cmake&#039;&#039;, &#039;&#039;protobuf&#039;&#039;, &#039;&#039;ragel&#039;&#039;,&lt;br /&gt;
** the Subversion and Git version control systems&lt;br /&gt;
** &#039;&#039;unzip&#039;&#039; and either &#039;&#039;curl&#039;&#039; or &#039;&#039;wget&#039;&#039; for retreiving sources.&lt;br /&gt;
* Very recent versions of some of those tools may be required. At the time of writing, notably gettext 0.19.3 or later is required.&lt;br /&gt;
* If any of the above is missing, expect the build to fail at some point.&lt;br /&gt;
* If targeting an Android-x86 device, &#039;&#039;yasm&#039;&#039; must be installed too.&lt;br /&gt;
&lt;br /&gt;
Precise lists of tools dependencies is listed [https://git.videolan.org/?p=vlc.git;a=blob;f=extras/tools/bootstrap;h=e60e5ebf93e69e7bb731e80d0fbc6ebd1226dfdb;hb=HEAD#l73 here].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color: #ff0000&amp;quot;&amp;gt;&#039;&#039;&#039;64-bit users&#039;&#039;&#039;&amp;lt;/span&amp;gt;: You must install these 32-bit libs as specified here: [[#Can.27t_run_aapt_or_adb_on_Linux_64-bit]]&lt;br /&gt;
&lt;br /&gt;
==== Example on Ubuntu ====&lt;br /&gt;
Install the packages as follow:&lt;br /&gt;
 sudo apt-get install automake ant autopoint cmake build-essential libtool-bin \&lt;br /&gt;
      patch pkg-config protobuf-compiler ragel subversion unzip git \&lt;br /&gt;
     openjdk-8-jre openjdk-8-jdk flex python wget&lt;br /&gt;
&lt;br /&gt;
=== SDK &amp;amp; Android Studio ===&lt;br /&gt;
# Go to [http://developer.android.com/sdk/index.html Android SDK/IDE page].&lt;br /&gt;
# Android Studio is recommended, but not mandatory!&lt;br /&gt;
&lt;br /&gt;
===Android NDK===&lt;br /&gt;
# Check that the SDK installation is correct. &lt;br /&gt;
# Go to the [https://developer.android.com/ndk/downloads/index.html Android NDK page] and download the &#039;&#039;&#039;NDK r18b&#039;&#039;&#039; for Linux. &lt;br /&gt;
# Decompress it to install&lt;br /&gt;
&lt;br /&gt;
== Environment setup  ==&lt;br /&gt;
Set &#039;&#039;&#039;$ANDROID_SDK&#039;&#039;&#039; to point to your Android SDK directory &lt;br /&gt;
&lt;br /&gt;
 export ANDROID_SDK=/path/to/android-sdk&lt;br /&gt;
&lt;br /&gt;
Set &#039;&#039;&#039;$ANDROID_NDK&#039;&#039;&#039; to point to your Android NDK directory &lt;br /&gt;
&lt;br /&gt;
 export ANDROID_NDK=/path/to/android-ndk&lt;br /&gt;
&lt;br /&gt;
Add some useful binaries to your &#039;&#039;&#039;$PATH&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
 export PATH=$PATH:$ANDROID_SDK/platform-tools:$ANDROID_SDK/tools&lt;br /&gt;
&lt;br /&gt;
== Building ==&lt;br /&gt;
=== Get VLC Source ===&lt;br /&gt;
Clone the source from the VLC git!&lt;br /&gt;
&lt;br /&gt;
In your &#039;&#039;android&#039;&#039; source folder, run: &lt;br /&gt;
&lt;br /&gt;
 git clone https://code.videolan.org/videolan/vlc-android.git&lt;br /&gt;
&lt;br /&gt;
==== Setup Gradle build system ====&lt;br /&gt;
&lt;br /&gt;
Before using Android studio to compile the app, you must run &#039;&#039;&#039;compile.sh&#039;&#039;&#039; once to set up gradle build system.&lt;br /&gt;
&lt;br /&gt;
It should automatically populate mandatory local.properties and gradle.properties files with:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;local.properties&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 sdk.dir=&amp;lt;SDK path from $ANDROID_SDK&amp;gt;&lt;br /&gt;
 ndk.dir=&amp;lt;NDK path from $ANDROID_NDK&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This sets up gradle to build with correct SDK/NDK.&lt;br /&gt;
&lt;br /&gt;
Once this first compilation has succeeded, you can build from Android Studio with the &#039;&#039;&#039;Run&#039;&#039;&#039; command.&lt;br /&gt;
&lt;br /&gt;
=== Devices ===&lt;br /&gt;
&lt;br /&gt;
Find the ABI for the target device.&lt;br /&gt;
&lt;br /&gt;
* For a normal (2012-2015 consumer phone or tablet) device (e.g. Cortex-A8 or Cortex-A9)&lt;br /&gt;
 &amp;lt;code&amp;gt;armeabi-v7a&amp;lt;/code&amp;gt;&lt;br /&gt;
* For a Tegra2 device (no [[wikipedia:ARM_architecture#Advanced_SIMD_.28NEON.29|NEON]])&lt;br /&gt;
 &amp;lt;code&amp;gt;armeabi-v7a&amp;lt;/code&amp;gt;&lt;br /&gt;
* For an ARMv6 device&lt;br /&gt;
 &amp;lt;code&amp;gt;armeabi&amp;lt;/code&amp;gt;&lt;br /&gt;
* For an ARMv6 device that does not support FPU&lt;br /&gt;
 &amp;lt;code&amp;gt;armeabi-nofpu&amp;lt;/code&amp;gt;&lt;br /&gt;
* For an ARMv5 device or the Android Emulator&lt;br /&gt;
 &amp;lt;code&amp;gt;armeabi-v5&amp;lt;/code&amp;gt;&lt;br /&gt;
* For a x86 device (e.g. Android-x86, Google TV, Logitech TV, Android x86 smartphones, etc)&lt;br /&gt;
 &amp;lt;code&amp;gt;x86&amp;lt;/code&amp;gt;&lt;br /&gt;
* For a MIPS device (i.e. Ainol Novo tablets):&lt;br /&gt;
 &amp;lt;code&amp;gt;mips&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This value must be passed to the compile.sh script&lt;br /&gt;
&lt;br /&gt;
==== Compile ====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Read&#039;&#039;&#039; compile.sh first, as it contains some very useful and important information. Then run it:&lt;br /&gt;
 buildsystem/compile.sh -a &amp;lt;ABI&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039; At this point, you will get an auto-generated debug APK in the vlc-android/build/outputs/apk folder, signed with a debug key.&lt;br /&gt;
&lt;br /&gt;
In order to build a non-debug (release, and &#039;&#039;&#039;unsigned&#039;&#039;&#039;) package:&lt;br /&gt;
 buildsystem/compile.sh release&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039; At this point, you will get an release APK in the same folder.&lt;br /&gt;
&lt;br /&gt;
==== Build LibVLC ====&lt;br /&gt;
&lt;br /&gt;
To build LibVLC, simply pass the -l option:&lt;br /&gt;
  sh compile.sh -l -a &amp;lt;ABI&amp;gt; -r&lt;br /&gt;
&lt;br /&gt;
.aar archive will be located in libvlc/build/outputs/aar/&lt;br /&gt;
&lt;br /&gt;
==== Gradle tweaks ====&lt;br /&gt;
&lt;br /&gt;
To improve gradle execution time, try these options by writing this in gradle.properties in vlc android project.&lt;br /&gt;
Or directly in your ~/.gradle/gradle.properties&lt;br /&gt;
 org.gradle.parallel=true&lt;br /&gt;
 org.gradle.configureondemand=true&lt;br /&gt;
 # If you have a BUNCH of RAM available&lt;br /&gt;
 org.gradle.daemon=true&lt;br /&gt;
 org.gradle.jvmargs=-Xmx2048M&lt;br /&gt;
&lt;br /&gt;
=== Run ===&lt;br /&gt;
Run it and enjoy!&lt;br /&gt;
&lt;br /&gt;
=== Troubleshooting ===&lt;br /&gt;
==== Compilation error on Dependencies ====&lt;br /&gt;
Sometimes, especially when gradle dependencies have been upgraded, the &#039;&#039;compile.sh&#039;&#039; will fail to refetch dependencies. Just close Android Studio and re-run the script to fix this issue.&lt;br /&gt;
&lt;br /&gt;
== Debugging ==&lt;br /&gt;
Here are some helpful links if you wish to debug VLC on Android:&lt;br /&gt;
* [http://developer.android.com/guide/developing/debugging/ddms.html DDMS] &lt;br /&gt;
* [http://developer.android.com/guide/developing/tools/logcat.html Logcat]&lt;br /&gt;
&lt;br /&gt;
===Native debugging===&lt;br /&gt;
If you run VLC Android and you get a crash that looks something like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
I/DEBUG   (  958): *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***&lt;br /&gt;
I/DEBUG   (  958): Build fingerprint: &#039;MOTO/MBTCA/sesame/XT300:2.1-update1/SESLA_U3_01.71.0/110110:user/release-keys&#039;&lt;br /&gt;
I/DEBUG   (  958): pid: 1733, tid: 1733 &amp;gt;&amp;gt;&amp;gt; org.videolan.vlc &amp;lt;&amp;lt;&amp;lt;&lt;br /&gt;
I/DEBUG   (  958): signal 11 (SIGSEGV), fault addr 4237be3c&lt;br /&gt;
I/DEBUG   (  958):  r0 423640a0  r1 7ece77ac  r2 42bccdac  r3 4237be38&lt;br /&gt;
I/DEBUG   (  958):  r4 00000000  r5 42bccdac  r6 002ed088  r7 002ed018&lt;br /&gt;
I/DEBUG   (  958):  r8 7ece78e8  r9 2bafa844  10 0000000e  fp 7ece794c&lt;br /&gt;
I/DEBUG   (  958):  ip 00002ba0  sp 7ece7784  lr 423652e4  pc 4237be3c  cpsr 60000010&lt;br /&gt;
I/DEBUG   (  958):          #00  pc 0037be3c  /data/data/org.videolan.vlc/lib/libvlcjni.so&lt;br /&gt;
I/DEBUG   (  958):          #01  lr 423652e4  /data/data/org.videolan.vlc/lib/libvlcjni.so&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You have a &#039;&#039;&#039;native crash&#039;&#039;&#039;. To debug it, you need to have compiled VLC as above and installed it on your device. Once your compiled VLC build is on your device, you can find the &#039;&#039;&#039;backtrace&#039;&#039;&#039; as follows:&lt;br /&gt;
&lt;br /&gt;
# Make sure you are in the directory that you checked out VLC-Android in.&lt;br /&gt;
# Migrate the libvlc folders. (Do this every time the code is recompiled)&lt;br /&gt;
## cp -r libvlc/jni vlc-android&lt;br /&gt;
## cp -r libvlc/libs vlc-android&lt;br /&gt;
## cp -r libvlc/obj vlc-android&lt;br /&gt;
## (This is because the libvlc and VLC for Android folders were split yet the debugger needs the object files from both.)&lt;br /&gt;
# cd vlc-android&lt;br /&gt;
# $ANDROID_NDK/ndk-gdb --verbose --force --start&lt;br /&gt;
At this point, lots of stuff will appear:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Android NDK installation path: /opt/android-ndk-r8c&lt;br /&gt;
Using default adb command: /opt/android-sdk-linux_x86/platform-tools/adb&lt;br /&gt;
ADB version found: Android Debug Bridge version 1.0.29&lt;br /&gt;
Using ADB flags: &lt;br /&gt;
Using auto-detected project path: .&lt;br /&gt;
Found package name: org.videolan.vlc&lt;br /&gt;
...bunch of stuff skipped...&lt;br /&gt;
GNU gdb (GDB) 7.3.1-gg2&lt;br /&gt;
Copyright (C) 2011 Free Software Foundation, Inc.&lt;br /&gt;
License GPLv3+: GNU GPL version 3 or later &amp;lt;http://gnu.org/licenses/gpl.html&amp;gt;&lt;br /&gt;
This is free software: you are free to change and redistribute it.&lt;br /&gt;
There is NO WARRANTY, to the extent permitted by law.  Type &amp;quot;show copying&amp;quot;&lt;br /&gt;
and &amp;quot;show warranty&amp;quot; for details.&lt;br /&gt;
This GDB was configured as &amp;quot;--host=x86_64-linux-gnu --target=arm-linux-android&amp;quot;.&lt;br /&gt;
For bug reporting instructions, please see:&lt;br /&gt;
&amp;lt;http://www.gnu.org/software/gdb/bugs/&amp;gt;.&lt;br /&gt;
Remote debugging from host 0.0.0.0&lt;br /&gt;
...bunch of stuff skipped...&lt;br /&gt;
libthread_db:td_ta_new: Victory: We can debug theads!&lt;br /&gt;
warning: Breakpoint address adjusted from 0x400deaa5 to 0x400deaa4.&lt;br /&gt;
0x40107a40 in epoll_wait () from /media/data/vlc_android/vlc-android/obj/local/armeabi/libc.so&lt;br /&gt;
(gdb)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;ol start=&amp;quot;4&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;At this point, type in &amp;quot;continue&amp;quot; and press Enter.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Perform the actions you did to make it crash. It will spit out something like this:&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Program received signal SIGSEGV, Segmentation fault.&lt;br /&gt;
0x401120ae in ?? () from /media/data/vlc_android/vlc-android/obj/local/armeabi/libc.so&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;ol start=&amp;quot;6&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Now, just type in &amp;quot;&#039;&#039;&#039;bt full&#039;&#039;&#039;&amp;quot; (excluding the quotation marks) and press Enter. That is your backtrace that you should give to the developers when they ask for it (possibly on a [http://paste.kde.org/ pastebin], too).&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
(gdb) bt full&lt;br /&gt;
#0  0x401120ae in ?? () from /media/data/vlc_android/vlc-android/obj/local/armeabi/libc.so&lt;br /&gt;
No symbol table info available.&lt;br /&gt;
#1  0x40107bd8 in abort () from /media/data/vlc_android/vlc-android/obj/local/armeabi/libc.so&lt;br /&gt;
No symbol table info available.&lt;br /&gt;
#2  0x40118e6a in __assert2 () from /media/data/vlc_android/vlc-android/obj/local/armeabi/libc.so&lt;br /&gt;
No symbol table info available.&lt;br /&gt;
#3  0x5e0cdfdc in var_SetChecked (p_this=0x40134b94, psz_name=0x5ea2fcb8 &amp;quot;rate&amp;quot;, expected_type=80, val=...) at ../../src/misc/variables.c:711&lt;br /&gt;
        i_ret = 0&lt;br /&gt;
        p_var = &amp;lt;optimized out&amp;gt;&lt;br /&gt;
        oldval = {i_int = 4742037487051810480, b_bool = 176, f_float = 2.27765068e+14, psz_string = 0x574f26b0 &amp;quot;X\270|B\001\001&amp;quot;, p_address = 0x574f26b0, &lt;br /&gt;
          p_object = 0x574f26b0, p_list = 0x574f26b0, i_time = 4742037487051810480, coords = {x = 1464805040, y = 1104091640}}&lt;br /&gt;
        __func__ = &amp;quot;var_SetChecked&amp;quot;&lt;br /&gt;
        p_priv = &amp;lt;optimized out&amp;gt;&lt;br /&gt;
#4  0x5e06dd9c in var_SetFloat (f=1.41421354, psz_name=0x5ea2fcb8 &amp;quot;rate____sample_backtrace&amp;quot;, p_obj=0x0) at ../../include/vlc_variables.h:262&lt;br /&gt;
        val = &amp;lt;optimized out&amp;gt;&lt;br /&gt;
#5  libvlc_media_player_set_rate (p_mi=0x0, rate=1.41421354) at ../../lib/media_player.c:1252&lt;br /&gt;
        p_input_thread = &amp;lt;optimized out&amp;gt;&lt;br /&gt;
#6  0x5de7bd18 in Java_org_videolan_vlc_LibVLC_setRate (env=0x41cf0470, thiz=0x8ab00021, rate=1.41421354) at jni/libvlcjni.c:678&lt;br /&gt;
        mp = 0x0&lt;br /&gt;
#7  0x4076de34 in ?? ()&lt;br /&gt;
No symbol table info available.&lt;br /&gt;
#8  0x4076de34 in ?? ()&lt;br /&gt;
No symbol table info available.&lt;br /&gt;
Backtrace stopped: previous frame identical to this frame (corrupt stack?)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Troubleshooting ==&lt;br /&gt;
=== Outdated Awk ===&lt;br /&gt;
If you receive the error message while building:&lt;br /&gt;
&lt;br /&gt;
 Android NDK: Host &#039;awk&#039; tool is outdated. Please define HOST_AWK to point to Gawk or Nawk !    &lt;br /&gt;
&lt;br /&gt;
The prebuilt version of Awk that comes with the Android NDK is outdated. Defining HOST_AWK in your environment does nothing as the system still tries to just the one that comes with the Android NDK. To get around this issue, simply rename or delete the Awk binary that comes with the Android NDK. For example to move it:&lt;br /&gt;
&lt;br /&gt;
 mv $ANDROID_NDK/prebuilt/linux-x86/bin/awk $ANDROID_NDK/prebuilt/linux-x86/bin/awk.old&lt;br /&gt;
&lt;br /&gt;
=== Can&#039;t find Ant ===&lt;br /&gt;
If you&#039;re new to Ant, please be aware that some Linux distributions don&#039;t install it in the usual spot as with other programs. Try checking to see if the directory /usr/share/java/apache-ant/bin exists and add it to your path.&lt;br /&gt;
&lt;br /&gt;
===Outdated autotools-dev===&lt;br /&gt;
If you get the following error message you may have have an outdated version of autotools-dev:&lt;br /&gt;
  Invalid configuration `arm-linux-androideabi&#039;: system `androideabi&#039; not recognized&lt;br /&gt;
You may first want to check if your distribution has any available updates for this package.  Alternatively, you can manually update your config.guess and config.sub files from here: [http://git.savannah.gnu.org/gitweb/?p=config.git;a=tree].  These files are typically located in /usr/share/misc on Debian based distributions.&lt;br /&gt;
&lt;br /&gt;
===autoreconf: automake failed with exit status: 1===&lt;br /&gt;
 automake: warnings are treated as errors&lt;br /&gt;
 configure.ac:41: warning: The &#039;AM_PROG_MKDIR_P&#039; macro is deprecated, and will soon be removed.&lt;br /&gt;
 configure.ac:41: You should use the Autoconf-provided &#039;AC_PROG_MKDIR_P&#039; macro instead,&lt;br /&gt;
 configure.ac:41: and use &#039;$(MKDIR_P)&#039; instead of &#039;$(mkdir_p)&#039;in your Makefile.am files.&lt;br /&gt;
&lt;br /&gt;
If you are using Automake 1.13 or higher, you must remove -Werror from vlc/contrib/android/gnutls/configure.ac to continue. (First reported in [http://forum.videolan.org/viewtopic.php?f=35&amp;amp;t=108927])&lt;br /&gt;
&lt;br /&gt;
===autoreconf: automake failed with exit status: 1 ===&lt;br /&gt;
 make: *** [dvdnav] Error 1&lt;br /&gt;
 ...&lt;br /&gt;
 ... error: possibly undefined macro: AM_PROG_LIBTOOL&lt;br /&gt;
&lt;br /&gt;
This error may occur when compiling with an older Linux distribution, such as Ubuntu 12.04, that doesn&#039;t meet bootstrap prerequisites. As of 2014-08-09, the master branch for vlc-ports/android.git [http://git.videolan.org/?p=vlc-ports/android.git;a=summary] lacks patch 5199 [https://patches.videolan.org/patch/5199/]. Without the patch, compile.sh builds out dated automake and autoconf that may not access libtool despite presence of a current libtool binary amongst supporting tools and a similar or more recent binary present as part of the OS.&lt;br /&gt;
&lt;br /&gt;
To work around this error, patch the master branch or update the prerequisites. For Ubuntu 12.04, upgrade autoconf, automake, and cmake as dictated by vlc/extras/tools/bootstrap.&lt;br /&gt;
&lt;br /&gt;
===Can&#039;t run aapt or adb on Linux 64-bit===&lt;br /&gt;
You must install the 32-bit libraries of the following libraries, as the precompiled Google binaries depend on them: &#039;&#039;libc6&#039;&#039;, &#039;&#039;libstdc++6&#039;&#039;, and &#039;&#039;zlib&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
New versions of Debian and/or Ubuntu require you to install i386 versions of packages:&lt;br /&gt;
 sudo dpkg --add-architecture i386&lt;br /&gt;
 sudo apt-get update&lt;br /&gt;
 sudo apt-get install zlib1g:i386 libstdc++6:i386 libc6:i386&lt;br /&gt;
&lt;br /&gt;
If you are under &#039;&#039;old versions&#039;&#039; of Ubuntu, install ia32-libs can help you solve this issue.&lt;br /&gt;
 sudo apt-get install ia32-libs&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
* [[Android Report bugs]] - Bug reporting guide for VLC-Android.&lt;br /&gt;
&lt;br /&gt;
[[Category:Building]] [[Category:Android]]&lt;/div&gt;</summary>
		<author><name>Dekans</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=Android_Checklist&amp;diff=61752</id>
		<title>Android Checklist</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=Android_Checklist&amp;diff=61752"/>
		<updated>2019-07-12T08:48:09Z</updated>

		<summary type="html">&lt;p&gt;Dekans: /* This page is intended to list all VLC Android app features we have to set before every release. */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== VLC for Android features checklist ==&lt;br /&gt;
&lt;br /&gt;
==== This page is intended to list all VLC Android app features we have to set before every release. ====&lt;br /&gt;
&lt;br /&gt;
General&lt;br /&gt;
* Medialibrary migration from previous version&lt;br /&gt;
* Black Theme&lt;br /&gt;
* DayNight mode&lt;br /&gt;
* General display with system fonts set to large&lt;br /&gt;
* Search&lt;br /&gt;
* Filtering&lt;br /&gt;
&lt;br /&gt;
Video&lt;br /&gt;
* Network playback&lt;br /&gt;
* Restore video playback after multitasking&lt;br /&gt;
* Second screen mode in video player (HDMI/screencast)&lt;br /&gt;
* Chromecast&lt;br /&gt;
* Background video playback&lt;br /&gt;
* Picture-in-Picture mode (custom one and Android 8+ PiP mode)&lt;br /&gt;
* Videos playlist&lt;br /&gt;
* Subtitles picker&lt;br /&gt;
* Subtitles download&lt;br /&gt;
* Audio/Video transition&lt;br /&gt;
&lt;br /&gt;
Audio&lt;br /&gt;
* Audio playback&lt;br /&gt;
* Remote controls&lt;br /&gt;
* Audio playlists&lt;br /&gt;
&lt;br /&gt;
Playlists&lt;br /&gt;
* listing&lt;br /&gt;
* modifications (including reordering)&lt;br /&gt;
&lt;br /&gt;
Browsing&lt;br /&gt;
* Local browsing&lt;br /&gt;
* Network browsing&lt;br /&gt;
* Network favorites&lt;br /&gt;
* Network playback&lt;br /&gt;
* Network login&lt;br /&gt;
&lt;br /&gt;
TV&lt;br /&gt;
* Medalibrary &amp;amp; files browsing&lt;br /&gt;
* Playlists&lt;br /&gt;
* Now Playing (card in app + card on Home screen)&lt;br /&gt;
&lt;br /&gt;
Auto&lt;br /&gt;
* Browsing&lt;br /&gt;
* voice actions&lt;br /&gt;
&lt;br /&gt;
Other&lt;br /&gt;
* Equalizer&lt;br /&gt;
* Compatibility with Android 4.x&lt;br /&gt;
* Playback history&lt;br /&gt;
* Open media from 3rd party Apps&lt;br /&gt;
* Check settings are functional&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
* [[Android Report bugs]] - Bug reporting guide for VLC-Android.&lt;br /&gt;
&lt;br /&gt;
[[Category:Android]]&lt;/div&gt;</summary>
		<author><name>Dekans</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=Android_Checklist&amp;diff=61751</id>
		<title>Android Checklist</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=Android_Checklist&amp;diff=61751"/>
		<updated>2019-07-10T08:24:53Z</updated>

		<summary type="html">&lt;p&gt;Dekans: Checklist update before 3.2 beta&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== VLC for Android features checklist ==&lt;br /&gt;
&lt;br /&gt;
==== This page is intended to list all VLC Android app features we have to set before every release. ====&lt;br /&gt;
&lt;br /&gt;
General&lt;br /&gt;
* Black Theme&lt;br /&gt;
* DayNight mode&lt;br /&gt;
* General display with system fonts set to large&lt;br /&gt;
* Search&lt;br /&gt;
* Filtering&lt;br /&gt;
&lt;br /&gt;
Video&lt;br /&gt;
* Restore video playback after multitasking&lt;br /&gt;
* Second screen mode in video player&lt;br /&gt;
* Chromecast&lt;br /&gt;
* Background video playback&lt;br /&gt;
* Picture-in-Picture mode (custom one and Android 8+ PiP mode)&lt;br /&gt;
* Videos playlist&lt;br /&gt;
* Subtitles picker&lt;br /&gt;
* Subtitles download&lt;br /&gt;
* Audio/Video transition&lt;br /&gt;
&lt;br /&gt;
Audio&lt;br /&gt;
* Audio playback&lt;br /&gt;
* Remote controls&lt;br /&gt;
* Audio playlists&lt;br /&gt;
&lt;br /&gt;
Playlists&lt;br /&gt;
* listing&lt;br /&gt;
* modifications (including reordering)&lt;br /&gt;
&lt;br /&gt;
Browsing&lt;br /&gt;
* Local browsing&lt;br /&gt;
* Network browsing&lt;br /&gt;
* Network favorites&lt;br /&gt;
* Network playback&lt;br /&gt;
* Network login&lt;br /&gt;
&lt;br /&gt;
TV&lt;br /&gt;
* Medalibrary &amp;amp; files browsing&lt;br /&gt;
* Playlists&lt;br /&gt;
* Now Playing (card in app + card on Home screen)&lt;br /&gt;
&lt;br /&gt;
Auto&lt;br /&gt;
* Browsing&lt;br /&gt;
* voice actions&lt;br /&gt;
&lt;br /&gt;
Other&lt;br /&gt;
* Equalizer&lt;br /&gt;
* Compatibility with Android 4.x&lt;br /&gt;
* Playback history&lt;br /&gt;
* Open media from 3rd party Apps&lt;br /&gt;
* Check settings are functional&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
* [[Android Report bugs]] - Bug reporting guide for VLC-Android.&lt;br /&gt;
&lt;br /&gt;
[[Category:Android]]&lt;/div&gt;</summary>
		<author><name>Dekans</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=AndroidCompile&amp;diff=59286</id>
		<title>AndroidCompile</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=AndroidCompile&amp;diff=59286"/>
		<updated>2019-03-12T08:53:15Z</updated>

		<summary type="html">&lt;p&gt;Dekans: /* Example on Ubuntu */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page is an introduction to the compilation of &#039;&#039;&#039;VLC for Android&#039;&#039;&#039; on Linux. &lt;br /&gt;
&lt;br /&gt;
==Android Studio, SDK and NDK installation==&lt;br /&gt;
&lt;br /&gt;
=== Requirements  ===&lt;br /&gt;
* You &#039;&#039;&#039;MUST&#039;&#039;&#039; build on Linux (or OSX if you know what you are doing).&lt;br /&gt;
* The following packages &#039;&#039;&#039;MUST&#039;&#039;&#039; must be installed:&lt;br /&gt;
** the GNU autotools: &#039;&#039;autoconf&#039;&#039;, &#039;&#039;libtool&#039;&#039;, &#039;&#039;automake&#039;&#039; and &#039;&#039;make&#039;&#039; (a.k.a. &#039;&#039;gmake&#039;&#039;)&lt;br /&gt;
** ...and their dependencies: &#039;&#039;m4&#039;&#039; and &#039;&#039;gawk&#039;&#039;, &#039;&#039;mawk&#039;&#039; or &#039;&#039;nawk&#039;&#039;,&lt;br /&gt;
** the GNU C and C++ compilers a.k.a. &#039;&#039;gcc&#039;&#039; and &#039;&#039;g++&#039;&#039;,&lt;br /&gt;
** some GNU build utilities: &#039;&#039;pkg-config&#039;&#039; and &#039;&#039;patch&#039;&#039;,&lt;br /&gt;
** the following other build utilities: &#039;&#039;Apache Ant&#039;&#039; (or &#039;&#039;Ant&#039;&#039;), &#039;&#039;cmake&#039;&#039;, &#039;&#039;protobuf&#039;&#039;, &#039;&#039;ragel&#039;&#039;,&lt;br /&gt;
** the Subversion and Git version control systems&lt;br /&gt;
** &#039;&#039;unzip&#039;&#039; and either &#039;&#039;curl&#039;&#039; or &#039;&#039;wget&#039;&#039; for retreiving sources.&lt;br /&gt;
* Very recent versions of some of those tools may be required. At the time of writing, notably gettext 0.19.3 or later is required.&lt;br /&gt;
* If any of the above is missing, expect the build to fail at some point.&lt;br /&gt;
* If targeting an Android-x86 device, &#039;&#039;yasm&#039;&#039; must be installed too.&lt;br /&gt;
&lt;br /&gt;
Precise lists of tools dependencies is listed [https://git.videolan.org/?p=vlc.git;a=blob;f=extras/tools/bootstrap;h=e60e5ebf93e69e7bb731e80d0fbc6ebd1226dfdb;hb=HEAD#l73 here].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color: #ff0000&amp;quot;&amp;gt;&#039;&#039;&#039;64-bit users&#039;&#039;&#039;&amp;lt;/span&amp;gt;: You must install these 32-bit libs as specified here: [[#Can.27t_run_aapt_or_adb_on_Linux_64-bit]]&lt;br /&gt;
&lt;br /&gt;
==== Example on Ubuntu ====&lt;br /&gt;
Install the packages as follow:&lt;br /&gt;
 sudo apt-get install automake ant autopoint cmake build-essential libtool-bin \&lt;br /&gt;
      patch pkg-config protobuf-compiler ragel subversion unzip git \&lt;br /&gt;
     openjdk-8-jre openjdk-8-jdk flex python wget&lt;br /&gt;
&lt;br /&gt;
=== SDK &amp;amp; Android Studio ===&lt;br /&gt;
# Go to [http://developer.android.com/sdk/index.html Android SDK/IDE page].&lt;br /&gt;
# Android Studio is recommended, but not mandatory!&lt;br /&gt;
&lt;br /&gt;
===Android NDK===&lt;br /&gt;
# Check that the SDK installation is correct. &lt;br /&gt;
# Go to the [https://developer.android.com/ndk/downloads/index.html Android NDK page] and download the &#039;&#039;&#039;NDK r18b&#039;&#039;&#039; for Linux. &lt;br /&gt;
# Decompress it to install&lt;br /&gt;
&lt;br /&gt;
== Environment setup  ==&lt;br /&gt;
Set &#039;&#039;&#039;$ANDROID_SDK&#039;&#039;&#039; to point to your Android SDK directory &lt;br /&gt;
&lt;br /&gt;
 export ANDROID_SDK=/path/to/android-sdk&lt;br /&gt;
&lt;br /&gt;
Set &#039;&#039;&#039;$ANDROID_NDK&#039;&#039;&#039; to point to your Android NDK directory &lt;br /&gt;
&lt;br /&gt;
 export ANDROID_NDK=/path/to/android-ndk&lt;br /&gt;
&lt;br /&gt;
Add some useful binaries to your &#039;&#039;&#039;$PATH&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
 export PATH=$PATH:$ANDROID_SDK/platform-tools:$ANDROID_SDK/tools&lt;br /&gt;
&lt;br /&gt;
== Building ==&lt;br /&gt;
=== Get VLC Source ===&lt;br /&gt;
Clone the source from the VLC git!&lt;br /&gt;
&lt;br /&gt;
In your &#039;&#039;android&#039;&#039; source folder, run: &lt;br /&gt;
&lt;br /&gt;
 git clone https://code.videolan.org/videolan/vlc-android.git&lt;br /&gt;
&lt;br /&gt;
==== Setup Gradle build system ====&lt;br /&gt;
&lt;br /&gt;
Before using Android studio to compile the app, you must run &#039;&#039;&#039;compile.sh&#039;&#039;&#039; once to set up gradle build system.&lt;br /&gt;
&lt;br /&gt;
It should automatically populate mandatory local.properties and gradle.properties files with:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;local.properties&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 sdk.dir=&amp;lt;SDK path from $ANDROID_SDK&amp;gt;&lt;br /&gt;
 ndk.dir=&amp;lt;NDK path from $ANDROID_NDK&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This sets up gradle to build with correct SDK/NDK.&lt;br /&gt;
&lt;br /&gt;
Once this first compilation has succeeded, you can build from Android Studio with the &#039;&#039;&#039;Run&#039;&#039;&#039; command.&lt;br /&gt;
&lt;br /&gt;
=== Devices ===&lt;br /&gt;
&lt;br /&gt;
Find the ABI for the target device.&lt;br /&gt;
&lt;br /&gt;
* For a normal (2012-2015 consumer phone or tablet) device (e.g. Cortex-A8 or Cortex-A9)&lt;br /&gt;
 &amp;lt;code&amp;gt;armeabi-v7a&amp;lt;/code&amp;gt;&lt;br /&gt;
* For a Tegra2 device (no [[wikipedia:ARM_architecture#Advanced_SIMD_.28NEON.29|NEON]])&lt;br /&gt;
 &amp;lt;code&amp;gt;armeabi-v7a&amp;lt;/code&amp;gt;&lt;br /&gt;
* For an ARMv6 device&lt;br /&gt;
 &amp;lt;code&amp;gt;armeabi&amp;lt;/code&amp;gt;&lt;br /&gt;
* For an ARMv6 device that does not support FPU&lt;br /&gt;
 &amp;lt;code&amp;gt;armeabi-nofpu&amp;lt;/code&amp;gt;&lt;br /&gt;
* For an ARMv5 device or the Android Emulator&lt;br /&gt;
 &amp;lt;code&amp;gt;armeabi-v5&amp;lt;/code&amp;gt;&lt;br /&gt;
* For a x86 device (e.g. Android-x86, Google TV, Logitech TV, Android x86 smartphones, etc)&lt;br /&gt;
 &amp;lt;code&amp;gt;x86&amp;lt;/code&amp;gt;&lt;br /&gt;
* For a MIPS device (i.e. Ainol Novo tablets):&lt;br /&gt;
 &amp;lt;code&amp;gt;mips&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This value must be passed to the compile.sh script&lt;br /&gt;
&lt;br /&gt;
==== Compile ====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Read&#039;&#039;&#039; compile.sh first, as it contains some very useful and important information. Then run it:&lt;br /&gt;
 sh compile.sh -a &amp;lt;ABI&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039; At this point, you will get an auto-generated debug APK in the vlc-android/build/outputs/apk folder, signed with a debug key.&lt;br /&gt;
&lt;br /&gt;
In order to build a non-debug (release, and &#039;&#039;&#039;unsigned&#039;&#039;&#039;) package:&lt;br /&gt;
 sh compile.sh release&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039; At this point, you will get an release APK in the same folder.&lt;br /&gt;
&lt;br /&gt;
==== Build LibVLC ====&lt;br /&gt;
&lt;br /&gt;
To build LibVLC, simply pass the -l option:&lt;br /&gt;
  sh compile.sh -l -a &amp;lt;ABI&amp;gt; -r&lt;br /&gt;
&lt;br /&gt;
.aar archive will be located in libvlc/build/outputs/aar/&lt;br /&gt;
&lt;br /&gt;
==== Gradle tweaks ====&lt;br /&gt;
&lt;br /&gt;
To improve gradle execution time, try these options by writing this in gradle.properties in vlc android project.&lt;br /&gt;
Or directly in your ~/.gradle/gradle.properties&lt;br /&gt;
 org.gradle.parallel=true&lt;br /&gt;
 org.gradle.configureondemand=true&lt;br /&gt;
 # If you have a BUNCH of RAM available&lt;br /&gt;
 org.gradle.daemon=true&lt;br /&gt;
 org.gradle.jvmargs=-Xmx2048M&lt;br /&gt;
&lt;br /&gt;
=== Run ===&lt;br /&gt;
Run it and enjoy!&lt;br /&gt;
&lt;br /&gt;
=== Troubleshooting ===&lt;br /&gt;
==== Compilation error on Dependencies ====&lt;br /&gt;
Sometimes, especially when gradle dependencies have been upgraded, the &#039;&#039;compile.sh&#039;&#039; will fail to refetch dependencies. Just close Android Studio and re-run the script to fix this issue.&lt;br /&gt;
&lt;br /&gt;
== Debugging ==&lt;br /&gt;
Here are some helpful links if you wish to debug VLC on Android:&lt;br /&gt;
* [http://developer.android.com/guide/developing/debugging/ddms.html DDMS] &lt;br /&gt;
* [http://developer.android.com/guide/developing/tools/logcat.html Logcat]&lt;br /&gt;
&lt;br /&gt;
===Native debugging===&lt;br /&gt;
If you run VLC Android and you get a crash that looks something like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
I/DEBUG   (  958): *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***&lt;br /&gt;
I/DEBUG   (  958): Build fingerprint: &#039;MOTO/MBTCA/sesame/XT300:2.1-update1/SESLA_U3_01.71.0/110110:user/release-keys&#039;&lt;br /&gt;
I/DEBUG   (  958): pid: 1733, tid: 1733 &amp;gt;&amp;gt;&amp;gt; org.videolan.vlc &amp;lt;&amp;lt;&amp;lt;&lt;br /&gt;
I/DEBUG   (  958): signal 11 (SIGSEGV), fault addr 4237be3c&lt;br /&gt;
I/DEBUG   (  958):  r0 423640a0  r1 7ece77ac  r2 42bccdac  r3 4237be38&lt;br /&gt;
I/DEBUG   (  958):  r4 00000000  r5 42bccdac  r6 002ed088  r7 002ed018&lt;br /&gt;
I/DEBUG   (  958):  r8 7ece78e8  r9 2bafa844  10 0000000e  fp 7ece794c&lt;br /&gt;
I/DEBUG   (  958):  ip 00002ba0  sp 7ece7784  lr 423652e4  pc 4237be3c  cpsr 60000010&lt;br /&gt;
I/DEBUG   (  958):          #00  pc 0037be3c  /data/data/org.videolan.vlc/lib/libvlcjni.so&lt;br /&gt;
I/DEBUG   (  958):          #01  lr 423652e4  /data/data/org.videolan.vlc/lib/libvlcjni.so&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You have a &#039;&#039;&#039;native crash&#039;&#039;&#039;. To debug it, you need to have compiled VLC as above and installed it on your device. Once your compiled VLC build is on your device, you can find the &#039;&#039;&#039;backtrace&#039;&#039;&#039; as follows:&lt;br /&gt;
&lt;br /&gt;
# Make sure you are in the directory that you checked out VLC-Android in.&lt;br /&gt;
# Migrate the libvlc folders. (Do this every time the code is recompiled)&lt;br /&gt;
## cp -r libvlc/jni vlc-android&lt;br /&gt;
## cp -r libvlc/libs vlc-android&lt;br /&gt;
## cp -r libvlc/obj vlc-android&lt;br /&gt;
## (This is because the libvlc and VLC for Android folders were split yet the debugger needs the object files from both.)&lt;br /&gt;
# cd vlc-android&lt;br /&gt;
# $ANDROID_NDK/ndk-gdb --verbose --force --start&lt;br /&gt;
At this point, lots of stuff will appear:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Android NDK installation path: /opt/android-ndk-r8c&lt;br /&gt;
Using default adb command: /opt/android-sdk-linux_x86/platform-tools/adb&lt;br /&gt;
ADB version found: Android Debug Bridge version 1.0.29&lt;br /&gt;
Using ADB flags: &lt;br /&gt;
Using auto-detected project path: .&lt;br /&gt;
Found package name: org.videolan.vlc&lt;br /&gt;
...bunch of stuff skipped...&lt;br /&gt;
GNU gdb (GDB) 7.3.1-gg2&lt;br /&gt;
Copyright (C) 2011 Free Software Foundation, Inc.&lt;br /&gt;
License GPLv3+: GNU GPL version 3 or later &amp;lt;http://gnu.org/licenses/gpl.html&amp;gt;&lt;br /&gt;
This is free software: you are free to change and redistribute it.&lt;br /&gt;
There is NO WARRANTY, to the extent permitted by law.  Type &amp;quot;show copying&amp;quot;&lt;br /&gt;
and &amp;quot;show warranty&amp;quot; for details.&lt;br /&gt;
This GDB was configured as &amp;quot;--host=x86_64-linux-gnu --target=arm-linux-android&amp;quot;.&lt;br /&gt;
For bug reporting instructions, please see:&lt;br /&gt;
&amp;lt;http://www.gnu.org/software/gdb/bugs/&amp;gt;.&lt;br /&gt;
Remote debugging from host 0.0.0.0&lt;br /&gt;
...bunch of stuff skipped...&lt;br /&gt;
libthread_db:td_ta_new: Victory: We can debug theads!&lt;br /&gt;
warning: Breakpoint address adjusted from 0x400deaa5 to 0x400deaa4.&lt;br /&gt;
0x40107a40 in epoll_wait () from /media/data/vlc_android/vlc-android/obj/local/armeabi/libc.so&lt;br /&gt;
(gdb)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;ol start=&amp;quot;4&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;At this point, type in &amp;quot;continue&amp;quot; and press Enter.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Perform the actions you did to make it crash. It will spit out something like this:&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Program received signal SIGSEGV, Segmentation fault.&lt;br /&gt;
0x401120ae in ?? () from /media/data/vlc_android/vlc-android/obj/local/armeabi/libc.so&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;ol start=&amp;quot;6&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Now, just type in &amp;quot;&#039;&#039;&#039;bt full&#039;&#039;&#039;&amp;quot; (excluding the quotation marks) and press Enter. That is your backtrace that you should give to the developers when they ask for it (possibly on a [http://paste.kde.org/ pastebin], too).&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
(gdb) bt full&lt;br /&gt;
#0  0x401120ae in ?? () from /media/data/vlc_android/vlc-android/obj/local/armeabi/libc.so&lt;br /&gt;
No symbol table info available.&lt;br /&gt;
#1  0x40107bd8 in abort () from /media/data/vlc_android/vlc-android/obj/local/armeabi/libc.so&lt;br /&gt;
No symbol table info available.&lt;br /&gt;
#2  0x40118e6a in __assert2 () from /media/data/vlc_android/vlc-android/obj/local/armeabi/libc.so&lt;br /&gt;
No symbol table info available.&lt;br /&gt;
#3  0x5e0cdfdc in var_SetChecked (p_this=0x40134b94, psz_name=0x5ea2fcb8 &amp;quot;rate&amp;quot;, expected_type=80, val=...) at ../../src/misc/variables.c:711&lt;br /&gt;
        i_ret = 0&lt;br /&gt;
        p_var = &amp;lt;optimized out&amp;gt;&lt;br /&gt;
        oldval = {i_int = 4742037487051810480, b_bool = 176, f_float = 2.27765068e+14, psz_string = 0x574f26b0 &amp;quot;X\270|B\001\001&amp;quot;, p_address = 0x574f26b0, &lt;br /&gt;
          p_object = 0x574f26b0, p_list = 0x574f26b0, i_time = 4742037487051810480, coords = {x = 1464805040, y = 1104091640}}&lt;br /&gt;
        __func__ = &amp;quot;var_SetChecked&amp;quot;&lt;br /&gt;
        p_priv = &amp;lt;optimized out&amp;gt;&lt;br /&gt;
#4  0x5e06dd9c in var_SetFloat (f=1.41421354, psz_name=0x5ea2fcb8 &amp;quot;rate____sample_backtrace&amp;quot;, p_obj=0x0) at ../../include/vlc_variables.h:262&lt;br /&gt;
        val = &amp;lt;optimized out&amp;gt;&lt;br /&gt;
#5  libvlc_media_player_set_rate (p_mi=0x0, rate=1.41421354) at ../../lib/media_player.c:1252&lt;br /&gt;
        p_input_thread = &amp;lt;optimized out&amp;gt;&lt;br /&gt;
#6  0x5de7bd18 in Java_org_videolan_vlc_LibVLC_setRate (env=0x41cf0470, thiz=0x8ab00021, rate=1.41421354) at jni/libvlcjni.c:678&lt;br /&gt;
        mp = 0x0&lt;br /&gt;
#7  0x4076de34 in ?? ()&lt;br /&gt;
No symbol table info available.&lt;br /&gt;
#8  0x4076de34 in ?? ()&lt;br /&gt;
No symbol table info available.&lt;br /&gt;
Backtrace stopped: previous frame identical to this frame (corrupt stack?)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Troubleshooting ==&lt;br /&gt;
=== Outdated Awk ===&lt;br /&gt;
If you receive the error message while building:&lt;br /&gt;
&lt;br /&gt;
 Android NDK: Host &#039;awk&#039; tool is outdated. Please define HOST_AWK to point to Gawk or Nawk !    &lt;br /&gt;
&lt;br /&gt;
The prebuilt version of Awk that comes with the Android NDK is outdated. Defining HOST_AWK in your environment does nothing as the system still tries to just the one that comes with the Android NDK. To get around this issue, simply rename or delete the Awk binary that comes with the Android NDK. For example to move it:&lt;br /&gt;
&lt;br /&gt;
 mv $ANDROID_NDK/prebuilt/linux-x86/bin/awk $ANDROID_NDK/prebuilt/linux-x86/bin/awk.old&lt;br /&gt;
&lt;br /&gt;
=== Can&#039;t find Ant ===&lt;br /&gt;
If you&#039;re new to Ant, please be aware that some Linux distributions don&#039;t install it in the usual spot as with other programs. Try checking to see if the directory /usr/share/java/apache-ant/bin exists and add it to your path.&lt;br /&gt;
&lt;br /&gt;
===Outdated autotools-dev===&lt;br /&gt;
If you get the following error message you may have have an outdated version of autotools-dev:&lt;br /&gt;
  Invalid configuration `arm-linux-androideabi&#039;: system `androideabi&#039; not recognized&lt;br /&gt;
You may first want to check if your distribution has any available updates for this package.  Alternatively, you can manually update your config.guess and config.sub files from here: [http://git.savannah.gnu.org/gitweb/?p=config.git;a=tree].  These files are typically located in /usr/share/misc on Debian based distributions.&lt;br /&gt;
&lt;br /&gt;
===autoreconf: automake failed with exit status: 1===&lt;br /&gt;
 automake: warnings are treated as errors&lt;br /&gt;
 configure.ac:41: warning: The &#039;AM_PROG_MKDIR_P&#039; macro is deprecated, and will soon be removed.&lt;br /&gt;
 configure.ac:41: You should use the Autoconf-provided &#039;AC_PROG_MKDIR_P&#039; macro instead,&lt;br /&gt;
 configure.ac:41: and use &#039;$(MKDIR_P)&#039; instead of &#039;$(mkdir_p)&#039;in your Makefile.am files.&lt;br /&gt;
&lt;br /&gt;
If you are using Automake 1.13 or higher, you must remove -Werror from vlc/contrib/android/gnutls/configure.ac to continue. (First reported in [http://forum.videolan.org/viewtopic.php?f=35&amp;amp;t=108927])&lt;br /&gt;
&lt;br /&gt;
===autoreconf: automake failed with exit status: 1 ===&lt;br /&gt;
 make: *** [dvdnav] Error 1&lt;br /&gt;
 ...&lt;br /&gt;
 ... error: possibly undefined macro: AM_PROG_LIBTOOL&lt;br /&gt;
&lt;br /&gt;
This error may occur when compiling with an older Linux distribution, such as Ubuntu 12.04, that doesn&#039;t meet bootstrap prerequisites. As of 2014-08-09, the master branch for vlc-ports/android.git [http://git.videolan.org/?p=vlc-ports/android.git;a=summary] lacks patch 5199 [https://patches.videolan.org/patch/5199/]. Without the patch, compile.sh builds out dated automake and autoconf that may not access libtool despite presence of a current libtool binary amongst supporting tools and a similar or more recent binary present as part of the OS.&lt;br /&gt;
&lt;br /&gt;
To work around this error, patch the master branch or update the prerequisites. For Ubuntu 12.04, upgrade autoconf, automake, and cmake as dictated by vlc/extras/tools/bootstrap.&lt;br /&gt;
&lt;br /&gt;
===Can&#039;t run aapt or adb on Linux 64-bit===&lt;br /&gt;
You must install the 32-bit libraries of the following libraries, as the precompiled Google binaries depend on them: &#039;&#039;libc6&#039;&#039;, &#039;&#039;libstdc++6&#039;&#039;, and &#039;&#039;zlib&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
New versions of Debian and/or Ubuntu require you to install i386 versions of packages:&lt;br /&gt;
 sudo dpkg --add-architecture i386&lt;br /&gt;
 sudo apt-get update&lt;br /&gt;
 sudo apt-get install zlib1g:i386 libstdc++6:i386 libc6:i386&lt;br /&gt;
&lt;br /&gt;
If you are under &#039;&#039;old versions&#039;&#039; of Ubuntu, install ia32-libs can help you solve this issue.&lt;br /&gt;
 sudo apt-get install ia32-libs&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
* [[Android Report bugs]] - Bug reporting guide for VLC-Android.&lt;br /&gt;
&lt;br /&gt;
[[Category:Building]] [[Category:Android]]&lt;/div&gt;</summary>
		<author><name>Dekans</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=AndroidCompile&amp;diff=57609</id>
		<title>AndroidCompile</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=AndroidCompile&amp;diff=57609"/>
		<updated>2019-02-05T15:07:52Z</updated>

		<summary type="html">&lt;p&gt;Dekans: Undo revision 56573 by DoesItReallyMatter (talk)&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page is an introduction to the compilation of &#039;&#039;&#039;VLC for Android&#039;&#039;&#039; on Linux. &lt;br /&gt;
&lt;br /&gt;
==Android Studio, SDK and NDK installation==&lt;br /&gt;
&lt;br /&gt;
=== Requirements  ===&lt;br /&gt;
* You &#039;&#039;&#039;MUST&#039;&#039;&#039; build on Linux (or OSX if you know what you are doing).&lt;br /&gt;
* The following packages &#039;&#039;&#039;MUST&#039;&#039;&#039; must be installed:&lt;br /&gt;
** the GNU autotools: &#039;&#039;autoconf&#039;&#039;, &#039;&#039;libtool&#039;&#039;, &#039;&#039;automake&#039;&#039; and &#039;&#039;make&#039;&#039; (a.k.a. &#039;&#039;gmake&#039;&#039;)&lt;br /&gt;
** ...and their dependencies: &#039;&#039;m4&#039;&#039; and &#039;&#039;gawk&#039;&#039;, &#039;&#039;mawk&#039;&#039; or &#039;&#039;nawk&#039;&#039;,&lt;br /&gt;
** the GNU C and C++ compilers a.k.a. &#039;&#039;gcc&#039;&#039; and &#039;&#039;g++&#039;&#039;,&lt;br /&gt;
** some GNU build utilities: &#039;&#039;pkg-config&#039;&#039; and &#039;&#039;patch&#039;&#039;,&lt;br /&gt;
** the following other build utilities: &#039;&#039;Apache Ant&#039;&#039; (or &#039;&#039;Ant&#039;&#039;), &#039;&#039;cmake&#039;&#039;, &#039;&#039;protobuf&#039;&#039;, &#039;&#039;ragel&#039;&#039;,&lt;br /&gt;
** the Subversion and Git version control systems&lt;br /&gt;
** &#039;&#039;unzip&#039;&#039; and either &#039;&#039;curl&#039;&#039; or &#039;&#039;wget&#039;&#039; for retreiving sources.&lt;br /&gt;
* Very recent versions of some of those tools may be required. At the time of writing, notably gettext 0.19.3 or later is required.&lt;br /&gt;
* If any of the above is missing, expect the build to fail at some point.&lt;br /&gt;
* If targeting an Android-x86 device, &#039;&#039;yasm&#039;&#039; must be installed too.&lt;br /&gt;
&lt;br /&gt;
Precise lists of tools dependencies is listed [https://git.videolan.org/?p=vlc.git;a=blob;f=extras/tools/bootstrap;h=e60e5ebf93e69e7bb731e80d0fbc6ebd1226dfdb;hb=HEAD#l73 here].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color: #ff0000&amp;quot;&amp;gt;&#039;&#039;&#039;64-bit users&#039;&#039;&#039;&amp;lt;/span&amp;gt;: You must install these 32-bit libs as specified here: [[#Can.27t_run_aapt_or_adb_on_Linux_64-bit]]&lt;br /&gt;
&lt;br /&gt;
==== Example on Ubuntu ====&lt;br /&gt;
Install the packages as follow:&lt;br /&gt;
 sudo apt-get install automake ant autopoint cmake build-essential libtool \&lt;br /&gt;
      patch pkg-config protobuf-compiler ragel subversion unzip git \&lt;br /&gt;
     openjdk-8-jre openjdk-8-jdk flex python wget&lt;br /&gt;
&lt;br /&gt;
=== SDK &amp;amp; Android Studio ===&lt;br /&gt;
# Go to [http://developer.android.com/sdk/index.html Android SDK/IDE page].&lt;br /&gt;
# Android Studio is recommended, but not mandatory!&lt;br /&gt;
&lt;br /&gt;
===Android NDK===&lt;br /&gt;
# Check that the SDK installation is correct. &lt;br /&gt;
# Go to the [https://developer.android.com/ndk/downloads/index.html Android NDK page] and download the &#039;&#039;&#039;NDK r18b&#039;&#039;&#039; for Linux. &lt;br /&gt;
# Decompress it to install&lt;br /&gt;
&lt;br /&gt;
== Environment setup  ==&lt;br /&gt;
Set &#039;&#039;&#039;$ANDROID_SDK&#039;&#039;&#039; to point to your Android SDK directory &lt;br /&gt;
&lt;br /&gt;
 export ANDROID_SDK=/path/to/android-sdk&lt;br /&gt;
&lt;br /&gt;
Set &#039;&#039;&#039;$ANDROID_NDK&#039;&#039;&#039; to point to your Android NDK directory &lt;br /&gt;
&lt;br /&gt;
 export ANDROID_NDK=/path/to/android-ndk&lt;br /&gt;
&lt;br /&gt;
Add some useful binaries to your &#039;&#039;&#039;$PATH&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
 export PATH=$PATH:$ANDROID_SDK/platform-tools:$ANDROID_SDK/tools&lt;br /&gt;
&lt;br /&gt;
== Building ==&lt;br /&gt;
=== Get VLC Source ===&lt;br /&gt;
Clone the source from the VLC git!&lt;br /&gt;
&lt;br /&gt;
In your &#039;&#039;android&#039;&#039; source folder, run: &lt;br /&gt;
&lt;br /&gt;
 git clone https://code.videolan.org/videolan/vlc-android.git&lt;br /&gt;
&lt;br /&gt;
==== Setup Gradle build system ====&lt;br /&gt;
&lt;br /&gt;
Before using Android studio to compile the app, you must run &#039;&#039;&#039;compile.sh&#039;&#039;&#039; once to set up gradle build system.&lt;br /&gt;
&lt;br /&gt;
It should automatically populate mandatory local.properties and gradle.properties files with:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;local.properties&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 sdk.dir=&amp;lt;SDK path from $ANDROID_SDK&amp;gt;&lt;br /&gt;
 ndk.dir=&amp;lt;NDK path from $ANDROID_NDK&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This sets up gradle to build with correct SDK/NDK.&lt;br /&gt;
&lt;br /&gt;
Once this first compilation has succeeded, you can build from Android Studio with the &#039;&#039;&#039;Run&#039;&#039;&#039; command.&lt;br /&gt;
&lt;br /&gt;
=== Devices ===&lt;br /&gt;
&lt;br /&gt;
Find the ABI for the target device.&lt;br /&gt;
&lt;br /&gt;
* For a normal (2012-2015 consumer phone or tablet) device (e.g. Cortex-A8 or Cortex-A9)&lt;br /&gt;
 &amp;lt;code&amp;gt;armeabi-v7a&amp;lt;/code&amp;gt;&lt;br /&gt;
* For a Tegra2 device (no [[wikipedia:ARM_architecture#Advanced_SIMD_.28NEON.29|NEON]])&lt;br /&gt;
 &amp;lt;code&amp;gt;armeabi-v7a&amp;lt;/code&amp;gt;&lt;br /&gt;
* For an ARMv6 device&lt;br /&gt;
 &amp;lt;code&amp;gt;armeabi&amp;lt;/code&amp;gt;&lt;br /&gt;
* For an ARMv6 device that does not support FPU&lt;br /&gt;
 &amp;lt;code&amp;gt;armeabi-nofpu&amp;lt;/code&amp;gt;&lt;br /&gt;
* For an ARMv5 device or the Android Emulator&lt;br /&gt;
 &amp;lt;code&amp;gt;armeabi-v5&amp;lt;/code&amp;gt;&lt;br /&gt;
* For a x86 device (e.g. Android-x86, Google TV, Logitech TV, Android x86 smartphones, etc)&lt;br /&gt;
 &amp;lt;code&amp;gt;x86&amp;lt;/code&amp;gt;&lt;br /&gt;
* For a MIPS device (i.e. Ainol Novo tablets):&lt;br /&gt;
 &amp;lt;code&amp;gt;mips&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This value must be passed to the compile.sh script&lt;br /&gt;
&lt;br /&gt;
==== Compile ====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Read&#039;&#039;&#039; compile.sh first, as it contains some very useful and important information. Then run it:&lt;br /&gt;
 sh compile.sh -a &amp;lt;ABI&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039; At this point, you will get an auto-generated debug APK in the vlc-android/build/outputs/apk folder, signed with a debug key.&lt;br /&gt;
&lt;br /&gt;
In order to build a non-debug (release, and &#039;&#039;&#039;unsigned&#039;&#039;&#039;) package:&lt;br /&gt;
 sh compile.sh release&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039; At this point, you will get an release APK in the same folder.&lt;br /&gt;
&lt;br /&gt;
==== Build LibVLC ====&lt;br /&gt;
&lt;br /&gt;
To build LibVLC, simply pass the -l option:&lt;br /&gt;
  sh compile.sh -l -a &amp;lt;ABI&amp;gt; -r&lt;br /&gt;
&lt;br /&gt;
.aar archive will be located in libvlc/build/outputs/aar/&lt;br /&gt;
&lt;br /&gt;
==== Gradle tweaks ====&lt;br /&gt;
&lt;br /&gt;
To improve gradle execution time, try these options by writing this in gradle.properties in vlc android project.&lt;br /&gt;
Or directly in your ~/.gradle/gradle.properties&lt;br /&gt;
 org.gradle.parallel=true&lt;br /&gt;
 org.gradle.configureondemand=true&lt;br /&gt;
 # If you have a BUNCH of RAM available&lt;br /&gt;
 org.gradle.daemon=true&lt;br /&gt;
 org.gradle.jvmargs=-Xmx2048M&lt;br /&gt;
&lt;br /&gt;
=== Run ===&lt;br /&gt;
Run it and enjoy!&lt;br /&gt;
&lt;br /&gt;
=== Troubleshooting ===&lt;br /&gt;
==== Compilation error on Dependencies ====&lt;br /&gt;
Sometimes, especially when gradle dependencies have been upgraded, the &#039;&#039;compile.sh&#039;&#039; will fail to refetch dependencies. Just close Android Studio and re-run the script to fix this issue.&lt;br /&gt;
&lt;br /&gt;
== Debugging ==&lt;br /&gt;
Here are some helpful links if you wish to debug VLC on Android:&lt;br /&gt;
* [http://developer.android.com/guide/developing/debugging/ddms.html DDMS] &lt;br /&gt;
* [http://developer.android.com/guide/developing/tools/logcat.html Logcat]&lt;br /&gt;
&lt;br /&gt;
===Native debugging===&lt;br /&gt;
If you run VLC Android and you get a crash that looks something like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
I/DEBUG   (  958): *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***&lt;br /&gt;
I/DEBUG   (  958): Build fingerprint: &#039;MOTO/MBTCA/sesame/XT300:2.1-update1/SESLA_U3_01.71.0/110110:user/release-keys&#039;&lt;br /&gt;
I/DEBUG   (  958): pid: 1733, tid: 1733 &amp;gt;&amp;gt;&amp;gt; org.videolan.vlc &amp;lt;&amp;lt;&amp;lt;&lt;br /&gt;
I/DEBUG   (  958): signal 11 (SIGSEGV), fault addr 4237be3c&lt;br /&gt;
I/DEBUG   (  958):  r0 423640a0  r1 7ece77ac  r2 42bccdac  r3 4237be38&lt;br /&gt;
I/DEBUG   (  958):  r4 00000000  r5 42bccdac  r6 002ed088  r7 002ed018&lt;br /&gt;
I/DEBUG   (  958):  r8 7ece78e8  r9 2bafa844  10 0000000e  fp 7ece794c&lt;br /&gt;
I/DEBUG   (  958):  ip 00002ba0  sp 7ece7784  lr 423652e4  pc 4237be3c  cpsr 60000010&lt;br /&gt;
I/DEBUG   (  958):          #00  pc 0037be3c  /data/data/org.videolan.vlc/lib/libvlcjni.so&lt;br /&gt;
I/DEBUG   (  958):          #01  lr 423652e4  /data/data/org.videolan.vlc/lib/libvlcjni.so&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You have a &#039;&#039;&#039;native crash&#039;&#039;&#039;. To debug it, you need to have compiled VLC as above and installed it on your device. Once your compiled VLC build is on your device, you can find the &#039;&#039;&#039;backtrace&#039;&#039;&#039; as follows:&lt;br /&gt;
&lt;br /&gt;
# Make sure you are in the directory that you checked out VLC-Android in.&lt;br /&gt;
# Migrate the libvlc folders. (Do this every time the code is recompiled)&lt;br /&gt;
## cp -r libvlc/jni vlc-android&lt;br /&gt;
## cp -r libvlc/libs vlc-android&lt;br /&gt;
## cp -r libvlc/obj vlc-android&lt;br /&gt;
## (This is because the libvlc and VLC for Android folders were split yet the debugger needs the object files from both.)&lt;br /&gt;
# cd vlc-android&lt;br /&gt;
# $ANDROID_NDK/ndk-gdb --verbose --force --start&lt;br /&gt;
At this point, lots of stuff will appear:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Android NDK installation path: /opt/android-ndk-r8c&lt;br /&gt;
Using default adb command: /opt/android-sdk-linux_x86/platform-tools/adb&lt;br /&gt;
ADB version found: Android Debug Bridge version 1.0.29&lt;br /&gt;
Using ADB flags: &lt;br /&gt;
Using auto-detected project path: .&lt;br /&gt;
Found package name: org.videolan.vlc&lt;br /&gt;
...bunch of stuff skipped...&lt;br /&gt;
GNU gdb (GDB) 7.3.1-gg2&lt;br /&gt;
Copyright (C) 2011 Free Software Foundation, Inc.&lt;br /&gt;
License GPLv3+: GNU GPL version 3 or later &amp;lt;http://gnu.org/licenses/gpl.html&amp;gt;&lt;br /&gt;
This is free software: you are free to change and redistribute it.&lt;br /&gt;
There is NO WARRANTY, to the extent permitted by law.  Type &amp;quot;show copying&amp;quot;&lt;br /&gt;
and &amp;quot;show warranty&amp;quot; for details.&lt;br /&gt;
This GDB was configured as &amp;quot;--host=x86_64-linux-gnu --target=arm-linux-android&amp;quot;.&lt;br /&gt;
For bug reporting instructions, please see:&lt;br /&gt;
&amp;lt;http://www.gnu.org/software/gdb/bugs/&amp;gt;.&lt;br /&gt;
Remote debugging from host 0.0.0.0&lt;br /&gt;
...bunch of stuff skipped...&lt;br /&gt;
libthread_db:td_ta_new: Victory: We can debug theads!&lt;br /&gt;
warning: Breakpoint address adjusted from 0x400deaa5 to 0x400deaa4.&lt;br /&gt;
0x40107a40 in epoll_wait () from /media/data/vlc_android/vlc-android/obj/local/armeabi/libc.so&lt;br /&gt;
(gdb)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;ol start=&amp;quot;4&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;At this point, type in &amp;quot;continue&amp;quot; and press Enter.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Perform the actions you did to make it crash. It will spit out something like this:&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Program received signal SIGSEGV, Segmentation fault.&lt;br /&gt;
0x401120ae in ?? () from /media/data/vlc_android/vlc-android/obj/local/armeabi/libc.so&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;ol start=&amp;quot;6&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Now, just type in &amp;quot;&#039;&#039;&#039;bt full&#039;&#039;&#039;&amp;quot; (excluding the quotation marks) and press Enter. That is your backtrace that you should give to the developers when they ask for it (possibly on a [http://paste.kde.org/ pastebin], too).&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
(gdb) bt full&lt;br /&gt;
#0  0x401120ae in ?? () from /media/data/vlc_android/vlc-android/obj/local/armeabi/libc.so&lt;br /&gt;
No symbol table info available.&lt;br /&gt;
#1  0x40107bd8 in abort () from /media/data/vlc_android/vlc-android/obj/local/armeabi/libc.so&lt;br /&gt;
No symbol table info available.&lt;br /&gt;
#2  0x40118e6a in __assert2 () from /media/data/vlc_android/vlc-android/obj/local/armeabi/libc.so&lt;br /&gt;
No symbol table info available.&lt;br /&gt;
#3  0x5e0cdfdc in var_SetChecked (p_this=0x40134b94, psz_name=0x5ea2fcb8 &amp;quot;rate&amp;quot;, expected_type=80, val=...) at ../../src/misc/variables.c:711&lt;br /&gt;
        i_ret = 0&lt;br /&gt;
        p_var = &amp;lt;optimized out&amp;gt;&lt;br /&gt;
        oldval = {i_int = 4742037487051810480, b_bool = 176, f_float = 2.27765068e+14, psz_string = 0x574f26b0 &amp;quot;X\270|B\001\001&amp;quot;, p_address = 0x574f26b0, &lt;br /&gt;
          p_object = 0x574f26b0, p_list = 0x574f26b0, i_time = 4742037487051810480, coords = {x = 1464805040, y = 1104091640}}&lt;br /&gt;
        __func__ = &amp;quot;var_SetChecked&amp;quot;&lt;br /&gt;
        p_priv = &amp;lt;optimized out&amp;gt;&lt;br /&gt;
#4  0x5e06dd9c in var_SetFloat (f=1.41421354, psz_name=0x5ea2fcb8 &amp;quot;rate____sample_backtrace&amp;quot;, p_obj=0x0) at ../../include/vlc_variables.h:262&lt;br /&gt;
        val = &amp;lt;optimized out&amp;gt;&lt;br /&gt;
#5  libvlc_media_player_set_rate (p_mi=0x0, rate=1.41421354) at ../../lib/media_player.c:1252&lt;br /&gt;
        p_input_thread = &amp;lt;optimized out&amp;gt;&lt;br /&gt;
#6  0x5de7bd18 in Java_org_videolan_vlc_LibVLC_setRate (env=0x41cf0470, thiz=0x8ab00021, rate=1.41421354) at jni/libvlcjni.c:678&lt;br /&gt;
        mp = 0x0&lt;br /&gt;
#7  0x4076de34 in ?? ()&lt;br /&gt;
No symbol table info available.&lt;br /&gt;
#8  0x4076de34 in ?? ()&lt;br /&gt;
No symbol table info available.&lt;br /&gt;
Backtrace stopped: previous frame identical to this frame (corrupt stack?)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Troubleshooting ==&lt;br /&gt;
=== Outdated Awk ===&lt;br /&gt;
If you receive the error message while building:&lt;br /&gt;
&lt;br /&gt;
 Android NDK: Host &#039;awk&#039; tool is outdated. Please define HOST_AWK to point to Gawk or Nawk !    &lt;br /&gt;
&lt;br /&gt;
The prebuilt version of Awk that comes with the Android NDK is outdated. Defining HOST_AWK in your environment does nothing as the system still tries to just the one that comes with the Android NDK. To get around this issue, simply rename or delete the Awk binary that comes with the Android NDK. For example to move it:&lt;br /&gt;
&lt;br /&gt;
 mv $ANDROID_NDK/prebuilt/linux-x86/bin/awk $ANDROID_NDK/prebuilt/linux-x86/bin/awk.old&lt;br /&gt;
&lt;br /&gt;
=== Can&#039;t find Ant ===&lt;br /&gt;
If you&#039;re new to Ant, please be aware that some Linux distributions don&#039;t install it in the usual spot as with other programs. Try checking to see if the directory /usr/share/java/apache-ant/bin exists and add it to your path.&lt;br /&gt;
&lt;br /&gt;
===Outdated autotools-dev===&lt;br /&gt;
If you get the following error message you may have have an outdated version of autotools-dev:&lt;br /&gt;
  Invalid configuration `arm-linux-androideabi&#039;: system `androideabi&#039; not recognized&lt;br /&gt;
You may first want to check if your distribution has any available updates for this package.  Alternatively, you can manually update your config.guess and config.sub files from here: [http://git.savannah.gnu.org/gitweb/?p=config.git;a=tree].  These files are typically located in /usr/share/misc on Debian based distributions.&lt;br /&gt;
&lt;br /&gt;
===autoreconf: automake failed with exit status: 1===&lt;br /&gt;
 automake: warnings are treated as errors&lt;br /&gt;
 configure.ac:41: warning: The &#039;AM_PROG_MKDIR_P&#039; macro is deprecated, and will soon be removed.&lt;br /&gt;
 configure.ac:41: You should use the Autoconf-provided &#039;AC_PROG_MKDIR_P&#039; macro instead,&lt;br /&gt;
 configure.ac:41: and use &#039;$(MKDIR_P)&#039; instead of &#039;$(mkdir_p)&#039;in your Makefile.am files.&lt;br /&gt;
&lt;br /&gt;
If you are using Automake 1.13 or higher, you must remove -Werror from vlc/contrib/android/gnutls/configure.ac to continue. (First reported in [http://forum.videolan.org/viewtopic.php?f=35&amp;amp;t=108927])&lt;br /&gt;
&lt;br /&gt;
===autoreconf: automake failed with exit status: 1 ===&lt;br /&gt;
 make: *** [dvdnav] Error 1&lt;br /&gt;
 ...&lt;br /&gt;
 ... error: possibly undefined macro: AM_PROG_LIBTOOL&lt;br /&gt;
&lt;br /&gt;
This error may occur when compiling with an older Linux distribution, such as Ubuntu 12.04, that doesn&#039;t meet bootstrap prerequisites. As of 2014-08-09, the master branch for vlc-ports/android.git [http://git.videolan.org/?p=vlc-ports/android.git;a=summary] lacks patch 5199 [https://patches.videolan.org/patch/5199/]. Without the patch, compile.sh builds out dated automake and autoconf that may not access libtool despite presence of a current libtool binary amongst supporting tools and a similar or more recent binary present as part of the OS.&lt;br /&gt;
&lt;br /&gt;
To work around this error, patch the master branch or update the prerequisites. For Ubuntu 12.04, upgrade autoconf, automake, and cmake as dictated by vlc/extras/tools/bootstrap.&lt;br /&gt;
&lt;br /&gt;
===Can&#039;t run aapt or adb on Linux 64-bit===&lt;br /&gt;
You must install the 32-bit libraries of the following libraries, as the precompiled Google binaries depend on them: &#039;&#039;libc6&#039;&#039;, &#039;&#039;libstdc++6&#039;&#039;, and &#039;&#039;zlib&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
New versions of Debian and/or Ubuntu require you to install i386 versions of packages:&lt;br /&gt;
 sudo dpkg --add-architecture i386&lt;br /&gt;
 sudo apt-get update&lt;br /&gt;
 sudo apt-get install zlib1g:i386 libstdc++6:i386 libc6:i386&lt;br /&gt;
&lt;br /&gt;
If you are under &#039;&#039;old versions&#039;&#039; of Ubuntu, install ia32-libs can help you solve this issue.&lt;br /&gt;
 sudo apt-get install ia32-libs&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
* [[Android Report bugs]] - Bug reporting guide for VLC-Android.&lt;br /&gt;
&lt;br /&gt;
[[Category:Building]] [[Category:Android]]&lt;/div&gt;</summary>
		<author><name>Dekans</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=AndroidCompile&amp;diff=56489</id>
		<title>AndroidCompile</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=AndroidCompile&amp;diff=56489"/>
		<updated>2018-11-12T10:37:29Z</updated>

		<summary type="html">&lt;p&gt;Dekans: /* Android NDK */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page is an introduction to the compilation of &#039;&#039;&#039;VLC for Android&#039;&#039;&#039; on Linux. &lt;br /&gt;
&lt;br /&gt;
==Android Studio, SDK and NDK installation==&lt;br /&gt;
&lt;br /&gt;
=== Requirements  ===&lt;br /&gt;
* You &#039;&#039;&#039;MUST&#039;&#039;&#039; build on Linux (or OSX if you know what you are doing).&lt;br /&gt;
* The following packages &#039;&#039;&#039;MUST&#039;&#039;&#039; must be installed:&lt;br /&gt;
** the GNU autotools: &#039;&#039;autoconf&#039;&#039;, &#039;&#039;libtool&#039;&#039;, &#039;&#039;automake&#039;&#039; and &#039;&#039;make&#039;&#039; (a.k.a. &#039;&#039;gmake&#039;&#039;)&lt;br /&gt;
** ...and their dependencies: &#039;&#039;m4&#039;&#039; and &#039;&#039;gawk&#039;&#039;, &#039;&#039;mawk&#039;&#039; or &#039;&#039;nawk&#039;&#039;,&lt;br /&gt;
** the GNU C and C++ compilers a.k.a. &#039;&#039;gcc&#039;&#039; and &#039;&#039;g++&#039;&#039;,&lt;br /&gt;
** some GNU build utilities: &#039;&#039;pkg-config&#039;&#039; and &#039;&#039;patch&#039;&#039;,&lt;br /&gt;
** the following other build utilities: &#039;&#039;Apache Ant&#039;&#039; (or &#039;&#039;Ant&#039;&#039;), &#039;&#039;cmake&#039;&#039;, &#039;&#039;protobuf&#039;&#039;, &#039;&#039;ragel&#039;&#039;,&lt;br /&gt;
** the Subversion and Git version control systems&lt;br /&gt;
** &#039;&#039;unzip&#039;&#039; and either &#039;&#039;curl&#039;&#039; or &#039;&#039;wget&#039;&#039; for retreiving sources.&lt;br /&gt;
* Very recent versions of some of those tools may be required. At the time of writing, notably gettext 0.19.3 or later is required.&lt;br /&gt;
* If any of the above is missing, expect the build to fail at some point.&lt;br /&gt;
* If targeting an Android-x86 device, &#039;&#039;yasm&#039;&#039; must be installed too.&lt;br /&gt;
&lt;br /&gt;
Precise lists of tools dependencies is listed [https://git.videolan.org/?p=vlc.git;a=blob;f=extras/tools/bootstrap;h=e60e5ebf93e69e7bb731e80d0fbc6ebd1226dfdb;hb=HEAD#l73 here].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color: #ff0000&amp;quot;&amp;gt;&#039;&#039;&#039;64-bit users&#039;&#039;&#039;&amp;lt;/span&amp;gt;: You must install these 32-bit libs as specified here: [[AndroidCompile#Can.27t_run_aapt_or_adb_on_Linux_64-bit]]&lt;br /&gt;
&lt;br /&gt;
==== Example on Ubuntu ====&lt;br /&gt;
Install the packages as follow:&lt;br /&gt;
 sudo apt-get install automake ant autopoint cmake build-essential libtool \&lt;br /&gt;
      patch pkg-config protobuf-compiler ragel subversion unzip git \&lt;br /&gt;
     openjdk-8-jre openjdk-8-jdk flex python wget&lt;br /&gt;
&lt;br /&gt;
=== SDK &amp;amp; Android Studio ===&lt;br /&gt;
# Go to [http://developer.android.com/sdk/index.html Android SDK/IDE page].&lt;br /&gt;
# Android Studio is recommended, but not mandatory!&lt;br /&gt;
&lt;br /&gt;
===Android NDK===&lt;br /&gt;
# Check that the SDK installation is correct. &lt;br /&gt;
# Go to the [https://developer.android.com/ndk/downloads/index.html Android NDK page] and download the &#039;&#039;&#039;NDK r18b&#039;&#039;&#039; for Linux. &lt;br /&gt;
# Decompress it to install&lt;br /&gt;
&lt;br /&gt;
== Environment setup  ==&lt;br /&gt;
Set &#039;&#039;&#039;$ANDROID_SDK&#039;&#039;&#039; to point to your Android SDK directory &lt;br /&gt;
&lt;br /&gt;
 export ANDROID_SDK=/path/to/android-sdk&lt;br /&gt;
&lt;br /&gt;
Set &#039;&#039;&#039;$ANDROID_NDK&#039;&#039;&#039; to point to your Android NDK directory &lt;br /&gt;
&lt;br /&gt;
 export ANDROID_NDK=/path/to/android-ndk&lt;br /&gt;
&lt;br /&gt;
Add some useful binaries to your &#039;&#039;&#039;$PATH&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
 export PATH=$PATH:$ANDROID_SDK/platform-tools:$ANDROID_SDK/tools&lt;br /&gt;
&lt;br /&gt;
== Building ==&lt;br /&gt;
=== Get VLC Source ===&lt;br /&gt;
Clone the source from the VLC git!&lt;br /&gt;
&lt;br /&gt;
In your &#039;&#039;android&#039;&#039; source folder, run: &lt;br /&gt;
&lt;br /&gt;
 git clone https://code.videolan.org/videolan/vlc-android.git&lt;br /&gt;
&lt;br /&gt;
==== Setup Gradle build system ====&lt;br /&gt;
&lt;br /&gt;
Before using Android studio to compile the app, you must run &#039;&#039;&#039;compile.sh&#039;&#039;&#039; once to set up gradle build system.&lt;br /&gt;
&lt;br /&gt;
It should automatically populate mandatory local.properties and gradle.properties files with:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;local.properties&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 sdk.dir=&amp;lt;SDK path from $ANDROID_SDK&amp;gt;&lt;br /&gt;
 ndk.dir=&amp;lt;NDK path from $ANDROID_NDK&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This sets up gradle to build with correct SDK/NDK.&lt;br /&gt;
&lt;br /&gt;
Once this first compilation has succeeded, you can build from Android Studio with the &#039;&#039;&#039;Run&#039;&#039;&#039; command.&lt;br /&gt;
&lt;br /&gt;
=== Devices ===&lt;br /&gt;
&lt;br /&gt;
Find the ABI for the target device.&lt;br /&gt;
&lt;br /&gt;
* For a normal (2012-2015 consumer phone or tablet) device (e.g. Cortex-A8 or Cortex-A9)&lt;br /&gt;
 &amp;lt;code&amp;gt;armeabi-v7a&amp;lt;/code&amp;gt;&lt;br /&gt;
* For a Tegra2 device (no [[wikipedia:ARM_architecture#Advanced_SIMD_.28NEON.29|NEON]])&lt;br /&gt;
 &amp;lt;code&amp;gt;armeabi-v7a&amp;lt;/code&amp;gt;&lt;br /&gt;
* For an ARMv6 device&lt;br /&gt;
 &amp;lt;code&amp;gt;armeabi&amp;lt;/code&amp;gt;&lt;br /&gt;
* For an ARMv6 device that does not support FPU&lt;br /&gt;
 &amp;lt;code&amp;gt;armeabi-nofpu&amp;lt;/code&amp;gt;&lt;br /&gt;
* For an ARMv5 device or the Android Emulator&lt;br /&gt;
 &amp;lt;code&amp;gt;armeabi-v5&amp;lt;/code&amp;gt;&lt;br /&gt;
* For a x86 device (e.g. Android-x86, Google TV, Logitech TV, Android x86 smartphones, etc)&lt;br /&gt;
 &amp;lt;code&amp;gt;x86&amp;lt;/code&amp;gt;&lt;br /&gt;
* For a MIPS device (i.e. Ainol Novo tablets):&lt;br /&gt;
 &amp;lt;code&amp;gt;mips&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This value must be passed to the compile.sh script&lt;br /&gt;
&lt;br /&gt;
==== Compile ====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Read&#039;&#039;&#039; compile.sh first, as it contains some very useful and important information. Then run it:&lt;br /&gt;
 sh compile.sh -a &amp;lt;ABI&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039; At this point, you will get an auto-generated debug APK in the vlc-android/build/outputs/apk folder, signed with a debug key.&lt;br /&gt;
&lt;br /&gt;
In order to build a non-debug (release, and &#039;&#039;&#039;unsigned&#039;&#039;&#039;) package:&lt;br /&gt;
 sh compile.sh release&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039; At this point, you will get an release APK in the same folder.&lt;br /&gt;
&lt;br /&gt;
==== Build LibVLC ====&lt;br /&gt;
&lt;br /&gt;
To build LibVLC, simply pass the -l option:&lt;br /&gt;
  sh compile.sh -l -a &amp;lt;ABI&amp;gt; -r&lt;br /&gt;
&lt;br /&gt;
.aar archive will be located in libvlc/build/outputs/aar/&lt;br /&gt;
&lt;br /&gt;
==== Gradle tweaks ====&lt;br /&gt;
&lt;br /&gt;
To improve gradle execution time, try these options by writing this in gradle.properties in vlc android project.&lt;br /&gt;
Or directly in your ~/.gradle/gradle.properties&lt;br /&gt;
 org.gradle.parallel=true&lt;br /&gt;
 org.gradle.configureondemand=true&lt;br /&gt;
 # If you have a BUNCH of RAM available&lt;br /&gt;
 org.gradle.daemon=true&lt;br /&gt;
 org.gradle.jvmargs=-Xmx2048M&lt;br /&gt;
&lt;br /&gt;
=== Run ===&lt;br /&gt;
Run it and enjoy!&lt;br /&gt;
&lt;br /&gt;
=== Troubleshooting ===&lt;br /&gt;
==== Compilation error on Dependencies ====&lt;br /&gt;
Sometimes, especially when gradle dependencies have been upgraded, the &#039;&#039;compile.sh&#039;&#039; will fail to refetch dependencies. Just close Android Studio and re-run the script to fix this issue.&lt;br /&gt;
&lt;br /&gt;
== Debugging ==&lt;br /&gt;
Here are some helpful links if you wish to debug VLC on Android:&lt;br /&gt;
* [http://developer.android.com/guide/developing/debugging/ddms.html DDMS] &lt;br /&gt;
* [http://developer.android.com/guide/developing/tools/logcat.html Logcat]&lt;br /&gt;
&lt;br /&gt;
===Native debugging===&lt;br /&gt;
If you run VLC Android and you get a crash that looks something like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
I/DEBUG   (  958): *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***&lt;br /&gt;
I/DEBUG   (  958): Build fingerprint: &#039;MOTO/MBTCA/sesame/XT300:2.1-update1/SESLA_U3_01.71.0/110110:user/release-keys&#039;&lt;br /&gt;
I/DEBUG   (  958): pid: 1733, tid: 1733 &amp;gt;&amp;gt;&amp;gt; org.videolan.vlc &amp;lt;&amp;lt;&amp;lt;&lt;br /&gt;
I/DEBUG   (  958): signal 11 (SIGSEGV), fault addr 4237be3c&lt;br /&gt;
I/DEBUG   (  958):  r0 423640a0  r1 7ece77ac  r2 42bccdac  r3 4237be38&lt;br /&gt;
I/DEBUG   (  958):  r4 00000000  r5 42bccdac  r6 002ed088  r7 002ed018&lt;br /&gt;
I/DEBUG   (  958):  r8 7ece78e8  r9 2bafa844  10 0000000e  fp 7ece794c&lt;br /&gt;
I/DEBUG   (  958):  ip 00002ba0  sp 7ece7784  lr 423652e4  pc 4237be3c  cpsr 60000010&lt;br /&gt;
I/DEBUG   (  958):          #00  pc 0037be3c  /data/data/org.videolan.vlc/lib/libvlcjni.so&lt;br /&gt;
I/DEBUG   (  958):          #01  lr 423652e4  /data/data/org.videolan.vlc/lib/libvlcjni.so&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You have a &#039;&#039;&#039;native crash&#039;&#039;&#039;. To debug it, you need to have compiled VLC as above and installed it on your device. Once your compiled VLC build is on your device, you can find the &#039;&#039;&#039;backtrace&#039;&#039;&#039; as follows:&lt;br /&gt;
&lt;br /&gt;
# Make sure you are in the directory that you checked out VLC-Android in.&lt;br /&gt;
# Migrate the libvlc folders. (Do this every time the code is recompiled)&lt;br /&gt;
## cp -r libvlc/jni vlc-android&lt;br /&gt;
## cp -r libvlc/libs vlc-android&lt;br /&gt;
## cp -r libvlc/obj vlc-android&lt;br /&gt;
## (This is because the libvlc and VLC for Android folders were split yet the debugger needs the object files from both.)&lt;br /&gt;
# cd vlc-android&lt;br /&gt;
# $ANDROID_NDK/ndk-gdb --verbose --force --start&lt;br /&gt;
At this point, lots of stuff will appear:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Android NDK installation path: /opt/android-ndk-r8c&lt;br /&gt;
Using default adb command: /opt/android-sdk-linux_x86/platform-tools/adb&lt;br /&gt;
ADB version found: Android Debug Bridge version 1.0.29&lt;br /&gt;
Using ADB flags: &lt;br /&gt;
Using auto-detected project path: .&lt;br /&gt;
Found package name: org.videolan.vlc&lt;br /&gt;
...bunch of stuff skipped...&lt;br /&gt;
GNU gdb (GDB) 7.3.1-gg2&lt;br /&gt;
Copyright (C) 2011 Free Software Foundation, Inc.&lt;br /&gt;
License GPLv3+: GNU GPL version 3 or later &amp;lt;http://gnu.org/licenses/gpl.html&amp;gt;&lt;br /&gt;
This is free software: you are free to change and redistribute it.&lt;br /&gt;
There is NO WARRANTY, to the extent permitted by law.  Type &amp;quot;show copying&amp;quot;&lt;br /&gt;
and &amp;quot;show warranty&amp;quot; for details.&lt;br /&gt;
This GDB was configured as &amp;quot;--host=x86_64-linux-gnu --target=arm-linux-android&amp;quot;.&lt;br /&gt;
For bug reporting instructions, please see:&lt;br /&gt;
&amp;lt;http://www.gnu.org/software/gdb/bugs/&amp;gt;.&lt;br /&gt;
Remote debugging from host 0.0.0.0&lt;br /&gt;
...bunch of stuff skipped...&lt;br /&gt;
libthread_db:td_ta_new: Victory: We can debug theads!&lt;br /&gt;
warning: Breakpoint address adjusted from 0x400deaa5 to 0x400deaa4.&lt;br /&gt;
0x40107a40 in epoll_wait () from /media/data/vlc_android/vlc-android/obj/local/armeabi/libc.so&lt;br /&gt;
(gdb)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;ol start=&amp;quot;4&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;At this point, type in &amp;quot;continue&amp;quot; and press Enter.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Perform the actions you did to make it crash. It will spit out something like this:&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Program received signal SIGSEGV, Segmentation fault.&lt;br /&gt;
0x401120ae in ?? () from /media/data/vlc_android/vlc-android/obj/local/armeabi/libc.so&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;ol start=&amp;quot;6&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Now, just type in &amp;quot;&#039;&#039;&#039;bt full&#039;&#039;&#039;&amp;quot; (excluding the quotation marks) and press Enter. That is your backtrace that you should give to the developers when they ask for it (possibly on a [http://paste.kde.org/ pastebin], too).&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
(gdb) bt full&lt;br /&gt;
#0  0x401120ae in ?? () from /media/data/vlc_android/vlc-android/obj/local/armeabi/libc.so&lt;br /&gt;
No symbol table info available.&lt;br /&gt;
#1  0x40107bd8 in abort () from /media/data/vlc_android/vlc-android/obj/local/armeabi/libc.so&lt;br /&gt;
No symbol table info available.&lt;br /&gt;
#2  0x40118e6a in __assert2 () from /media/data/vlc_android/vlc-android/obj/local/armeabi/libc.so&lt;br /&gt;
No symbol table info available.&lt;br /&gt;
#3  0x5e0cdfdc in var_SetChecked (p_this=0x40134b94, psz_name=0x5ea2fcb8 &amp;quot;rate&amp;quot;, expected_type=80, val=...) at ../../src/misc/variables.c:711&lt;br /&gt;
        i_ret = 0&lt;br /&gt;
        p_var = &amp;lt;optimized out&amp;gt;&lt;br /&gt;
        oldval = {i_int = 4742037487051810480, b_bool = 176, f_float = 2.27765068e+14, psz_string = 0x574f26b0 &amp;quot;X\270|B\001\001&amp;quot;, p_address = 0x574f26b0, &lt;br /&gt;
          p_object = 0x574f26b0, p_list = 0x574f26b0, i_time = 4742037487051810480, coords = {x = 1464805040, y = 1104091640}}&lt;br /&gt;
        __func__ = &amp;quot;var_SetChecked&amp;quot;&lt;br /&gt;
        p_priv = &amp;lt;optimized out&amp;gt;&lt;br /&gt;
#4  0x5e06dd9c in var_SetFloat (f=1.41421354, psz_name=0x5ea2fcb8 &amp;quot;rate____sample_backtrace&amp;quot;, p_obj=0x0) at ../../include/vlc_variables.h:262&lt;br /&gt;
        val = &amp;lt;optimized out&amp;gt;&lt;br /&gt;
#5  libvlc_media_player_set_rate (p_mi=0x0, rate=1.41421354) at ../../lib/media_player.c:1252&lt;br /&gt;
        p_input_thread = &amp;lt;optimized out&amp;gt;&lt;br /&gt;
#6  0x5de7bd18 in Java_org_videolan_vlc_LibVLC_setRate (env=0x41cf0470, thiz=0x8ab00021, rate=1.41421354) at jni/libvlcjni.c:678&lt;br /&gt;
        mp = 0x0&lt;br /&gt;
#7  0x4076de34 in ?? ()&lt;br /&gt;
No symbol table info available.&lt;br /&gt;
#8  0x4076de34 in ?? ()&lt;br /&gt;
No symbol table info available.&lt;br /&gt;
Backtrace stopped: previous frame identical to this frame (corrupt stack?)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Troubleshooting ==&lt;br /&gt;
=== Outdated Awk ===&lt;br /&gt;
If you receive the error message while building:&lt;br /&gt;
&lt;br /&gt;
 Android NDK: Host &#039;awk&#039; tool is outdated. Please define HOST_AWK to point to Gawk or Nawk !    &lt;br /&gt;
&lt;br /&gt;
The prebuilt version of Awk that comes with the Android NDK is outdated. Defining HOST_AWK in your environment does nothing as the system still tries to just the one that comes with the Android NDK. To get around this issue, simply rename or delete the Awk binary that comes with the Android NDK. For example to move it:&lt;br /&gt;
&lt;br /&gt;
 mv $ANDROID_NDK/prebuilt/linux-x86/bin/awk $ANDROID_NDK/prebuilt/linux-x86/bin/awk.old&lt;br /&gt;
&lt;br /&gt;
=== Can&#039;t find Ant ===&lt;br /&gt;
If you&#039;re new to Ant, please be aware that some Linux distributions don&#039;t install it in the usual spot as with other programs. Try checking to see if the directory /usr/share/java/apache-ant/bin exists and add it to your path.&lt;br /&gt;
&lt;br /&gt;
===Outdated autotools-dev===&lt;br /&gt;
If you get the following error message you may have have an outdated version of autotools-dev:&lt;br /&gt;
  Invalid configuration `arm-linux-androideabi&#039;: system `androideabi&#039; not recognized&lt;br /&gt;
You may first want to check if your distribution has any available updates for this package.  Alternatively, you can manually update your config.guess and config.sub files from here: [http://git.savannah.gnu.org/gitweb/?p=config.git;a=tree].  These files are typically located in /usr/share/misc on Debian based distributions.&lt;br /&gt;
&lt;br /&gt;
===autoreconf: automake failed with exit status: 1===&lt;br /&gt;
 automake: warnings are treated as errors&lt;br /&gt;
 configure.ac:41: warning: The &#039;AM_PROG_MKDIR_P&#039; macro is deprecated, and will soon be removed.&lt;br /&gt;
 configure.ac:41: You should use the Autoconf-provided &#039;AC_PROG_MKDIR_P&#039; macro instead,&lt;br /&gt;
 configure.ac:41: and use &#039;$(MKDIR_P)&#039; instead of &#039;$(mkdir_p)&#039;in your Makefile.am files.&lt;br /&gt;
&lt;br /&gt;
If you are using Automake 1.13 or higher, you must remove -Werror from vlc/contrib/android/gnutls/configure.ac to continue. (First reported in [http://forum.videolan.org/viewtopic.php?f=35&amp;amp;t=108927])&lt;br /&gt;
&lt;br /&gt;
===autoreconf: automake failed with exit status: 1 ===&lt;br /&gt;
 make: *** [dvdnav] Error 1&lt;br /&gt;
 ...&lt;br /&gt;
 ... error: possibly undefined macro: AM_PROG_LIBTOOL&lt;br /&gt;
&lt;br /&gt;
This error may occur when compiling with an older Linux distribution, such as Ubuntu 12.04, that doesn&#039;t meet bootstrap prerequisites. As of 2014-08-09, the master branch for vlc-ports/android.git [http://git.videolan.org/?p=vlc-ports/android.git;a=summary] lacks patch 5199 [https://patches.videolan.org/patch/5199/]. Without the patch, compile.sh builds out dated automake and autoconf that may not access libtool despite presence of a current libtool binary amongst supporting tools and a similar or more recent binary present as part of the OS.&lt;br /&gt;
&lt;br /&gt;
To work around this error, patch the master branch or update the prerequisites. For Ubuntu 12.04, upgrade autoconf, automake, and cmake as dictated by vlc/extras/tools/bootstrap.&lt;br /&gt;
&lt;br /&gt;
===Can&#039;t run aapt or adb on Linux 64-bit===&lt;br /&gt;
You must install the 32-bit libraries of the following libraries, as the precompiled Google binaries depend on them: &#039;&#039;libc6&#039;&#039;, &#039;&#039;libstdc++6&#039;&#039;, and &#039;&#039;zlib&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
New versions of Debian and/or Ubuntu require you to install i386 versions of packages:&lt;br /&gt;
 sudo dpkg --add-architecture i386&lt;br /&gt;
 sudo apt-get update&lt;br /&gt;
 sudo apt-get install zlib1g:i386 libstdc++6:i386 libc6:i386&lt;br /&gt;
&lt;br /&gt;
If you are under &#039;&#039;old versions&#039;&#039; of Ubuntu, install ia32-libs can help you solve this issue.&lt;br /&gt;
 sudo apt-get install ia32-libs&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
* [[Android Report bugs]] - Bug reporting guide for VLC-Android.&lt;br /&gt;
&lt;br /&gt;
[[Category:Building]] [[Category:Android]]&lt;/div&gt;</summary>
		<author><name>Dekans</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=AndroidCompile&amp;diff=56488</id>
		<title>AndroidCompile</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=AndroidCompile&amp;diff=56488"/>
		<updated>2018-11-12T10:37:16Z</updated>

		<summary type="html">&lt;p&gt;Dekans: /* SDK &amp;amp; Android Studio */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page is an introduction to the compilation of &#039;&#039;&#039;VLC for Android&#039;&#039;&#039; on Linux. &lt;br /&gt;
&lt;br /&gt;
==Android Studio, SDK and NDK installation==&lt;br /&gt;
&lt;br /&gt;
=== Requirements  ===&lt;br /&gt;
* You &#039;&#039;&#039;MUST&#039;&#039;&#039; build on Linux (or OSX if you know what you are doing).&lt;br /&gt;
* The following packages &#039;&#039;&#039;MUST&#039;&#039;&#039; must be installed:&lt;br /&gt;
** the GNU autotools: &#039;&#039;autoconf&#039;&#039;, &#039;&#039;libtool&#039;&#039;, &#039;&#039;automake&#039;&#039; and &#039;&#039;make&#039;&#039; (a.k.a. &#039;&#039;gmake&#039;&#039;)&lt;br /&gt;
** ...and their dependencies: &#039;&#039;m4&#039;&#039; and &#039;&#039;gawk&#039;&#039;, &#039;&#039;mawk&#039;&#039; or &#039;&#039;nawk&#039;&#039;,&lt;br /&gt;
** the GNU C and C++ compilers a.k.a. &#039;&#039;gcc&#039;&#039; and &#039;&#039;g++&#039;&#039;,&lt;br /&gt;
** some GNU build utilities: &#039;&#039;pkg-config&#039;&#039; and &#039;&#039;patch&#039;&#039;,&lt;br /&gt;
** the following other build utilities: &#039;&#039;Apache Ant&#039;&#039; (or &#039;&#039;Ant&#039;&#039;), &#039;&#039;cmake&#039;&#039;, &#039;&#039;protobuf&#039;&#039;, &#039;&#039;ragel&#039;&#039;,&lt;br /&gt;
** the Subversion and Git version control systems&lt;br /&gt;
** &#039;&#039;unzip&#039;&#039; and either &#039;&#039;curl&#039;&#039; or &#039;&#039;wget&#039;&#039; for retreiving sources.&lt;br /&gt;
* Very recent versions of some of those tools may be required. At the time of writing, notably gettext 0.19.3 or later is required.&lt;br /&gt;
* If any of the above is missing, expect the build to fail at some point.&lt;br /&gt;
* If targeting an Android-x86 device, &#039;&#039;yasm&#039;&#039; must be installed too.&lt;br /&gt;
&lt;br /&gt;
Precise lists of tools dependencies is listed [https://git.videolan.org/?p=vlc.git;a=blob;f=extras/tools/bootstrap;h=e60e5ebf93e69e7bb731e80d0fbc6ebd1226dfdb;hb=HEAD#l73 here].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color: #ff0000&amp;quot;&amp;gt;&#039;&#039;&#039;64-bit users&#039;&#039;&#039;&amp;lt;/span&amp;gt;: You must install these 32-bit libs as specified here: [[AndroidCompile#Can.27t_run_aapt_or_adb_on_Linux_64-bit]]&lt;br /&gt;
&lt;br /&gt;
==== Example on Ubuntu ====&lt;br /&gt;
Install the packages as follow:&lt;br /&gt;
 sudo apt-get install automake ant autopoint cmake build-essential libtool \&lt;br /&gt;
      patch pkg-config protobuf-compiler ragel subversion unzip git \&lt;br /&gt;
     openjdk-8-jre openjdk-8-jdk flex python wget&lt;br /&gt;
&lt;br /&gt;
=== SDK &amp;amp; Android Studio ===&lt;br /&gt;
# Go to [http://developer.android.com/sdk/index.html Android SDK/IDE page].&lt;br /&gt;
# Android Studio is recommended, but not mandatory!&lt;br /&gt;
&lt;br /&gt;
===Android NDK===&lt;br /&gt;
# Check that the SDK installation is correct. &lt;br /&gt;
# Go to the [https://developer.android.com/ndk/downloads/index.html Android NDK page] and download the &#039;&#039;&#039;NDK r14b&#039;&#039;&#039; for Linux. &lt;br /&gt;
# Decompress it to install&lt;br /&gt;
&lt;br /&gt;
== Environment setup  ==&lt;br /&gt;
Set &#039;&#039;&#039;$ANDROID_SDK&#039;&#039;&#039; to point to your Android SDK directory &lt;br /&gt;
&lt;br /&gt;
 export ANDROID_SDK=/path/to/android-sdk&lt;br /&gt;
&lt;br /&gt;
Set &#039;&#039;&#039;$ANDROID_NDK&#039;&#039;&#039; to point to your Android NDK directory &lt;br /&gt;
&lt;br /&gt;
 export ANDROID_NDK=/path/to/android-ndk&lt;br /&gt;
&lt;br /&gt;
Add some useful binaries to your &#039;&#039;&#039;$PATH&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
 export PATH=$PATH:$ANDROID_SDK/platform-tools:$ANDROID_SDK/tools&lt;br /&gt;
&lt;br /&gt;
== Building ==&lt;br /&gt;
=== Get VLC Source ===&lt;br /&gt;
Clone the source from the VLC git!&lt;br /&gt;
&lt;br /&gt;
In your &#039;&#039;android&#039;&#039; source folder, run: &lt;br /&gt;
&lt;br /&gt;
 git clone https://code.videolan.org/videolan/vlc-android.git&lt;br /&gt;
&lt;br /&gt;
==== Setup Gradle build system ====&lt;br /&gt;
&lt;br /&gt;
Before using Android studio to compile the app, you must run &#039;&#039;&#039;compile.sh&#039;&#039;&#039; once to set up gradle build system.&lt;br /&gt;
&lt;br /&gt;
It should automatically populate mandatory local.properties and gradle.properties files with:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;local.properties&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 sdk.dir=&amp;lt;SDK path from $ANDROID_SDK&amp;gt;&lt;br /&gt;
 ndk.dir=&amp;lt;NDK path from $ANDROID_NDK&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This sets up gradle to build with correct SDK/NDK.&lt;br /&gt;
&lt;br /&gt;
Once this first compilation has succeeded, you can build from Android Studio with the &#039;&#039;&#039;Run&#039;&#039;&#039; command.&lt;br /&gt;
&lt;br /&gt;
=== Devices ===&lt;br /&gt;
&lt;br /&gt;
Find the ABI for the target device.&lt;br /&gt;
&lt;br /&gt;
* For a normal (2012-2015 consumer phone or tablet) device (e.g. Cortex-A8 or Cortex-A9)&lt;br /&gt;
 &amp;lt;code&amp;gt;armeabi-v7a&amp;lt;/code&amp;gt;&lt;br /&gt;
* For a Tegra2 device (no [[wikipedia:ARM_architecture#Advanced_SIMD_.28NEON.29|NEON]])&lt;br /&gt;
 &amp;lt;code&amp;gt;armeabi-v7a&amp;lt;/code&amp;gt;&lt;br /&gt;
* For an ARMv6 device&lt;br /&gt;
 &amp;lt;code&amp;gt;armeabi&amp;lt;/code&amp;gt;&lt;br /&gt;
* For an ARMv6 device that does not support FPU&lt;br /&gt;
 &amp;lt;code&amp;gt;armeabi-nofpu&amp;lt;/code&amp;gt;&lt;br /&gt;
* For an ARMv5 device or the Android Emulator&lt;br /&gt;
 &amp;lt;code&amp;gt;armeabi-v5&amp;lt;/code&amp;gt;&lt;br /&gt;
* For a x86 device (e.g. Android-x86, Google TV, Logitech TV, Android x86 smartphones, etc)&lt;br /&gt;
 &amp;lt;code&amp;gt;x86&amp;lt;/code&amp;gt;&lt;br /&gt;
* For a MIPS device (i.e. Ainol Novo tablets):&lt;br /&gt;
 &amp;lt;code&amp;gt;mips&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This value must be passed to the compile.sh script&lt;br /&gt;
&lt;br /&gt;
==== Compile ====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Read&#039;&#039;&#039; compile.sh first, as it contains some very useful and important information. Then run it:&lt;br /&gt;
 sh compile.sh -a &amp;lt;ABI&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039; At this point, you will get an auto-generated debug APK in the vlc-android/build/outputs/apk folder, signed with a debug key.&lt;br /&gt;
&lt;br /&gt;
In order to build a non-debug (release, and &#039;&#039;&#039;unsigned&#039;&#039;&#039;) package:&lt;br /&gt;
 sh compile.sh release&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039; At this point, you will get an release APK in the same folder.&lt;br /&gt;
&lt;br /&gt;
==== Build LibVLC ====&lt;br /&gt;
&lt;br /&gt;
To build LibVLC, simply pass the -l option:&lt;br /&gt;
  sh compile.sh -l -a &amp;lt;ABI&amp;gt; -r&lt;br /&gt;
&lt;br /&gt;
.aar archive will be located in libvlc/build/outputs/aar/&lt;br /&gt;
&lt;br /&gt;
==== Gradle tweaks ====&lt;br /&gt;
&lt;br /&gt;
To improve gradle execution time, try these options by writing this in gradle.properties in vlc android project.&lt;br /&gt;
Or directly in your ~/.gradle/gradle.properties&lt;br /&gt;
 org.gradle.parallel=true&lt;br /&gt;
 org.gradle.configureondemand=true&lt;br /&gt;
 # If you have a BUNCH of RAM available&lt;br /&gt;
 org.gradle.daemon=true&lt;br /&gt;
 org.gradle.jvmargs=-Xmx2048M&lt;br /&gt;
&lt;br /&gt;
=== Run ===&lt;br /&gt;
Run it and enjoy!&lt;br /&gt;
&lt;br /&gt;
=== Troubleshooting ===&lt;br /&gt;
==== Compilation error on Dependencies ====&lt;br /&gt;
Sometimes, especially when gradle dependencies have been upgraded, the &#039;&#039;compile.sh&#039;&#039; will fail to refetch dependencies. Just close Android Studio and re-run the script to fix this issue.&lt;br /&gt;
&lt;br /&gt;
== Debugging ==&lt;br /&gt;
Here are some helpful links if you wish to debug VLC on Android:&lt;br /&gt;
* [http://developer.android.com/guide/developing/debugging/ddms.html DDMS] &lt;br /&gt;
* [http://developer.android.com/guide/developing/tools/logcat.html Logcat]&lt;br /&gt;
&lt;br /&gt;
===Native debugging===&lt;br /&gt;
If you run VLC Android and you get a crash that looks something like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
I/DEBUG   (  958): *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***&lt;br /&gt;
I/DEBUG   (  958): Build fingerprint: &#039;MOTO/MBTCA/sesame/XT300:2.1-update1/SESLA_U3_01.71.0/110110:user/release-keys&#039;&lt;br /&gt;
I/DEBUG   (  958): pid: 1733, tid: 1733 &amp;gt;&amp;gt;&amp;gt; org.videolan.vlc &amp;lt;&amp;lt;&amp;lt;&lt;br /&gt;
I/DEBUG   (  958): signal 11 (SIGSEGV), fault addr 4237be3c&lt;br /&gt;
I/DEBUG   (  958):  r0 423640a0  r1 7ece77ac  r2 42bccdac  r3 4237be38&lt;br /&gt;
I/DEBUG   (  958):  r4 00000000  r5 42bccdac  r6 002ed088  r7 002ed018&lt;br /&gt;
I/DEBUG   (  958):  r8 7ece78e8  r9 2bafa844  10 0000000e  fp 7ece794c&lt;br /&gt;
I/DEBUG   (  958):  ip 00002ba0  sp 7ece7784  lr 423652e4  pc 4237be3c  cpsr 60000010&lt;br /&gt;
I/DEBUG   (  958):          #00  pc 0037be3c  /data/data/org.videolan.vlc/lib/libvlcjni.so&lt;br /&gt;
I/DEBUG   (  958):          #01  lr 423652e4  /data/data/org.videolan.vlc/lib/libvlcjni.so&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You have a &#039;&#039;&#039;native crash&#039;&#039;&#039;. To debug it, you need to have compiled VLC as above and installed it on your device. Once your compiled VLC build is on your device, you can find the &#039;&#039;&#039;backtrace&#039;&#039;&#039; as follows:&lt;br /&gt;
&lt;br /&gt;
# Make sure you are in the directory that you checked out VLC-Android in.&lt;br /&gt;
# Migrate the libvlc folders. (Do this every time the code is recompiled)&lt;br /&gt;
## cp -r libvlc/jni vlc-android&lt;br /&gt;
## cp -r libvlc/libs vlc-android&lt;br /&gt;
## cp -r libvlc/obj vlc-android&lt;br /&gt;
## (This is because the libvlc and VLC for Android folders were split yet the debugger needs the object files from both.)&lt;br /&gt;
# cd vlc-android&lt;br /&gt;
# $ANDROID_NDK/ndk-gdb --verbose --force --start&lt;br /&gt;
At this point, lots of stuff will appear:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Android NDK installation path: /opt/android-ndk-r8c&lt;br /&gt;
Using default adb command: /opt/android-sdk-linux_x86/platform-tools/adb&lt;br /&gt;
ADB version found: Android Debug Bridge version 1.0.29&lt;br /&gt;
Using ADB flags: &lt;br /&gt;
Using auto-detected project path: .&lt;br /&gt;
Found package name: org.videolan.vlc&lt;br /&gt;
...bunch of stuff skipped...&lt;br /&gt;
GNU gdb (GDB) 7.3.1-gg2&lt;br /&gt;
Copyright (C) 2011 Free Software Foundation, Inc.&lt;br /&gt;
License GPLv3+: GNU GPL version 3 or later &amp;lt;http://gnu.org/licenses/gpl.html&amp;gt;&lt;br /&gt;
This is free software: you are free to change and redistribute it.&lt;br /&gt;
There is NO WARRANTY, to the extent permitted by law.  Type &amp;quot;show copying&amp;quot;&lt;br /&gt;
and &amp;quot;show warranty&amp;quot; for details.&lt;br /&gt;
This GDB was configured as &amp;quot;--host=x86_64-linux-gnu --target=arm-linux-android&amp;quot;.&lt;br /&gt;
For bug reporting instructions, please see:&lt;br /&gt;
&amp;lt;http://www.gnu.org/software/gdb/bugs/&amp;gt;.&lt;br /&gt;
Remote debugging from host 0.0.0.0&lt;br /&gt;
...bunch of stuff skipped...&lt;br /&gt;
libthread_db:td_ta_new: Victory: We can debug theads!&lt;br /&gt;
warning: Breakpoint address adjusted from 0x400deaa5 to 0x400deaa4.&lt;br /&gt;
0x40107a40 in epoll_wait () from /media/data/vlc_android/vlc-android/obj/local/armeabi/libc.so&lt;br /&gt;
(gdb)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;ol start=&amp;quot;4&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;At this point, type in &amp;quot;continue&amp;quot; and press Enter.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Perform the actions you did to make it crash. It will spit out something like this:&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Program received signal SIGSEGV, Segmentation fault.&lt;br /&gt;
0x401120ae in ?? () from /media/data/vlc_android/vlc-android/obj/local/armeabi/libc.so&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;ol start=&amp;quot;6&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Now, just type in &amp;quot;&#039;&#039;&#039;bt full&#039;&#039;&#039;&amp;quot; (excluding the quotation marks) and press Enter. That is your backtrace that you should give to the developers when they ask for it (possibly on a [http://paste.kde.org/ pastebin], too).&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
(gdb) bt full&lt;br /&gt;
#0  0x401120ae in ?? () from /media/data/vlc_android/vlc-android/obj/local/armeabi/libc.so&lt;br /&gt;
No symbol table info available.&lt;br /&gt;
#1  0x40107bd8 in abort () from /media/data/vlc_android/vlc-android/obj/local/armeabi/libc.so&lt;br /&gt;
No symbol table info available.&lt;br /&gt;
#2  0x40118e6a in __assert2 () from /media/data/vlc_android/vlc-android/obj/local/armeabi/libc.so&lt;br /&gt;
No symbol table info available.&lt;br /&gt;
#3  0x5e0cdfdc in var_SetChecked (p_this=0x40134b94, psz_name=0x5ea2fcb8 &amp;quot;rate&amp;quot;, expected_type=80, val=...) at ../../src/misc/variables.c:711&lt;br /&gt;
        i_ret = 0&lt;br /&gt;
        p_var = &amp;lt;optimized out&amp;gt;&lt;br /&gt;
        oldval = {i_int = 4742037487051810480, b_bool = 176, f_float = 2.27765068e+14, psz_string = 0x574f26b0 &amp;quot;X\270|B\001\001&amp;quot;, p_address = 0x574f26b0, &lt;br /&gt;
          p_object = 0x574f26b0, p_list = 0x574f26b0, i_time = 4742037487051810480, coords = {x = 1464805040, y = 1104091640}}&lt;br /&gt;
        __func__ = &amp;quot;var_SetChecked&amp;quot;&lt;br /&gt;
        p_priv = &amp;lt;optimized out&amp;gt;&lt;br /&gt;
#4  0x5e06dd9c in var_SetFloat (f=1.41421354, psz_name=0x5ea2fcb8 &amp;quot;rate____sample_backtrace&amp;quot;, p_obj=0x0) at ../../include/vlc_variables.h:262&lt;br /&gt;
        val = &amp;lt;optimized out&amp;gt;&lt;br /&gt;
#5  libvlc_media_player_set_rate (p_mi=0x0, rate=1.41421354) at ../../lib/media_player.c:1252&lt;br /&gt;
        p_input_thread = &amp;lt;optimized out&amp;gt;&lt;br /&gt;
#6  0x5de7bd18 in Java_org_videolan_vlc_LibVLC_setRate (env=0x41cf0470, thiz=0x8ab00021, rate=1.41421354) at jni/libvlcjni.c:678&lt;br /&gt;
        mp = 0x0&lt;br /&gt;
#7  0x4076de34 in ?? ()&lt;br /&gt;
No symbol table info available.&lt;br /&gt;
#8  0x4076de34 in ?? ()&lt;br /&gt;
No symbol table info available.&lt;br /&gt;
Backtrace stopped: previous frame identical to this frame (corrupt stack?)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Troubleshooting ==&lt;br /&gt;
=== Outdated Awk ===&lt;br /&gt;
If you receive the error message while building:&lt;br /&gt;
&lt;br /&gt;
 Android NDK: Host &#039;awk&#039; tool is outdated. Please define HOST_AWK to point to Gawk or Nawk !    &lt;br /&gt;
&lt;br /&gt;
The prebuilt version of Awk that comes with the Android NDK is outdated. Defining HOST_AWK in your environment does nothing as the system still tries to just the one that comes with the Android NDK. To get around this issue, simply rename or delete the Awk binary that comes with the Android NDK. For example to move it:&lt;br /&gt;
&lt;br /&gt;
 mv $ANDROID_NDK/prebuilt/linux-x86/bin/awk $ANDROID_NDK/prebuilt/linux-x86/bin/awk.old&lt;br /&gt;
&lt;br /&gt;
=== Can&#039;t find Ant ===&lt;br /&gt;
If you&#039;re new to Ant, please be aware that some Linux distributions don&#039;t install it in the usual spot as with other programs. Try checking to see if the directory /usr/share/java/apache-ant/bin exists and add it to your path.&lt;br /&gt;
&lt;br /&gt;
===Outdated autotools-dev===&lt;br /&gt;
If you get the following error message you may have have an outdated version of autotools-dev:&lt;br /&gt;
  Invalid configuration `arm-linux-androideabi&#039;: system `androideabi&#039; not recognized&lt;br /&gt;
You may first want to check if your distribution has any available updates for this package.  Alternatively, you can manually update your config.guess and config.sub files from here: [http://git.savannah.gnu.org/gitweb/?p=config.git;a=tree].  These files are typically located in /usr/share/misc on Debian based distributions.&lt;br /&gt;
&lt;br /&gt;
===autoreconf: automake failed with exit status: 1===&lt;br /&gt;
 automake: warnings are treated as errors&lt;br /&gt;
 configure.ac:41: warning: The &#039;AM_PROG_MKDIR_P&#039; macro is deprecated, and will soon be removed.&lt;br /&gt;
 configure.ac:41: You should use the Autoconf-provided &#039;AC_PROG_MKDIR_P&#039; macro instead,&lt;br /&gt;
 configure.ac:41: and use &#039;$(MKDIR_P)&#039; instead of &#039;$(mkdir_p)&#039;in your Makefile.am files.&lt;br /&gt;
&lt;br /&gt;
If you are using Automake 1.13 or higher, you must remove -Werror from vlc/contrib/android/gnutls/configure.ac to continue. (First reported in [http://forum.videolan.org/viewtopic.php?f=35&amp;amp;t=108927])&lt;br /&gt;
&lt;br /&gt;
===autoreconf: automake failed with exit status: 1 ===&lt;br /&gt;
 make: *** [dvdnav] Error 1&lt;br /&gt;
 ...&lt;br /&gt;
 ... error: possibly undefined macro: AM_PROG_LIBTOOL&lt;br /&gt;
&lt;br /&gt;
This error may occur when compiling with an older Linux distribution, such as Ubuntu 12.04, that doesn&#039;t meet bootstrap prerequisites. As of 2014-08-09, the master branch for vlc-ports/android.git [http://git.videolan.org/?p=vlc-ports/android.git;a=summary] lacks patch 5199 [https://patches.videolan.org/patch/5199/]. Without the patch, compile.sh builds out dated automake and autoconf that may not access libtool despite presence of a current libtool binary amongst supporting tools and a similar or more recent binary present as part of the OS.&lt;br /&gt;
&lt;br /&gt;
To work around this error, patch the master branch or update the prerequisites. For Ubuntu 12.04, upgrade autoconf, automake, and cmake as dictated by vlc/extras/tools/bootstrap.&lt;br /&gt;
&lt;br /&gt;
===Can&#039;t run aapt or adb on Linux 64-bit===&lt;br /&gt;
You must install the 32-bit libraries of the following libraries, as the precompiled Google binaries depend on them: &#039;&#039;libc6&#039;&#039;, &#039;&#039;libstdc++6&#039;&#039;, and &#039;&#039;zlib&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
New versions of Debian and/or Ubuntu require you to install i386 versions of packages:&lt;br /&gt;
 sudo dpkg --add-architecture i386&lt;br /&gt;
 sudo apt-get update&lt;br /&gt;
 sudo apt-get install zlib1g:i386 libstdc++6:i386 libc6:i386&lt;br /&gt;
&lt;br /&gt;
If you are under &#039;&#039;old versions&#039;&#039; of Ubuntu, install ia32-libs can help you solve this issue.&lt;br /&gt;
 sudo apt-get install ia32-libs&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
* [[Android Report bugs]] - Bug reporting guide for VLC-Android.&lt;br /&gt;
&lt;br /&gt;
[[Category:Building]] [[Category:Android]]&lt;/div&gt;</summary>
		<author><name>Dekans</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=AndroidCompile&amp;diff=56487</id>
		<title>AndroidCompile</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=AndroidCompile&amp;diff=56487"/>
		<updated>2018-11-12T10:35:57Z</updated>

		<summary type="html">&lt;p&gt;Dekans: /* Example on Ubuntu */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page is an introduction to the compilation of &#039;&#039;&#039;VLC for Android&#039;&#039;&#039; on Linux. &lt;br /&gt;
&lt;br /&gt;
==Android Studio, SDK and NDK installation==&lt;br /&gt;
&lt;br /&gt;
=== Requirements  ===&lt;br /&gt;
* You &#039;&#039;&#039;MUST&#039;&#039;&#039; build on Linux (or OSX if you know what you are doing).&lt;br /&gt;
* The following packages &#039;&#039;&#039;MUST&#039;&#039;&#039; must be installed:&lt;br /&gt;
** the GNU autotools: &#039;&#039;autoconf&#039;&#039;, &#039;&#039;libtool&#039;&#039;, &#039;&#039;automake&#039;&#039; and &#039;&#039;make&#039;&#039; (a.k.a. &#039;&#039;gmake&#039;&#039;)&lt;br /&gt;
** ...and their dependencies: &#039;&#039;m4&#039;&#039; and &#039;&#039;gawk&#039;&#039;, &#039;&#039;mawk&#039;&#039; or &#039;&#039;nawk&#039;&#039;,&lt;br /&gt;
** the GNU C and C++ compilers a.k.a. &#039;&#039;gcc&#039;&#039; and &#039;&#039;g++&#039;&#039;,&lt;br /&gt;
** some GNU build utilities: &#039;&#039;pkg-config&#039;&#039; and &#039;&#039;patch&#039;&#039;,&lt;br /&gt;
** the following other build utilities: &#039;&#039;Apache Ant&#039;&#039; (or &#039;&#039;Ant&#039;&#039;), &#039;&#039;cmake&#039;&#039;, &#039;&#039;protobuf&#039;&#039;, &#039;&#039;ragel&#039;&#039;,&lt;br /&gt;
** the Subversion and Git version control systems&lt;br /&gt;
** &#039;&#039;unzip&#039;&#039; and either &#039;&#039;curl&#039;&#039; or &#039;&#039;wget&#039;&#039; for retreiving sources.&lt;br /&gt;
* Very recent versions of some of those tools may be required. At the time of writing, notably gettext 0.19.3 or later is required.&lt;br /&gt;
* If any of the above is missing, expect the build to fail at some point.&lt;br /&gt;
* If targeting an Android-x86 device, &#039;&#039;yasm&#039;&#039; must be installed too.&lt;br /&gt;
&lt;br /&gt;
Precise lists of tools dependencies is listed [https://git.videolan.org/?p=vlc.git;a=blob;f=extras/tools/bootstrap;h=e60e5ebf93e69e7bb731e80d0fbc6ebd1226dfdb;hb=HEAD#l73 here].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color: #ff0000&amp;quot;&amp;gt;&#039;&#039;&#039;64-bit users&#039;&#039;&#039;&amp;lt;/span&amp;gt;: You must install these 32-bit libs as specified here: [[AndroidCompile#Can.27t_run_aapt_or_adb_on_Linux_64-bit]]&lt;br /&gt;
&lt;br /&gt;
==== Example on Ubuntu ====&lt;br /&gt;
Install the packages as follow:&lt;br /&gt;
 sudo apt-get install automake ant autopoint cmake build-essential libtool \&lt;br /&gt;
      patch pkg-config protobuf-compiler ragel subversion unzip git \&lt;br /&gt;
     openjdk-8-jre openjdk-8-jdk flex python wget&lt;br /&gt;
&lt;br /&gt;
=== SDK &amp;amp; Android Studio ===&lt;br /&gt;
# Go to [http://developer.android.com/sdk/index.html Android SDK/IDE page].&lt;br /&gt;
# Android Studio is recommended, but not mandatory!&lt;br /&gt;
# Download the command-line tools&lt;br /&gt;
&lt;br /&gt;
 mkdir android-sdk&lt;br /&gt;
 cd android-sdk; unzip tools_r25.2.3-linux.zip&lt;br /&gt;
 ./tools/bin/sdkmanager --update&lt;br /&gt;
&lt;br /&gt;
===Android NDK===&lt;br /&gt;
# Check that the SDK installation is correct. &lt;br /&gt;
# Go to the [https://developer.android.com/ndk/downloads/index.html Android NDK page] and download the &#039;&#039;&#039;NDK r14b&#039;&#039;&#039; for Linux. &lt;br /&gt;
# Decompress it to install&lt;br /&gt;
&lt;br /&gt;
== Environment setup  ==&lt;br /&gt;
Set &#039;&#039;&#039;$ANDROID_SDK&#039;&#039;&#039; to point to your Android SDK directory &lt;br /&gt;
&lt;br /&gt;
 export ANDROID_SDK=/path/to/android-sdk&lt;br /&gt;
&lt;br /&gt;
Set &#039;&#039;&#039;$ANDROID_NDK&#039;&#039;&#039; to point to your Android NDK directory &lt;br /&gt;
&lt;br /&gt;
 export ANDROID_NDK=/path/to/android-ndk&lt;br /&gt;
&lt;br /&gt;
Add some useful binaries to your &#039;&#039;&#039;$PATH&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
 export PATH=$PATH:$ANDROID_SDK/platform-tools:$ANDROID_SDK/tools&lt;br /&gt;
&lt;br /&gt;
== Building ==&lt;br /&gt;
=== Get VLC Source ===&lt;br /&gt;
Clone the source from the VLC git!&lt;br /&gt;
&lt;br /&gt;
In your &#039;&#039;android&#039;&#039; source folder, run: &lt;br /&gt;
&lt;br /&gt;
 git clone https://code.videolan.org/videolan/vlc-android.git&lt;br /&gt;
&lt;br /&gt;
==== Setup Gradle build system ====&lt;br /&gt;
&lt;br /&gt;
Before using Android studio to compile the app, you must run &#039;&#039;&#039;compile.sh&#039;&#039;&#039; once to set up gradle build system.&lt;br /&gt;
&lt;br /&gt;
It should automatically populate mandatory local.properties and gradle.properties files with:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;local.properties&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 sdk.dir=&amp;lt;SDK path from $ANDROID_SDK&amp;gt;&lt;br /&gt;
 ndk.dir=&amp;lt;NDK path from $ANDROID_NDK&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This sets up gradle to build with correct SDK/NDK.&lt;br /&gt;
&lt;br /&gt;
Once this first compilation has succeeded, you can build from Android Studio with the &#039;&#039;&#039;Run&#039;&#039;&#039; command.&lt;br /&gt;
&lt;br /&gt;
=== Devices ===&lt;br /&gt;
&lt;br /&gt;
Find the ABI for the target device.&lt;br /&gt;
&lt;br /&gt;
* For a normal (2012-2015 consumer phone or tablet) device (e.g. Cortex-A8 or Cortex-A9)&lt;br /&gt;
 &amp;lt;code&amp;gt;armeabi-v7a&amp;lt;/code&amp;gt;&lt;br /&gt;
* For a Tegra2 device (no [[wikipedia:ARM_architecture#Advanced_SIMD_.28NEON.29|NEON]])&lt;br /&gt;
 &amp;lt;code&amp;gt;armeabi-v7a&amp;lt;/code&amp;gt;&lt;br /&gt;
* For an ARMv6 device&lt;br /&gt;
 &amp;lt;code&amp;gt;armeabi&amp;lt;/code&amp;gt;&lt;br /&gt;
* For an ARMv6 device that does not support FPU&lt;br /&gt;
 &amp;lt;code&amp;gt;armeabi-nofpu&amp;lt;/code&amp;gt;&lt;br /&gt;
* For an ARMv5 device or the Android Emulator&lt;br /&gt;
 &amp;lt;code&amp;gt;armeabi-v5&amp;lt;/code&amp;gt;&lt;br /&gt;
* For a x86 device (e.g. Android-x86, Google TV, Logitech TV, Android x86 smartphones, etc)&lt;br /&gt;
 &amp;lt;code&amp;gt;x86&amp;lt;/code&amp;gt;&lt;br /&gt;
* For a MIPS device (i.e. Ainol Novo tablets):&lt;br /&gt;
 &amp;lt;code&amp;gt;mips&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This value must be passed to the compile.sh script&lt;br /&gt;
&lt;br /&gt;
==== Compile ====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Read&#039;&#039;&#039; compile.sh first, as it contains some very useful and important information. Then run it:&lt;br /&gt;
 sh compile.sh -a &amp;lt;ABI&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039; At this point, you will get an auto-generated debug APK in the vlc-android/build/outputs/apk folder, signed with a debug key.&lt;br /&gt;
&lt;br /&gt;
In order to build a non-debug (release, and &#039;&#039;&#039;unsigned&#039;&#039;&#039;) package:&lt;br /&gt;
 sh compile.sh release&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039; At this point, you will get an release APK in the same folder.&lt;br /&gt;
&lt;br /&gt;
==== Build LibVLC ====&lt;br /&gt;
&lt;br /&gt;
To build LibVLC, simply pass the -l option:&lt;br /&gt;
  sh compile.sh -l -a &amp;lt;ABI&amp;gt; -r&lt;br /&gt;
&lt;br /&gt;
.aar archive will be located in libvlc/build/outputs/aar/&lt;br /&gt;
&lt;br /&gt;
==== Gradle tweaks ====&lt;br /&gt;
&lt;br /&gt;
To improve gradle execution time, try these options by writing this in gradle.properties in vlc android project.&lt;br /&gt;
Or directly in your ~/.gradle/gradle.properties&lt;br /&gt;
 org.gradle.parallel=true&lt;br /&gt;
 org.gradle.configureondemand=true&lt;br /&gt;
 # If you have a BUNCH of RAM available&lt;br /&gt;
 org.gradle.daemon=true&lt;br /&gt;
 org.gradle.jvmargs=-Xmx2048M&lt;br /&gt;
&lt;br /&gt;
=== Run ===&lt;br /&gt;
Run it and enjoy!&lt;br /&gt;
&lt;br /&gt;
=== Troubleshooting ===&lt;br /&gt;
==== Compilation error on Dependencies ====&lt;br /&gt;
Sometimes, especially when gradle dependencies have been upgraded, the &#039;&#039;compile.sh&#039;&#039; will fail to refetch dependencies. Just close Android Studio and re-run the script to fix this issue.&lt;br /&gt;
&lt;br /&gt;
== Debugging ==&lt;br /&gt;
Here are some helpful links if you wish to debug VLC on Android:&lt;br /&gt;
* [http://developer.android.com/guide/developing/debugging/ddms.html DDMS] &lt;br /&gt;
* [http://developer.android.com/guide/developing/tools/logcat.html Logcat]&lt;br /&gt;
&lt;br /&gt;
===Native debugging===&lt;br /&gt;
If you run VLC Android and you get a crash that looks something like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
I/DEBUG   (  958): *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***&lt;br /&gt;
I/DEBUG   (  958): Build fingerprint: &#039;MOTO/MBTCA/sesame/XT300:2.1-update1/SESLA_U3_01.71.0/110110:user/release-keys&#039;&lt;br /&gt;
I/DEBUG   (  958): pid: 1733, tid: 1733 &amp;gt;&amp;gt;&amp;gt; org.videolan.vlc &amp;lt;&amp;lt;&amp;lt;&lt;br /&gt;
I/DEBUG   (  958): signal 11 (SIGSEGV), fault addr 4237be3c&lt;br /&gt;
I/DEBUG   (  958):  r0 423640a0  r1 7ece77ac  r2 42bccdac  r3 4237be38&lt;br /&gt;
I/DEBUG   (  958):  r4 00000000  r5 42bccdac  r6 002ed088  r7 002ed018&lt;br /&gt;
I/DEBUG   (  958):  r8 7ece78e8  r9 2bafa844  10 0000000e  fp 7ece794c&lt;br /&gt;
I/DEBUG   (  958):  ip 00002ba0  sp 7ece7784  lr 423652e4  pc 4237be3c  cpsr 60000010&lt;br /&gt;
I/DEBUG   (  958):          #00  pc 0037be3c  /data/data/org.videolan.vlc/lib/libvlcjni.so&lt;br /&gt;
I/DEBUG   (  958):          #01  lr 423652e4  /data/data/org.videolan.vlc/lib/libvlcjni.so&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You have a &#039;&#039;&#039;native crash&#039;&#039;&#039;. To debug it, you need to have compiled VLC as above and installed it on your device. Once your compiled VLC build is on your device, you can find the &#039;&#039;&#039;backtrace&#039;&#039;&#039; as follows:&lt;br /&gt;
&lt;br /&gt;
# Make sure you are in the directory that you checked out VLC-Android in.&lt;br /&gt;
# Migrate the libvlc folders. (Do this every time the code is recompiled)&lt;br /&gt;
## cp -r libvlc/jni vlc-android&lt;br /&gt;
## cp -r libvlc/libs vlc-android&lt;br /&gt;
## cp -r libvlc/obj vlc-android&lt;br /&gt;
## (This is because the libvlc and VLC for Android folders were split yet the debugger needs the object files from both.)&lt;br /&gt;
# cd vlc-android&lt;br /&gt;
# $ANDROID_NDK/ndk-gdb --verbose --force --start&lt;br /&gt;
At this point, lots of stuff will appear:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Android NDK installation path: /opt/android-ndk-r8c&lt;br /&gt;
Using default adb command: /opt/android-sdk-linux_x86/platform-tools/adb&lt;br /&gt;
ADB version found: Android Debug Bridge version 1.0.29&lt;br /&gt;
Using ADB flags: &lt;br /&gt;
Using auto-detected project path: .&lt;br /&gt;
Found package name: org.videolan.vlc&lt;br /&gt;
...bunch of stuff skipped...&lt;br /&gt;
GNU gdb (GDB) 7.3.1-gg2&lt;br /&gt;
Copyright (C) 2011 Free Software Foundation, Inc.&lt;br /&gt;
License GPLv3+: GNU GPL version 3 or later &amp;lt;http://gnu.org/licenses/gpl.html&amp;gt;&lt;br /&gt;
This is free software: you are free to change and redistribute it.&lt;br /&gt;
There is NO WARRANTY, to the extent permitted by law.  Type &amp;quot;show copying&amp;quot;&lt;br /&gt;
and &amp;quot;show warranty&amp;quot; for details.&lt;br /&gt;
This GDB was configured as &amp;quot;--host=x86_64-linux-gnu --target=arm-linux-android&amp;quot;.&lt;br /&gt;
For bug reporting instructions, please see:&lt;br /&gt;
&amp;lt;http://www.gnu.org/software/gdb/bugs/&amp;gt;.&lt;br /&gt;
Remote debugging from host 0.0.0.0&lt;br /&gt;
...bunch of stuff skipped...&lt;br /&gt;
libthread_db:td_ta_new: Victory: We can debug theads!&lt;br /&gt;
warning: Breakpoint address adjusted from 0x400deaa5 to 0x400deaa4.&lt;br /&gt;
0x40107a40 in epoll_wait () from /media/data/vlc_android/vlc-android/obj/local/armeabi/libc.so&lt;br /&gt;
(gdb)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;ol start=&amp;quot;4&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;At this point, type in &amp;quot;continue&amp;quot; and press Enter.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Perform the actions you did to make it crash. It will spit out something like this:&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Program received signal SIGSEGV, Segmentation fault.&lt;br /&gt;
0x401120ae in ?? () from /media/data/vlc_android/vlc-android/obj/local/armeabi/libc.so&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;ol start=&amp;quot;6&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Now, just type in &amp;quot;&#039;&#039;&#039;bt full&#039;&#039;&#039;&amp;quot; (excluding the quotation marks) and press Enter. That is your backtrace that you should give to the developers when they ask for it (possibly on a [http://paste.kde.org/ pastebin], too).&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
(gdb) bt full&lt;br /&gt;
#0  0x401120ae in ?? () from /media/data/vlc_android/vlc-android/obj/local/armeabi/libc.so&lt;br /&gt;
No symbol table info available.&lt;br /&gt;
#1  0x40107bd8 in abort () from /media/data/vlc_android/vlc-android/obj/local/armeabi/libc.so&lt;br /&gt;
No symbol table info available.&lt;br /&gt;
#2  0x40118e6a in __assert2 () from /media/data/vlc_android/vlc-android/obj/local/armeabi/libc.so&lt;br /&gt;
No symbol table info available.&lt;br /&gt;
#3  0x5e0cdfdc in var_SetChecked (p_this=0x40134b94, psz_name=0x5ea2fcb8 &amp;quot;rate&amp;quot;, expected_type=80, val=...) at ../../src/misc/variables.c:711&lt;br /&gt;
        i_ret = 0&lt;br /&gt;
        p_var = &amp;lt;optimized out&amp;gt;&lt;br /&gt;
        oldval = {i_int = 4742037487051810480, b_bool = 176, f_float = 2.27765068e+14, psz_string = 0x574f26b0 &amp;quot;X\270|B\001\001&amp;quot;, p_address = 0x574f26b0, &lt;br /&gt;
          p_object = 0x574f26b0, p_list = 0x574f26b0, i_time = 4742037487051810480, coords = {x = 1464805040, y = 1104091640}}&lt;br /&gt;
        __func__ = &amp;quot;var_SetChecked&amp;quot;&lt;br /&gt;
        p_priv = &amp;lt;optimized out&amp;gt;&lt;br /&gt;
#4  0x5e06dd9c in var_SetFloat (f=1.41421354, psz_name=0x5ea2fcb8 &amp;quot;rate____sample_backtrace&amp;quot;, p_obj=0x0) at ../../include/vlc_variables.h:262&lt;br /&gt;
        val = &amp;lt;optimized out&amp;gt;&lt;br /&gt;
#5  libvlc_media_player_set_rate (p_mi=0x0, rate=1.41421354) at ../../lib/media_player.c:1252&lt;br /&gt;
        p_input_thread = &amp;lt;optimized out&amp;gt;&lt;br /&gt;
#6  0x5de7bd18 in Java_org_videolan_vlc_LibVLC_setRate (env=0x41cf0470, thiz=0x8ab00021, rate=1.41421354) at jni/libvlcjni.c:678&lt;br /&gt;
        mp = 0x0&lt;br /&gt;
#7  0x4076de34 in ?? ()&lt;br /&gt;
No symbol table info available.&lt;br /&gt;
#8  0x4076de34 in ?? ()&lt;br /&gt;
No symbol table info available.&lt;br /&gt;
Backtrace stopped: previous frame identical to this frame (corrupt stack?)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Troubleshooting ==&lt;br /&gt;
=== Outdated Awk ===&lt;br /&gt;
If you receive the error message while building:&lt;br /&gt;
&lt;br /&gt;
 Android NDK: Host &#039;awk&#039; tool is outdated. Please define HOST_AWK to point to Gawk or Nawk !    &lt;br /&gt;
&lt;br /&gt;
The prebuilt version of Awk that comes with the Android NDK is outdated. Defining HOST_AWK in your environment does nothing as the system still tries to just the one that comes with the Android NDK. To get around this issue, simply rename or delete the Awk binary that comes with the Android NDK. For example to move it:&lt;br /&gt;
&lt;br /&gt;
 mv $ANDROID_NDK/prebuilt/linux-x86/bin/awk $ANDROID_NDK/prebuilt/linux-x86/bin/awk.old&lt;br /&gt;
&lt;br /&gt;
=== Can&#039;t find Ant ===&lt;br /&gt;
If you&#039;re new to Ant, please be aware that some Linux distributions don&#039;t install it in the usual spot as with other programs. Try checking to see if the directory /usr/share/java/apache-ant/bin exists and add it to your path.&lt;br /&gt;
&lt;br /&gt;
===Outdated autotools-dev===&lt;br /&gt;
If you get the following error message you may have have an outdated version of autotools-dev:&lt;br /&gt;
  Invalid configuration `arm-linux-androideabi&#039;: system `androideabi&#039; not recognized&lt;br /&gt;
You may first want to check if your distribution has any available updates for this package.  Alternatively, you can manually update your config.guess and config.sub files from here: [http://git.savannah.gnu.org/gitweb/?p=config.git;a=tree].  These files are typically located in /usr/share/misc on Debian based distributions.&lt;br /&gt;
&lt;br /&gt;
===autoreconf: automake failed with exit status: 1===&lt;br /&gt;
 automake: warnings are treated as errors&lt;br /&gt;
 configure.ac:41: warning: The &#039;AM_PROG_MKDIR_P&#039; macro is deprecated, and will soon be removed.&lt;br /&gt;
 configure.ac:41: You should use the Autoconf-provided &#039;AC_PROG_MKDIR_P&#039; macro instead,&lt;br /&gt;
 configure.ac:41: and use &#039;$(MKDIR_P)&#039; instead of &#039;$(mkdir_p)&#039;in your Makefile.am files.&lt;br /&gt;
&lt;br /&gt;
If you are using Automake 1.13 or higher, you must remove -Werror from vlc/contrib/android/gnutls/configure.ac to continue. (First reported in [http://forum.videolan.org/viewtopic.php?f=35&amp;amp;t=108927])&lt;br /&gt;
&lt;br /&gt;
===autoreconf: automake failed with exit status: 1 ===&lt;br /&gt;
 make: *** [dvdnav] Error 1&lt;br /&gt;
 ...&lt;br /&gt;
 ... error: possibly undefined macro: AM_PROG_LIBTOOL&lt;br /&gt;
&lt;br /&gt;
This error may occur when compiling with an older Linux distribution, such as Ubuntu 12.04, that doesn&#039;t meet bootstrap prerequisites. As of 2014-08-09, the master branch for vlc-ports/android.git [http://git.videolan.org/?p=vlc-ports/android.git;a=summary] lacks patch 5199 [https://patches.videolan.org/patch/5199/]. Without the patch, compile.sh builds out dated automake and autoconf that may not access libtool despite presence of a current libtool binary amongst supporting tools and a similar or more recent binary present as part of the OS.&lt;br /&gt;
&lt;br /&gt;
To work around this error, patch the master branch or update the prerequisites. For Ubuntu 12.04, upgrade autoconf, automake, and cmake as dictated by vlc/extras/tools/bootstrap.&lt;br /&gt;
&lt;br /&gt;
===Can&#039;t run aapt or adb on Linux 64-bit===&lt;br /&gt;
You must install the 32-bit libraries of the following libraries, as the precompiled Google binaries depend on them: &#039;&#039;libc6&#039;&#039;, &#039;&#039;libstdc++6&#039;&#039;, and &#039;&#039;zlib&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
New versions of Debian and/or Ubuntu require you to install i386 versions of packages:&lt;br /&gt;
 sudo dpkg --add-architecture i386&lt;br /&gt;
 sudo apt-get update&lt;br /&gt;
 sudo apt-get install zlib1g:i386 libstdc++6:i386 libc6:i386&lt;br /&gt;
&lt;br /&gt;
If you are under &#039;&#039;old versions&#039;&#039; of Ubuntu, install ia32-libs can help you solve this issue.&lt;br /&gt;
 sudo apt-get install ia32-libs&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
* [[Android Report bugs]] - Bug reporting guide for VLC-Android.&lt;br /&gt;
&lt;br /&gt;
[[Category:Building]] [[Category:Android]]&lt;/div&gt;</summary>
		<author><name>Dekans</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=Documentation:Android&amp;diff=56385</id>
		<title>Documentation:Android</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=Documentation:Android&amp;diff=56385"/>
		<updated>2018-04-06T14:25:33Z</updated>

		<summary type="html">&lt;p&gt;Dekans: /* Feature Overview */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;big&amp;gt;------ Work in progress ------&amp;lt;/big&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Here is the documentation of the Android port of VLC media player.&lt;br /&gt;
&lt;br /&gt;
== Preliminary Notes ==&lt;br /&gt;
VLC for Android is a little different from VLC on desktops. In some ways, you can do more; in other ways, you can do less. VLC for Android only does media playback. Active streaming or file / stream to file conversations are not supported for usability and performance reasons. This walk-through does only include screenshots of a phone interface for size reasons. However, all features are also available on tablets with a similar appearance.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
== Feature Overview ==&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; class=&amp;quot;wikitable&amp;quot; style=&amp;quot;border: 1px solid dark green; text-align: center; width: 100%; margin: 1em auto 1em auto&amp;quot;&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;150px&amp;quot; | Feature&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;100px&amp;quot; | Version 1.0&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;100px&amp;quot; | Version 1.6&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;100px&amp;quot; | Version 2.0&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;100px&amp;quot; | Version 2.5&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;100px&amp;quot; | Version 3.0&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;100px&amp;quot; | Version 3.1&lt;br /&gt;
|-&lt;br /&gt;
| Opening Network Streams || {{No}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}}&lt;br /&gt;
|-&lt;br /&gt;
| UPnP discovery and streaming || {{No}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}}&lt;br /&gt;
|-&lt;br /&gt;
| Plex server discovery and streaming || {{No}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}}&lt;br /&gt;
|-&lt;br /&gt;
| Password-protected Plex shares || {{No}} || {{No}} || {{No}} || {{No}} || {{No}} || {{No}}&lt;br /&gt;
|-&lt;br /&gt;
| Downloads from UPnP multimedia servers || {{No}} || {{No}} || {{No}} || {{No}} || {{No}} || {{No}}&lt;br /&gt;
|-&lt;br /&gt;
| FTP discovery, streaming || {{No}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}}&lt;br /&gt;
|-&lt;br /&gt;
| Store FTP server bookmarks || {{No}} || {{No}} || {{No}} || {{Yes}} || {{Yes}} || {{Yes}}&lt;br /&gt;
|-&lt;br /&gt;
| Audio Playback via Connector Cables || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}}&lt;br /&gt;
|-&lt;br /&gt;
| Video Playback via Connector Cables || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}}&lt;br /&gt;
|-&lt;br /&gt;
| Subtitles playback || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}}&lt;br /&gt;
|-&lt;br /&gt;
| Subtitles Font Customization || {{No}} || {{No}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}}&lt;br /&gt;
|-&lt;br /&gt;
| Closed Caption playback || {{Yes}} || {{Yes}} || {{Yes}}  || {{Yes}} || {{Yes}} || {{Yes}}&lt;br /&gt;
|-&lt;br /&gt;
| Teletext subtitles playback || {{No}} || {{No}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}}&lt;br /&gt;
|-&lt;br /&gt;
| Multi-track audio handling || {{No}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}}&lt;br /&gt;
|-&lt;br /&gt;
| Video Filtering incl. Screen Brightness || {{No}} || {{No}} || {{No}} || {{No}} || {{No}} || {{No}}&lt;br /&gt;
|-&lt;br /&gt;
| Video Cropping and Aspect Ratio variation || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}}&lt;br /&gt;
|-&lt;br /&gt;
| Deinterlacing || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}}&lt;br /&gt;
|-&lt;br /&gt;
| Playback Speed control || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}}&lt;br /&gt;
|-&lt;br /&gt;
| Audio/Subtitles delay control || {{No}} || {{No}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}}&lt;br /&gt;
|-&lt;br /&gt;
| Repeated playback || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}}&lt;br /&gt;
|-&lt;br /&gt;
| Gestures based playback control || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}}&lt;br /&gt;
|-&lt;br /&gt;
| Playback of Audio-only media (mp3, m4a, flac, …) || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}}&lt;br /&gt;
|-&lt;br /&gt;
| Audio Playback in Background || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}}&lt;br /&gt;
|-&lt;br /&gt;
| Video Playback in Background || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}}&lt;br /&gt;
|-&lt;br /&gt;
| Playback timer || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}}&lt;br /&gt;
|-&lt;br /&gt;
| Chapter &amp;amp; title selection || {{No}} || {{No}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}}&lt;br /&gt;
|-&lt;br /&gt;
| 10-band equalizer || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}}&lt;br /&gt;
|-&lt;br /&gt;
| Playback UI Lock || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}}&lt;br /&gt;
|-&lt;br /&gt;
| Smart Media Library sorting for audio albums and TV shows || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}}&lt;br /&gt;
|-&lt;br /&gt;
| Media Library Search || {{No}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}}&lt;br /&gt;
|-&lt;br /&gt;
| Passcode Lock || {{No}} || {{No}} || {{No}} || {{No}} || {{No}} || {{No}}&lt;br /&gt;
|-&lt;br /&gt;
| Voice search support || {{No}} || {{No}} || {{No}} || {{Yes}} || {{Yes}} || {{Yes}}&lt;br /&gt;
|-&lt;br /&gt;
| Voice actions support || {{No}} || {{No}} || {{No}} || {{No}} || {{No}} || {{No}}&lt;br /&gt;
|-&lt;br /&gt;
| Organize media in folders || {{No}} || {{No}} || {{No}} || {{No}} || {{No}} || {{No}}&lt;br /&gt;
|-&lt;br /&gt;
| Use folders as playlists || {{No}} || {{No}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}}&lt;br /&gt;
|-&lt;br /&gt;
| Loop playlists || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}}&lt;br /&gt;
|-&lt;br /&gt;
| Playback control through headphones or lock screen || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}}&lt;br /&gt;
|-&lt;br /&gt;
| Mediasession support (Wear, TV, etc…) || {{No}} || {{No}} || {{Partial}} || {{Yes}} || {{Yes}} || {{Yes}}&lt;br /&gt;
|-&lt;br /&gt;
| Playback is paused when headphones are unplugged || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}}&lt;br /&gt;
|-&lt;br /&gt;
| WiFi upload and HTTP downloads in background || {{No}} || {{No}} || {{No}} || {{No}} || {{No}} || {{No}}&lt;br /&gt;
|-&lt;br /&gt;
| Support for password protected HTTP streams || {{No}} || {{No}} || {{No}} || {{No}} || {{No}} || {{No}}&lt;br /&gt;
|-&lt;br /&gt;
| Sharing files with further apps || {{No}} || {{No}} || {{No}} || {{No}} || {{No}} || {{No}}&lt;br /&gt;
|-&lt;br /&gt;
| Custom vlc:// protocol || {{No}} || {{No}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}}&lt;br /&gt;
|-&lt;br /&gt;
| Support for x-callback-url || {{No}} || {{No}} || {{No}} || {{No}} || {{No}} || {{Yes}}&lt;br /&gt;
|-&lt;br /&gt;
| Action mode || {{No}} || {{No}} || {{No}} || {{Yes}} || {{Yes}} || {{Yes}}&lt;br /&gt;
|-&lt;br /&gt;
| Android TV || {{No}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}}&lt;br /&gt;
|-&lt;br /&gt;
| Picture-in-Picture || {{No}} || {{No}} || {{Partial}} || {{Yes}} || {{Yes}} || {{Yes}}&lt;br /&gt;
|-&lt;br /&gt;
| ChromeOS support || {{No}} || {{ARC}} || {{ARC}} || {{Yes}} || {{Yes}} || {{Yes}}&lt;br /&gt;
|-&lt;br /&gt;
| Android Auto || {{No}} || {{No}} || {{No}} || {{Yes}} || {{No}} || {{Yes}}&lt;br /&gt;
|-&lt;br /&gt;
| Sorting || {{No}} || {{No}} || {{Partial}} || {{Yes}} || {{Yes}} || {{Yes}}&lt;br /&gt;
|-&lt;br /&gt;
| 360° videos || {{No}} || {{No}} || {{No}} || {{Yes}} || {{Yes}} || {{Yes}}&lt;br /&gt;
|-&lt;br /&gt;
| DayNight mode || {{No}} || {{No}} || {{No}} || {{Yes}} || {{Yes}} || {{Yes}}&lt;br /&gt;
|-&lt;br /&gt;
| Chromecast || {{No}} || {{No}} || {{No}} || {{No}} || {{Yes}} || {{Yes}}&lt;br /&gt;
|-&lt;br /&gt;
| Equalizer custom presets || {{No}} || {{No}} || {{No}} || {{No}} || {{Yes}} || {{Yes}}&lt;br /&gt;
|-&lt;br /&gt;
| Audio boost || {{No}} || {{No}} || {{No}} || {{No}} || {{Yes}} || {{Yes}}&lt;br /&gt;
|-&lt;br /&gt;
| Android 2.1 support || {{Yes}} || {{Yes}} || {{No}} || {{No}} || {{No}} || {{No}}&lt;br /&gt;
|-&lt;br /&gt;
| Android 2.2 support || {{Yes}} || {{Yes}} || {{Yes}} || {{No}} || {{No}} || {{No}}&lt;br /&gt;
|-&lt;br /&gt;
| Android 2.3 support || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || {{No}}&lt;br /&gt;
|-&lt;br /&gt;
| Android 6 (Runtime permissions) || {{No}} || {{No}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}}&lt;br /&gt;
|-&lt;br /&gt;
| Android 8 support || {{No}} || {{No}} || {{No}}  || {{Partial}} || {{Partial}} || {{Yes}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
There are many ways to install VLC on Android. This may be because you have a non-ARMv7 or x86 processor or do not wish to use the Play Store for whatever reason.&lt;br /&gt;
&lt;br /&gt;
=== From the Play Store (recommended) ===&lt;br /&gt;
The normal way, for ARMv7 (and above) and x86 processors only. Don&#039;t know your processor? Don&#039;t worry, if you can download it, you have a compatible ARMv7 or an x86 processor.&lt;br /&gt;
&lt;br /&gt;
: https://play.google.com/store/apps/details?id=org.videolan.vlc&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== From the F-Droid Repository ===&lt;br /&gt;
The F-Droid repository (https://f-droid.org) is a completely FOSS (Free and Open Source Software) equivalent to the Google Play Store. The F-Droid Repository and all apps within it are provided completely free of charge and licensed under open source licenses. The F-Droid repository can be downloaded directly from their website. The &amp;quot;Unknown Sources&amp;quot; setting must be turned on for Android devices (typically located in Settings -&amp;gt; Security) in order to install repositories other than the Google Play Store.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== From VideoLAN ===&lt;br /&gt;
If you can&#039;t download from the Play Store or just want to install the VLC .apk by yourself, follow these steps:&lt;br /&gt;
&lt;br /&gt;
# Go to Android Settings → Security → Device Administration → Enable &#039;Unknown Sources&#039;&lt;br /&gt;
# Go to our download server, preferably from your device: http://get.videolan.org/vlc-android/{{Android:latest version}}/&lt;br /&gt;
# Choose your processor architecture (ARMv7 or Intel x86) and grab the .apk file.&lt;br /&gt;
# Click on the .apk you just downloaded and install it.&lt;br /&gt;
&lt;br /&gt;
Don&#039;t really know your processor architecture? Try both... it&#039;s not very clever, but it&#039;s harmless.&lt;br /&gt;
&lt;br /&gt;
None of the two work? It is possible that you have an older processor with the ARMv6 architecture. The solution for now is to install a Nightly Build release. See below.&lt;br /&gt;
&lt;br /&gt;
Still doesn&#039;t work? Really? Well, then you must have an exotic processor... Contact us, on the [http://forum.videolan.org/viewforum.php?f=35 Android forum] or directly at [mailto:videolan.mobile@gmail.com videolan.mobile@gmail.com].&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Be a Beta tester or try a Beta release ===&lt;br /&gt;
You want want to know the future of VLC for Android?&lt;br /&gt;
You want to help us and/or test if your issue is already fixed for the next release ?&lt;br /&gt;
&lt;br /&gt;
==== Be a Beta tester ====&lt;br /&gt;
&lt;br /&gt;
Just follow this link [https://play.google.com/apps/testing/org.videolan.vlc Be a Beta tester]&lt;br /&gt;
&lt;br /&gt;
Soon, Beta release will automatically install on our device.&lt;br /&gt;
&lt;br /&gt;
==== Try a Beta release ====&lt;br /&gt;
You don&#039;t want to be a Beta Tester but just try a Beta ? Follow these steps :&lt;br /&gt;
&lt;br /&gt;
# Go to Android Settings → Security → Device Administration → Enable &#039;Unknown Sources&#039;&lt;br /&gt;
# Go to our server, preferably from your device, : http://get.videolan.org/testing/android/{{Android:latest beta version}}/&lt;br /&gt;
# Choose your processor architecture (ARMv7, ARMv8, x86...) &amp;lt;br /&amp;gt; Don&#039;t really know your processor architecture? Try both... it&#039;s not very clever, but it&#039;s harmless&lt;br /&gt;
# Download the chosen .apk on your device&lt;br /&gt;
# Click on the .apk you just download and install it.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Install a Nightly Build ===&lt;br /&gt;
You fear nothing and want our very last works on VLC ? Or you have an ARMv6 Processor and want VLC? Follow these steps:&lt;br /&gt;
&lt;br /&gt;
# Go to Android Settings → Security → Device Administration → Enable &#039;Unknown Sources&#039;&lt;br /&gt;
# Go to our server, preferably from your device: http://nightlies.videolan.org/&lt;br /&gt;
# Choose your processor architecture (ARMv7, ARMv8, x86...)&lt;br /&gt;
# Grab the latest .apk&lt;br /&gt;
# Click on the .apk you just download and install it.&lt;br /&gt;
&lt;br /&gt;
You may experience some weird issues but generally, it works fine. If not, please try an older nightly release, and contact us.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Interface==&lt;br /&gt;
At first start, VLC scans all your device to find all your media files. This is the main interface after the scan :&lt;br /&gt;
&lt;br /&gt;
{|style=&amp;quot;width: 50%;&amp;quot;|&lt;br /&gt;
|[[File:Android_Main.jpg|550x550px]]&lt;br /&gt;
|style=&amp;quot;vertical-align:top;width: 25%;&amp;quot;|&lt;br /&gt;
{|&lt;br /&gt;
|[[File:caption_1.png|40x40px]] || Show Menu &lt;br /&gt;
|-&lt;br /&gt;
|[[File:caption_2.png|40x40px]] || Video view&lt;br /&gt;
|-&lt;br /&gt;
|[[File:caption_3.png|40x40px]] || Audio view&lt;br /&gt;
|-&lt;br /&gt;
|[[File:caption_4.png|40x40px]] || Directory view&lt;br /&gt;
|-&lt;br /&gt;
|[[File:caption_5.png|40x40px]] || History view&lt;br /&gt;
|}&lt;br /&gt;
|style=&amp;quot;vertical-align:top;width: 25%;&amp;quot;|&lt;br /&gt;
{|&lt;br /&gt;
| [[File:caption_6.png|40x40px]] || Video browser view&lt;br /&gt;
|-&lt;br /&gt;
| [[File:caption_7.png|40x40px]] || Search a specific media&lt;br /&gt;
|-&lt;br /&gt;
| [[File:caption_8.png|40x40px]] || Open network MRL&lt;br /&gt;
|-&lt;br /&gt;
| [[File:caption_9.png|40x40px]] || Load last playlist&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;vertical-align:top;&amp;quot;|[[File:caption_10.png|40x40px]]&lt;br /&gt;
| More actions :&amp;lt;br&amp;gt;&lt;br /&gt;
* Sort by name or length&amp;lt;br&amp;gt;&lt;br /&gt;
* Refresh your media library&amp;lt;br&amp;gt;&lt;br /&gt;
* Equalizer&amp;lt;br&amp;gt;&lt;br /&gt;
* Preferences&amp;lt;br&amp;gt;&lt;br /&gt;
* About VLC&amp;lt;br&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Playing Video==&lt;br /&gt;
===Video browser view===&lt;br /&gt;
This view displays all your videos present in your device, or in the directories you have specified (see Preferences). To play one, just click on it, like the video [[File:caption_1.png|30x30px]].&lt;br /&gt;
&lt;br /&gt;
Note the difference with the video [[File:caption_2.png|30x30px]] which is a group of videos : VLC automatically groups your videos with the 4 same starting letters.&lt;br /&gt;
&lt;br /&gt;
{|style=&amp;quot;width: 50%;&amp;quot;|&lt;br /&gt;
|[[File:Android VideoBrowser.jpg|550x550px]]&lt;br /&gt;
|style=&amp;quot;vertical-align:top;width: 25%;&amp;quot;|&lt;br /&gt;
{|&lt;br /&gt;
|[[File:caption_1.png|40x40px]] || A Video&lt;br /&gt;
|-&lt;br /&gt;
|[[File:caption_2.png|40x40px]] || A group of videos.&lt;br /&gt;
|}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Video playback interface ===&lt;br /&gt;
&lt;br /&gt;
{|style=&amp;quot;width: 50%;&amp;quot;|&lt;br /&gt;
|[[File:Android_VideoPlayer_Interface.jpg|550x550px]]&lt;br /&gt;
|style=&amp;quot;vertical-align:top;width: 25%;&amp;quot;|&lt;br /&gt;
{|&lt;br /&gt;
|[[File:caption_1.png|40x40px]] || Video title&lt;br /&gt;
|-&lt;br /&gt;
|[[File:caption_2.png|40x40px]] || Battery and time&lt;br /&gt;
|-&lt;br /&gt;
|[[File:caption_3.png|40x40px]] || Play / Pause&lt;br /&gt;
|-&lt;br /&gt;
|[[File:caption_4.png|40x40px]] || Aspect ratio&lt;br /&gt;
|-&lt;br /&gt;
|[[File:caption_5.png|40x40px]] || Audio tracks&lt;br /&gt;
|-&lt;br /&gt;
|[[File:caption_6.png|40x40px]] || Subtitles tracks&lt;br /&gt;
|}&lt;br /&gt;
|style=&amp;quot;vertical-align:top;width: 25%;&amp;quot;|&lt;br /&gt;
{|&lt;br /&gt;
| [[File:caption_7.png|40x40px]] || Video menu (for DVD iso)&lt;br /&gt;
|-&lt;br /&gt;
| [[File:caption_8.png|40x40px]] || Lock screen&lt;br /&gt;
|-&lt;br /&gt;
| [[File:caption_9.png|40x40px]] || Elapsed time&lt;br /&gt;
|-&lt;br /&gt;
| [[File:caption_10.png|40x40px]] || Seek bar&lt;br /&gt;
|-&lt;br /&gt;
| [[File:caption_11.png|40x40px]] || Total time / Remaining time&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;vertical-align:top;&amp;quot;| [[File:caption_12.png|40x40px]] || Advanced Options&lt;br /&gt;
* Playback Speed&lt;br /&gt;
* Sleep timer&lt;br /&gt;
* Jump to specific time&lt;br /&gt;
* Add subtitle&lt;br /&gt;
|}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Some precisions:&lt;br /&gt;
* You can change audio and/or subtitle track if there are any. If not, these icons won&#039;t be displayed.&lt;br /&gt;
* The Video Menu icon is only displayed for iso video (a DVD iso for example)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Video playback gesture ===&lt;br /&gt;
&lt;br /&gt;
{|style=&amp;quot;width: 50%;&amp;quot;|&lt;br /&gt;
|[[File:Android_VideoPlayer_Gesture.jpg|550x550px]]&lt;br /&gt;
|style=&amp;quot;vertical-align:top;width: 25%;&amp;quot;|&lt;br /&gt;
{|&lt;br /&gt;
|[[File:caption_1.png|40x40px]] || Adjust Brightness&lt;br /&gt;
|-&lt;br /&gt;
|[[File:caption_2.png|40x40px]] || Adjust Volume&lt;br /&gt;
|-&lt;br /&gt;
|[[File:caption_3.png|40x40px]] || Quick search&lt;br /&gt;
|}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Playing Audio ==&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
* You can change the time display to remaining time (e.g. -1:30 for 1:30 minutes remaining) in the audio player by tapping on the current time label in the left.&lt;br /&gt;
&lt;br /&gt;
== Settings ==&lt;br /&gt;
&lt;br /&gt;
== See Also ==&lt;br /&gt;
&lt;br /&gt;
[[AndroidFAQ]] &amp;lt;br /&amp;gt;&lt;br /&gt;
[[Android Checklist]] &amp;lt;br /&amp;gt;&lt;br /&gt;
[[Android Player Intents]] &amp;lt;br /&amp;gt;&lt;br /&gt;
[[Android Report bugs]] &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Mobile documentation]]&lt;br /&gt;
[[Category:Android]]&lt;/div&gt;</summary>
		<author><name>Dekans</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=Documentation:Android&amp;diff=56384</id>
		<title>Documentation:Android</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=Documentation:Android&amp;diff=56384"/>
		<updated>2018-04-06T14:23:37Z</updated>

		<summary type="html">&lt;p&gt;Dekans: /* Feature Overview */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;big&amp;gt;------ Work in progress ------&amp;lt;/big&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Here is the documentation of the Android port of VLC media player.&lt;br /&gt;
&lt;br /&gt;
== Preliminary Notes ==&lt;br /&gt;
VLC for Android is a little different from VLC on desktops. In some ways, you can do more; in other ways, you can do less. VLC for Android only does media playback. Active streaming or file / stream to file conversations are not supported for usability and performance reasons. This walk-through does only include screenshots of a phone interface for size reasons. However, all features are also available on tablets with a similar appearance.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
== Feature Overview ==&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; class=&amp;quot;wikitable&amp;quot; style=&amp;quot;border: 1px solid dark green; text-align: center; width: 100%; margin: 1em auto 1em auto&amp;quot;&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;150px&amp;quot; | Feature&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;100px&amp;quot; | Version 1.0&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;100px&amp;quot; | Version 1.6&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;100px&amp;quot; | Version 2.0&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;100px&amp;quot; | Version 2.5&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;100px&amp;quot; | Version 3.0&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;100px&amp;quot; | Version 3.1&lt;br /&gt;
|-&lt;br /&gt;
| Opening Network Streams || {{No}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}}&lt;br /&gt;
|-&lt;br /&gt;
| UPnP discovery and streaming || {{No}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}}&lt;br /&gt;
|-&lt;br /&gt;
| Plex server discovery and streaming || {{No}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}}&lt;br /&gt;
|-&lt;br /&gt;
| Password-protected Plex shares || {{No}} || {{No}} || {{No}} || {{No}} || {{No}} || {{No}}&lt;br /&gt;
|-&lt;br /&gt;
| Downloads from UPnP multimedia servers || {{No}} || {{No}} || {{No}} || {{No}} || {{No}} || {{No}}&lt;br /&gt;
|-&lt;br /&gt;
| FTP discovery, streaming || {{No}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}}&lt;br /&gt;
|-&lt;br /&gt;
| Store FTP server bookmarks || {{No}} || {{No}} || {{No}} || {{Yes}} || {{Yes}} || {{Yes}}&lt;br /&gt;
|-&lt;br /&gt;
| Audio Playback via Connector Cables || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}}&lt;br /&gt;
|-&lt;br /&gt;
| Video Playback via Connector Cables || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}}&lt;br /&gt;
|-&lt;br /&gt;
| Subtitles playback || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}}&lt;br /&gt;
|-&lt;br /&gt;
| Subtitles Font Customization || {{No}} || {{No}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}}&lt;br /&gt;
|-&lt;br /&gt;
| Closed Caption playback || {{Yes}} || {{Yes}} || {{Yes}}  || {{Yes}} || {{Yes}} || {{Yes}}&lt;br /&gt;
|-&lt;br /&gt;
| Teletext subtitles playback || {{No}} || {{No}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}}&lt;br /&gt;
|-&lt;br /&gt;
| Multi-track audio handling || {{No}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}}&lt;br /&gt;
|-&lt;br /&gt;
| Video Filtering incl. Screen Brightness || {{No}} || {{No}} || {{No}} || {{No}} || {{No}} || {{No}}&lt;br /&gt;
|-&lt;br /&gt;
| Video Cropping and Aspect Ratio variation || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}}&lt;br /&gt;
|-&lt;br /&gt;
| Deinterlacing || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}}&lt;br /&gt;
|-&lt;br /&gt;
| Playback Speed control || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}}&lt;br /&gt;
|-&lt;br /&gt;
| Audio/Subtitles delay control || {{No}} || {{No}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}}&lt;br /&gt;
|-&lt;br /&gt;
| Repeated playback || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}}&lt;br /&gt;
|-&lt;br /&gt;
| Gestures based playback control || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}}&lt;br /&gt;
|-&lt;br /&gt;
| Playback of Audio-only media (mp3, m4a, flac, …) || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}}&lt;br /&gt;
|-&lt;br /&gt;
| Audio Playback in Background || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}}&lt;br /&gt;
|-&lt;br /&gt;
| Video Playback in Background || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}}&lt;br /&gt;
|-&lt;br /&gt;
| Playback timer || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}}&lt;br /&gt;
|-&lt;br /&gt;
| Chapter &amp;amp; title selection || {{No}} || {{No}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}}&lt;br /&gt;
|-&lt;br /&gt;
| 10-band equalizer || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}}&lt;br /&gt;
|-&lt;br /&gt;
| Playback UI Lock || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}}&lt;br /&gt;
|-&lt;br /&gt;
| Smart Media Library sorting for audio albums and TV shows || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}}&lt;br /&gt;
|-&lt;br /&gt;
| Media Library Search || {{No}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}}&lt;br /&gt;
|-&lt;br /&gt;
| Passcode Lock || {{No}} || {{No}} || {{No}} || {{No}} || {{No}} || {{No}}&lt;br /&gt;
|-&lt;br /&gt;
| Voice search support || {{No}} || {{No}} || {{No}} || {{Yes}} || {{Yes}} || {{Yes}}&lt;br /&gt;
|-&lt;br /&gt;
| Voice actions support || {{No}} || {{No}} || {{No}} || {{No}} || {{No}} || {{No}}&lt;br /&gt;
|-&lt;br /&gt;
| Organize media in folders || {{No}} || {{No}} || {{No}} || {{No}} || {{No}} || {{No}}&lt;br /&gt;
|-&lt;br /&gt;
| Use folders as playlists || {{No}} || {{No}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}}&lt;br /&gt;
|-&lt;br /&gt;
| Loop playlists || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}}&lt;br /&gt;
|-&lt;br /&gt;
| Playback control through headphones or lock screen || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}}&lt;br /&gt;
|-&lt;br /&gt;
| Mediasession support (Wear, TV, etc…) || {{No}} || {{No}} || {{Partial}} || {{Yes}} || {{Yes}} || {{Yes}}&lt;br /&gt;
|-&lt;br /&gt;
| Playback is paused when headphones are unplugged || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}}&lt;br /&gt;
|-&lt;br /&gt;
| WiFi upload and HTTP downloads in background || {{No}} || {{No}} || {{No}} || {{No}} || {{No}} || {{No}}&lt;br /&gt;
|-&lt;br /&gt;
| Support for password protected HTTP streams || {{No}} || {{No}} || {{No}} || {{No}} || {{No}} || {{No}}&lt;br /&gt;
|-&lt;br /&gt;
| Sharing files with further apps || {{No}} || {{No}} || {{No}} || {{No}} || {{No}} || {{No}}&lt;br /&gt;
|-&lt;br /&gt;
| Custom vlc:// protocol || {{No}} || {{No}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}}&lt;br /&gt;
|-&lt;br /&gt;
| Support for x-callback-url || {{No}} || {{No}} || {{No}} || {{No}} || {{No}} || {{Yes}}&lt;br /&gt;
|-&lt;br /&gt;
| Action mode || {{No}} || {{No}} || {{No}} || {{Yes}} || {{Yes}} || {{Yes}}&lt;br /&gt;
|-&lt;br /&gt;
| Android TV || {{No}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}}&lt;br /&gt;
|-&lt;br /&gt;
| Picture-in-Picture || {{No}} || {{No}} || {{No}} || {{Yes}} || {{Yes}} || {{Yes}}&lt;br /&gt;
|-&lt;br /&gt;
| ChromeOS support || {{No}} || {{ARC}} || {{ARC}} || {{Yes}} || {{Yes}} || {{Yes}}&lt;br /&gt;
|-&lt;br /&gt;
| Android Auto || {{No}} || {{No}} || {{No}} || {{Yes}} || {{No}} || {{Yes}}&lt;br /&gt;
|-&lt;br /&gt;
| Sorting || {{No}} || {{No}} || {{Partial}} || {{Yes}} || {{Yes}} || {{Yes}}&lt;br /&gt;
|-&lt;br /&gt;
| 360° videos || {{No}} || {{No}} || {{No}} || {{Yes}} || {{Yes}} || {{Yes}}&lt;br /&gt;
|-&lt;br /&gt;
| DayNight mode || {{No}} || {{No}} || {{No}} || {{Yes}} || {{Yes}} || {{Yes}}&lt;br /&gt;
|-&lt;br /&gt;
| Chromecast || {{No}} || {{No}} || {{No}} || {{No}} || {{Yes}} || {{Yes}}&lt;br /&gt;
|-&lt;br /&gt;
| Equalizer custom presets || {{No}} || {{No}} || {{No}} || {{No}} || {{Yes}} || {{Yes}}&lt;br /&gt;
|-&lt;br /&gt;
| Audio boost || {{No}} || {{No}} || {{No}} || {{No}} || {{Yes}} || {{Yes}}&lt;br /&gt;
|-&lt;br /&gt;
| Android 2.1 support || {{Yes}} || {{Yes}} || {{No}} || {{No}} || {{No}} || {{No}}&lt;br /&gt;
|-&lt;br /&gt;
| Android 2.2 support || {{Yes}} || {{Yes}} || {{Yes}} || {{No}} || {{No}} || {{No}}&lt;br /&gt;
|-&lt;br /&gt;
| Android 2.3 support || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || {{No}}&lt;br /&gt;
|-&lt;br /&gt;
| Android 6 (Runtime permissions) || {{No}} || {{No}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}}&lt;br /&gt;
|-&lt;br /&gt;
| Android 8 support || {{No}} || {{No}} || {{No}}  || {{Partial}} || {{Partial}} || {{Yes}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
There are many ways to install VLC on Android. This may be because you have a non-ARMv7 or x86 processor or do not wish to use the Play Store for whatever reason.&lt;br /&gt;
&lt;br /&gt;
=== From the Play Store (recommended) ===&lt;br /&gt;
The normal way, for ARMv7 (and above) and x86 processors only. Don&#039;t know your processor? Don&#039;t worry, if you can download it, you have a compatible ARMv7 or an x86 processor.&lt;br /&gt;
&lt;br /&gt;
: https://play.google.com/store/apps/details?id=org.videolan.vlc&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== From the F-Droid Repository ===&lt;br /&gt;
The F-Droid repository (https://f-droid.org) is a completely FOSS (Free and Open Source Software) equivalent to the Google Play Store. The F-Droid Repository and all apps within it are provided completely free of charge and licensed under open source licenses. The F-Droid repository can be downloaded directly from their website. The &amp;quot;Unknown Sources&amp;quot; setting must be turned on for Android devices (typically located in Settings -&amp;gt; Security) in order to install repositories other than the Google Play Store.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== From VideoLAN ===&lt;br /&gt;
If you can&#039;t download from the Play Store or just want to install the VLC .apk by yourself, follow these steps:&lt;br /&gt;
&lt;br /&gt;
# Go to Android Settings → Security → Device Administration → Enable &#039;Unknown Sources&#039;&lt;br /&gt;
# Go to our download server, preferably from your device: http://get.videolan.org/vlc-android/{{Android:latest version}}/&lt;br /&gt;
# Choose your processor architecture (ARMv7 or Intel x86) and grab the .apk file.&lt;br /&gt;
# Click on the .apk you just downloaded and install it.&lt;br /&gt;
&lt;br /&gt;
Don&#039;t really know your processor architecture? Try both... it&#039;s not very clever, but it&#039;s harmless.&lt;br /&gt;
&lt;br /&gt;
None of the two work? It is possible that you have an older processor with the ARMv6 architecture. The solution for now is to install a Nightly Build release. See below.&lt;br /&gt;
&lt;br /&gt;
Still doesn&#039;t work? Really? Well, then you must have an exotic processor... Contact us, on the [http://forum.videolan.org/viewforum.php?f=35 Android forum] or directly at [mailto:videolan.mobile@gmail.com videolan.mobile@gmail.com].&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Be a Beta tester or try a Beta release ===&lt;br /&gt;
You want want to know the future of VLC for Android?&lt;br /&gt;
You want to help us and/or test if your issue is already fixed for the next release ?&lt;br /&gt;
&lt;br /&gt;
==== Be a Beta tester ====&lt;br /&gt;
&lt;br /&gt;
Just follow this link [https://play.google.com/apps/testing/org.videolan.vlc Be a Beta tester]&lt;br /&gt;
&lt;br /&gt;
Soon, Beta release will automatically install on our device.&lt;br /&gt;
&lt;br /&gt;
==== Try a Beta release ====&lt;br /&gt;
You don&#039;t want to be a Beta Tester but just try a Beta ? Follow these steps :&lt;br /&gt;
&lt;br /&gt;
# Go to Android Settings → Security → Device Administration → Enable &#039;Unknown Sources&#039;&lt;br /&gt;
# Go to our server, preferably from your device, : http://get.videolan.org/testing/android/{{Android:latest beta version}}/&lt;br /&gt;
# Choose your processor architecture (ARMv7, ARMv8, x86...) &amp;lt;br /&amp;gt; Don&#039;t really know your processor architecture? Try both... it&#039;s not very clever, but it&#039;s harmless&lt;br /&gt;
# Download the chosen .apk on your device&lt;br /&gt;
# Click on the .apk you just download and install it.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Install a Nightly Build ===&lt;br /&gt;
You fear nothing and want our very last works on VLC ? Or you have an ARMv6 Processor and want VLC? Follow these steps:&lt;br /&gt;
&lt;br /&gt;
# Go to Android Settings → Security → Device Administration → Enable &#039;Unknown Sources&#039;&lt;br /&gt;
# Go to our server, preferably from your device: http://nightlies.videolan.org/&lt;br /&gt;
# Choose your processor architecture (ARMv7, ARMv8, x86...)&lt;br /&gt;
# Grab the latest .apk&lt;br /&gt;
# Click on the .apk you just download and install it.&lt;br /&gt;
&lt;br /&gt;
You may experience some weird issues but generally, it works fine. If not, please try an older nightly release, and contact us.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Interface==&lt;br /&gt;
At first start, VLC scans all your device to find all your media files. This is the main interface after the scan :&lt;br /&gt;
&lt;br /&gt;
{|style=&amp;quot;width: 50%;&amp;quot;|&lt;br /&gt;
|[[File:Android_Main.jpg|550x550px]]&lt;br /&gt;
|style=&amp;quot;vertical-align:top;width: 25%;&amp;quot;|&lt;br /&gt;
{|&lt;br /&gt;
|[[File:caption_1.png|40x40px]] || Show Menu &lt;br /&gt;
|-&lt;br /&gt;
|[[File:caption_2.png|40x40px]] || Video view&lt;br /&gt;
|-&lt;br /&gt;
|[[File:caption_3.png|40x40px]] || Audio view&lt;br /&gt;
|-&lt;br /&gt;
|[[File:caption_4.png|40x40px]] || Directory view&lt;br /&gt;
|-&lt;br /&gt;
|[[File:caption_5.png|40x40px]] || History view&lt;br /&gt;
|}&lt;br /&gt;
|style=&amp;quot;vertical-align:top;width: 25%;&amp;quot;|&lt;br /&gt;
{|&lt;br /&gt;
| [[File:caption_6.png|40x40px]] || Video browser view&lt;br /&gt;
|-&lt;br /&gt;
| [[File:caption_7.png|40x40px]] || Search a specific media&lt;br /&gt;
|-&lt;br /&gt;
| [[File:caption_8.png|40x40px]] || Open network MRL&lt;br /&gt;
|-&lt;br /&gt;
| [[File:caption_9.png|40x40px]] || Load last playlist&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;vertical-align:top;&amp;quot;|[[File:caption_10.png|40x40px]]&lt;br /&gt;
| More actions :&amp;lt;br&amp;gt;&lt;br /&gt;
* Sort by name or length&amp;lt;br&amp;gt;&lt;br /&gt;
* Refresh your media library&amp;lt;br&amp;gt;&lt;br /&gt;
* Equalizer&amp;lt;br&amp;gt;&lt;br /&gt;
* Preferences&amp;lt;br&amp;gt;&lt;br /&gt;
* About VLC&amp;lt;br&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Playing Video==&lt;br /&gt;
===Video browser view===&lt;br /&gt;
This view displays all your videos present in your device, or in the directories you have specified (see Preferences). To play one, just click on it, like the video [[File:caption_1.png|30x30px]].&lt;br /&gt;
&lt;br /&gt;
Note the difference with the video [[File:caption_2.png|30x30px]] which is a group of videos : VLC automatically groups your videos with the 4 same starting letters.&lt;br /&gt;
&lt;br /&gt;
{|style=&amp;quot;width: 50%;&amp;quot;|&lt;br /&gt;
|[[File:Android VideoBrowser.jpg|550x550px]]&lt;br /&gt;
|style=&amp;quot;vertical-align:top;width: 25%;&amp;quot;|&lt;br /&gt;
{|&lt;br /&gt;
|[[File:caption_1.png|40x40px]] || A Video&lt;br /&gt;
|-&lt;br /&gt;
|[[File:caption_2.png|40x40px]] || A group of videos.&lt;br /&gt;
|}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Video playback interface ===&lt;br /&gt;
&lt;br /&gt;
{|style=&amp;quot;width: 50%;&amp;quot;|&lt;br /&gt;
|[[File:Android_VideoPlayer_Interface.jpg|550x550px]]&lt;br /&gt;
|style=&amp;quot;vertical-align:top;width: 25%;&amp;quot;|&lt;br /&gt;
{|&lt;br /&gt;
|[[File:caption_1.png|40x40px]] || Video title&lt;br /&gt;
|-&lt;br /&gt;
|[[File:caption_2.png|40x40px]] || Battery and time&lt;br /&gt;
|-&lt;br /&gt;
|[[File:caption_3.png|40x40px]] || Play / Pause&lt;br /&gt;
|-&lt;br /&gt;
|[[File:caption_4.png|40x40px]] || Aspect ratio&lt;br /&gt;
|-&lt;br /&gt;
|[[File:caption_5.png|40x40px]] || Audio tracks&lt;br /&gt;
|-&lt;br /&gt;
|[[File:caption_6.png|40x40px]] || Subtitles tracks&lt;br /&gt;
|}&lt;br /&gt;
|style=&amp;quot;vertical-align:top;width: 25%;&amp;quot;|&lt;br /&gt;
{|&lt;br /&gt;
| [[File:caption_7.png|40x40px]] || Video menu (for DVD iso)&lt;br /&gt;
|-&lt;br /&gt;
| [[File:caption_8.png|40x40px]] || Lock screen&lt;br /&gt;
|-&lt;br /&gt;
| [[File:caption_9.png|40x40px]] || Elapsed time&lt;br /&gt;
|-&lt;br /&gt;
| [[File:caption_10.png|40x40px]] || Seek bar&lt;br /&gt;
|-&lt;br /&gt;
| [[File:caption_11.png|40x40px]] || Total time / Remaining time&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;vertical-align:top;&amp;quot;| [[File:caption_12.png|40x40px]] || Advanced Options&lt;br /&gt;
* Playback Speed&lt;br /&gt;
* Sleep timer&lt;br /&gt;
* Jump to specific time&lt;br /&gt;
* Add subtitle&lt;br /&gt;
|}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Some precisions:&lt;br /&gt;
* You can change audio and/or subtitle track if there are any. If not, these icons won&#039;t be displayed.&lt;br /&gt;
* The Video Menu icon is only displayed for iso video (a DVD iso for example)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Video playback gesture ===&lt;br /&gt;
&lt;br /&gt;
{|style=&amp;quot;width: 50%;&amp;quot;|&lt;br /&gt;
|[[File:Android_VideoPlayer_Gesture.jpg|550x550px]]&lt;br /&gt;
|style=&amp;quot;vertical-align:top;width: 25%;&amp;quot;|&lt;br /&gt;
{|&lt;br /&gt;
|[[File:caption_1.png|40x40px]] || Adjust Brightness&lt;br /&gt;
|-&lt;br /&gt;
|[[File:caption_2.png|40x40px]] || Adjust Volume&lt;br /&gt;
|-&lt;br /&gt;
|[[File:caption_3.png|40x40px]] || Quick search&lt;br /&gt;
|}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Playing Audio ==&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
* You can change the time display to remaining time (e.g. -1:30 for 1:30 minutes remaining) in the audio player by tapping on the current time label in the left.&lt;br /&gt;
&lt;br /&gt;
== Settings ==&lt;br /&gt;
&lt;br /&gt;
== See Also ==&lt;br /&gt;
&lt;br /&gt;
[[AndroidFAQ]] &amp;lt;br /&amp;gt;&lt;br /&gt;
[[Android Checklist]] &amp;lt;br /&amp;gt;&lt;br /&gt;
[[Android Player Intents]] &amp;lt;br /&amp;gt;&lt;br /&gt;
[[Android Report bugs]] &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Mobile documentation]]&lt;br /&gt;
[[Category:Android]]&lt;/div&gt;</summary>
		<author><name>Dekans</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=Documentation:Android&amp;diff=56383</id>
		<title>Documentation:Android</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=Documentation:Android&amp;diff=56383"/>
		<updated>2018-04-06T13:36:28Z</updated>

		<summary type="html">&lt;p&gt;Dekans: /* Feature Overview */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;big&amp;gt;------ Work in progress ------&amp;lt;/big&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Here is the documentation of the Android port of VLC media player.&lt;br /&gt;
&lt;br /&gt;
== Preliminary Notes ==&lt;br /&gt;
VLC for Android is a little different from VLC on desktops. In some ways, you can do more; in other ways, you can do less. VLC for Android only does media playback. Active streaming or file / stream to file conversations are not supported for usability and performance reasons. This walk-through does only include screenshots of a phone interface for size reasons. However, all features are also available on tablets with a similar appearance.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
== Feature Overview ==&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; class=&amp;quot;wikitable&amp;quot; style=&amp;quot;border: 1px solid dark green; text-align: center; width: 100%; margin: 1em auto 1em auto&amp;quot;&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;150px&amp;quot; | Feature&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;100px&amp;quot; | Version 1.0&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;100px&amp;quot; | Version 1.6&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;100px&amp;quot; | Version 2.0&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;100px&amp;quot; | Version 2.5&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;100px&amp;quot; | Version 3.0&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;100px&amp;quot; | Version 3.1&lt;br /&gt;
|-&lt;br /&gt;
| Opening Network Streams || {{No}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}}&lt;br /&gt;
|-&lt;br /&gt;
| UPnP discovery and streaming || {{No}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}}&lt;br /&gt;
|-&lt;br /&gt;
| Plex server discovery and streaming || {{No}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}}&lt;br /&gt;
|-&lt;br /&gt;
| Password-protected Plex shares || {{No}} || {{No}} || {{No}} || {{No}} || {{No}} || {{No}}&lt;br /&gt;
|-&lt;br /&gt;
| Downloads from UPnP multimedia servers || {{No}} || {{No}} || {{No}} || {{No}} || {{No}} || {{No}}&lt;br /&gt;
|-&lt;br /&gt;
| FTP discovery, streaming || {{No}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}}&lt;br /&gt;
|-&lt;br /&gt;
| Store FTP server bookmarks || {{No}} || {{No}} || {{No}} || {{Yes}} || {{Yes}} || {{Yes}}&lt;br /&gt;
|-&lt;br /&gt;
| Audio Playback via Connector Cables || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}}&lt;br /&gt;
|-&lt;br /&gt;
| Video Playback via Connector Cables || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}}&lt;br /&gt;
|-&lt;br /&gt;
| Subtitles playback || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}}&lt;br /&gt;
|-&lt;br /&gt;
| Subtitles Font Customization || {{No}} || {{No}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}}&lt;br /&gt;
|-&lt;br /&gt;
| Closed Caption playback || {{Yes}} || {{Yes}} || {{Yes}}  || {{Yes}} || {{Yes}} || {{Yes}}&lt;br /&gt;
|-&lt;br /&gt;
| Teletext subtitles playback || {{No}} || {{No}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}}&lt;br /&gt;
|-&lt;br /&gt;
| Multi-track audio handling || {{No}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}}&lt;br /&gt;
|-&lt;br /&gt;
| Video Filtering incl. Screen Brightness || {{No}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}}&lt;br /&gt;
|-&lt;br /&gt;
| Video Cropping and Aspect Ratio variation || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}}&lt;br /&gt;
|-&lt;br /&gt;
| Deinterlacing || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}}&lt;br /&gt;
|-&lt;br /&gt;
| Playback Speed control || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}}&lt;br /&gt;
|-&lt;br /&gt;
| Audio/Subtitles delay control || {{No}} || {{No}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}}&lt;br /&gt;
|-&lt;br /&gt;
| Repeated playback || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}}&lt;br /&gt;
|-&lt;br /&gt;
| Gestures based playback control || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}}&lt;br /&gt;
|-&lt;br /&gt;
| Playback of Audio-only media (mp3, m4a, flac, …) || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}}&lt;br /&gt;
|-&lt;br /&gt;
| Audio Playback in Background || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}}&lt;br /&gt;
|-&lt;br /&gt;
| Video Playback in Background || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}}&lt;br /&gt;
|-&lt;br /&gt;
| Playback timer || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}}&lt;br /&gt;
|-&lt;br /&gt;
| Chapter &amp;amp; title selection || {{No}} || {{No}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}}&lt;br /&gt;
|-&lt;br /&gt;
| 10-band equalizer || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}}&lt;br /&gt;
|-&lt;br /&gt;
| Playback UI Lock || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}}&lt;br /&gt;
|-&lt;br /&gt;
| Smart Media Library sorting for audio albums and TV shows || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}}&lt;br /&gt;
|-&lt;br /&gt;
| Media Library Search || {{No}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}}&lt;br /&gt;
|-&lt;br /&gt;
| Passcode Lock || {{No}} || {{No}} || {{No}} || {{No}} || {{No}} || {{No}}&lt;br /&gt;
|-&lt;br /&gt;
| Voice search support || {{No}} || {{No}} || {{No}} || {{Yes}} || {{Yes}} || {{Yes}}&lt;br /&gt;
|-&lt;br /&gt;
| Voice actions support || {{No}} || {{No}} || {{No}} || {{No}} || {{No}} || {{No}}&lt;br /&gt;
|-&lt;br /&gt;
| Organize media in folders || {{No}} || {{No}} || {{No}} || {{No}} || {{No}} || {{No}}&lt;br /&gt;
|-&lt;br /&gt;
| Use folders as playlists || {{No}} || {{No}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}}&lt;br /&gt;
|-&lt;br /&gt;
| Loop playlists || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}}&lt;br /&gt;
|-&lt;br /&gt;
| Playback control through headphones or lock screen || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}}&lt;br /&gt;
|-&lt;br /&gt;
| Mediasession support (Wear, TV, etc…) || {{No}} || {{No}} || {{Partial}} || {{Yes}} || {{Yes}} || {{Yes}}&lt;br /&gt;
|-&lt;br /&gt;
| Playback is paused when headphones are unplugged || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}}&lt;br /&gt;
|-&lt;br /&gt;
| WiFi upload and HTTP downloads in background || {{No}} || {{No}} || {{No}} || {{No}} || {{No}} || {{No}}&lt;br /&gt;
|-&lt;br /&gt;
| Support for password protected HTTP streams || {{No}} || {{No}} || {{No}} || {{No}} || {{No}} || {{No}}&lt;br /&gt;
|-&lt;br /&gt;
| Sharing files with further apps || {{No}} || {{No}} || {{No}} || {{No}} || {{No}} || {{No}}&lt;br /&gt;
|-&lt;br /&gt;
| Custom vlc:// protocol || {{No}} || {{No}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}}&lt;br /&gt;
|-&lt;br /&gt;
| Support for x-callback-url || {{No}} || {{No}} || {{No}} || {{No}} || {{No}} || {{Yes}}&lt;br /&gt;
|-&lt;br /&gt;
| Action mode || {{No}} || {{No}} || {{No}} || {{Yes}} || {{Yes}} || {{Yes}}&lt;br /&gt;
|-&lt;br /&gt;
| Android TV || {{No}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}}&lt;br /&gt;
|-&lt;br /&gt;
| Picture-in-Picture || {{No}} || {{No}} || {{No}} || {{Yes}} || {{Yes}} || {{Yes}}&lt;br /&gt;
|-&lt;br /&gt;
| ChromeOS support || {{No}} || {{ARC}} || {{ARC}} || {{Yes}} || {{Yes}} || {{Yes}}&lt;br /&gt;
|-&lt;br /&gt;
| Android Auto || {{No}} || {{No}} || {{No}} || {{Yes}} || {{No}} || {{Yes}}&lt;br /&gt;
|-&lt;br /&gt;
| Sorting || {{No}} || {{No}} || {{Partial}} || {{Yes}} || {{Yes}} || {{Yes}}&lt;br /&gt;
|-&lt;br /&gt;
| 360° videos || {{No}} || {{No}} || {{No}} || {{Yes}} || {{Yes}} || {{Yes}}&lt;br /&gt;
|-&lt;br /&gt;
| DayNight mode || {{No}} || {{No}} || {{No}} || {{Yes}} || {{Yes}} || {{Yes}}&lt;br /&gt;
|-&lt;br /&gt;
| Chromecast || {{No}} || {{No}} || {{No}} || {{No}} || {{Yes}} || {{Yes}}&lt;br /&gt;
|-&lt;br /&gt;
| Equalizer custom presets || {{No}} || {{No}} || {{No}} || {{No}} || {{Yes}} || {{Yes}}&lt;br /&gt;
|-&lt;br /&gt;
| Audio boost || {{No}} || {{No}} || {{No}} || {{No}} || {{Yes}} || {{Yes}}&lt;br /&gt;
|-&lt;br /&gt;
| Android 2.1 support || {{Yes}} || {{Yes}} || {{No}} || {{No}} || {{No}} || {{No}}&lt;br /&gt;
|-&lt;br /&gt;
| Android 2.2 support || {{Yes}} || {{Yes}} || {{Yes}} || {{No}} || {{No}} || {{No}}&lt;br /&gt;
|-&lt;br /&gt;
| Android 2.3 support || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || {{No}}&lt;br /&gt;
|-&lt;br /&gt;
| Android 6 (Runtime permissions) || {{No}} || {{No}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}}&lt;br /&gt;
|-&lt;br /&gt;
| Android 8 support || {{No}} || {{No}} || {{No}}  || {{Partial}} || {{Partial}} || {{Yes}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
There are many ways to install VLC on Android. This may be because you have a non-ARMv7 or x86 processor or do not wish to use the Play Store for whatever reason.&lt;br /&gt;
&lt;br /&gt;
=== From the Play Store (recommended) ===&lt;br /&gt;
The normal way, for ARMv7 (and above) and x86 processors only. Don&#039;t know your processor? Don&#039;t worry, if you can download it, you have a compatible ARMv7 or an x86 processor.&lt;br /&gt;
&lt;br /&gt;
: https://play.google.com/store/apps/details?id=org.videolan.vlc&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== From the F-Droid Repository ===&lt;br /&gt;
The F-Droid repository (https://f-droid.org) is a completely FOSS (Free and Open Source Software) equivalent to the Google Play Store. The F-Droid Repository and all apps within it are provided completely free of charge and licensed under open source licenses. The F-Droid repository can be downloaded directly from their website. The &amp;quot;Unknown Sources&amp;quot; setting must be turned on for Android devices (typically located in Settings -&amp;gt; Security) in order to install repositories other than the Google Play Store.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== From VideoLAN ===&lt;br /&gt;
If you can&#039;t download from the Play Store or just want to install the VLC .apk by yourself, follow these steps:&lt;br /&gt;
&lt;br /&gt;
# Go to Android Settings → Security → Device Administration → Enable &#039;Unknown Sources&#039;&lt;br /&gt;
# Go to our download server, preferably from your device: http://get.videolan.org/vlc-android/{{Android:latest version}}/&lt;br /&gt;
# Choose your processor architecture (ARMv7 or Intel x86) and grab the .apk file.&lt;br /&gt;
# Click on the .apk you just downloaded and install it.&lt;br /&gt;
&lt;br /&gt;
Don&#039;t really know your processor architecture? Try both... it&#039;s not very clever, but it&#039;s harmless.&lt;br /&gt;
&lt;br /&gt;
None of the two work? It is possible that you have an older processor with the ARMv6 architecture. The solution for now is to install a Nightly Build release. See below.&lt;br /&gt;
&lt;br /&gt;
Still doesn&#039;t work? Really? Well, then you must have an exotic processor... Contact us, on the [http://forum.videolan.org/viewforum.php?f=35 Android forum] or directly at [mailto:videolan.mobile@gmail.com videolan.mobile@gmail.com].&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Be a Beta tester or try a Beta release ===&lt;br /&gt;
You want want to know the future of VLC for Android?&lt;br /&gt;
You want to help us and/or test if your issue is already fixed for the next release ?&lt;br /&gt;
&lt;br /&gt;
==== Be a Beta tester ====&lt;br /&gt;
&lt;br /&gt;
Just follow this link [https://play.google.com/apps/testing/org.videolan.vlc Be a Beta tester]&lt;br /&gt;
&lt;br /&gt;
Soon, Beta release will automatically install on our device.&lt;br /&gt;
&lt;br /&gt;
==== Try a Beta release ====&lt;br /&gt;
You don&#039;t want to be a Beta Tester but just try a Beta ? Follow these steps :&lt;br /&gt;
&lt;br /&gt;
# Go to Android Settings → Security → Device Administration → Enable &#039;Unknown Sources&#039;&lt;br /&gt;
# Go to our server, preferably from your device, : http://get.videolan.org/testing/android/{{Android:latest beta version}}/&lt;br /&gt;
# Choose your processor architecture (ARMv7, ARMv8, x86...) &amp;lt;br /&amp;gt; Don&#039;t really know your processor architecture? Try both... it&#039;s not very clever, but it&#039;s harmless&lt;br /&gt;
# Download the chosen .apk on your device&lt;br /&gt;
# Click on the .apk you just download and install it.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Install a Nightly Build ===&lt;br /&gt;
You fear nothing and want our very last works on VLC ? Or you have an ARMv6 Processor and want VLC? Follow these steps:&lt;br /&gt;
&lt;br /&gt;
# Go to Android Settings → Security → Device Administration → Enable &#039;Unknown Sources&#039;&lt;br /&gt;
# Go to our server, preferably from your device: http://nightlies.videolan.org/&lt;br /&gt;
# Choose your processor architecture (ARMv7, ARMv8, x86...)&lt;br /&gt;
# Grab the latest .apk&lt;br /&gt;
# Click on the .apk you just download and install it.&lt;br /&gt;
&lt;br /&gt;
You may experience some weird issues but generally, it works fine. If not, please try an older nightly release, and contact us.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Interface==&lt;br /&gt;
At first start, VLC scans all your device to find all your media files. This is the main interface after the scan :&lt;br /&gt;
&lt;br /&gt;
{|style=&amp;quot;width: 50%;&amp;quot;|&lt;br /&gt;
|[[File:Android_Main.jpg|550x550px]]&lt;br /&gt;
|style=&amp;quot;vertical-align:top;width: 25%;&amp;quot;|&lt;br /&gt;
{|&lt;br /&gt;
|[[File:caption_1.png|40x40px]] || Show Menu &lt;br /&gt;
|-&lt;br /&gt;
|[[File:caption_2.png|40x40px]] || Video view&lt;br /&gt;
|-&lt;br /&gt;
|[[File:caption_3.png|40x40px]] || Audio view&lt;br /&gt;
|-&lt;br /&gt;
|[[File:caption_4.png|40x40px]] || Directory view&lt;br /&gt;
|-&lt;br /&gt;
|[[File:caption_5.png|40x40px]] || History view&lt;br /&gt;
|}&lt;br /&gt;
|style=&amp;quot;vertical-align:top;width: 25%;&amp;quot;|&lt;br /&gt;
{|&lt;br /&gt;
| [[File:caption_6.png|40x40px]] || Video browser view&lt;br /&gt;
|-&lt;br /&gt;
| [[File:caption_7.png|40x40px]] || Search a specific media&lt;br /&gt;
|-&lt;br /&gt;
| [[File:caption_8.png|40x40px]] || Open network MRL&lt;br /&gt;
|-&lt;br /&gt;
| [[File:caption_9.png|40x40px]] || Load last playlist&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;vertical-align:top;&amp;quot;|[[File:caption_10.png|40x40px]]&lt;br /&gt;
| More actions :&amp;lt;br&amp;gt;&lt;br /&gt;
* Sort by name or length&amp;lt;br&amp;gt;&lt;br /&gt;
* Refresh your media library&amp;lt;br&amp;gt;&lt;br /&gt;
* Equalizer&amp;lt;br&amp;gt;&lt;br /&gt;
* Preferences&amp;lt;br&amp;gt;&lt;br /&gt;
* About VLC&amp;lt;br&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Playing Video==&lt;br /&gt;
===Video browser view===&lt;br /&gt;
This view displays all your videos present in your device, or in the directories you have specified (see Preferences). To play one, just click on it, like the video [[File:caption_1.png|30x30px]].&lt;br /&gt;
&lt;br /&gt;
Note the difference with the video [[File:caption_2.png|30x30px]] which is a group of videos : VLC automatically groups your videos with the 4 same starting letters.&lt;br /&gt;
&lt;br /&gt;
{|style=&amp;quot;width: 50%;&amp;quot;|&lt;br /&gt;
|[[File:Android VideoBrowser.jpg|550x550px]]&lt;br /&gt;
|style=&amp;quot;vertical-align:top;width: 25%;&amp;quot;|&lt;br /&gt;
{|&lt;br /&gt;
|[[File:caption_1.png|40x40px]] || A Video&lt;br /&gt;
|-&lt;br /&gt;
|[[File:caption_2.png|40x40px]] || A group of videos.&lt;br /&gt;
|}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Video playback interface ===&lt;br /&gt;
&lt;br /&gt;
{|style=&amp;quot;width: 50%;&amp;quot;|&lt;br /&gt;
|[[File:Android_VideoPlayer_Interface.jpg|550x550px]]&lt;br /&gt;
|style=&amp;quot;vertical-align:top;width: 25%;&amp;quot;|&lt;br /&gt;
{|&lt;br /&gt;
|[[File:caption_1.png|40x40px]] || Video title&lt;br /&gt;
|-&lt;br /&gt;
|[[File:caption_2.png|40x40px]] || Battery and time&lt;br /&gt;
|-&lt;br /&gt;
|[[File:caption_3.png|40x40px]] || Play / Pause&lt;br /&gt;
|-&lt;br /&gt;
|[[File:caption_4.png|40x40px]] || Aspect ratio&lt;br /&gt;
|-&lt;br /&gt;
|[[File:caption_5.png|40x40px]] || Audio tracks&lt;br /&gt;
|-&lt;br /&gt;
|[[File:caption_6.png|40x40px]] || Subtitles tracks&lt;br /&gt;
|}&lt;br /&gt;
|style=&amp;quot;vertical-align:top;width: 25%;&amp;quot;|&lt;br /&gt;
{|&lt;br /&gt;
| [[File:caption_7.png|40x40px]] || Video menu (for DVD iso)&lt;br /&gt;
|-&lt;br /&gt;
| [[File:caption_8.png|40x40px]] || Lock screen&lt;br /&gt;
|-&lt;br /&gt;
| [[File:caption_9.png|40x40px]] || Elapsed time&lt;br /&gt;
|-&lt;br /&gt;
| [[File:caption_10.png|40x40px]] || Seek bar&lt;br /&gt;
|-&lt;br /&gt;
| [[File:caption_11.png|40x40px]] || Total time / Remaining time&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;vertical-align:top;&amp;quot;| [[File:caption_12.png|40x40px]] || Advanced Options&lt;br /&gt;
* Playback Speed&lt;br /&gt;
* Sleep timer&lt;br /&gt;
* Jump to specific time&lt;br /&gt;
* Add subtitle&lt;br /&gt;
|}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Some precisions:&lt;br /&gt;
* You can change audio and/or subtitle track if there are any. If not, these icons won&#039;t be displayed.&lt;br /&gt;
* The Video Menu icon is only displayed for iso video (a DVD iso for example)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Video playback gesture ===&lt;br /&gt;
&lt;br /&gt;
{|style=&amp;quot;width: 50%;&amp;quot;|&lt;br /&gt;
|[[File:Android_VideoPlayer_Gesture.jpg|550x550px]]&lt;br /&gt;
|style=&amp;quot;vertical-align:top;width: 25%;&amp;quot;|&lt;br /&gt;
{|&lt;br /&gt;
|[[File:caption_1.png|40x40px]] || Adjust Brightness&lt;br /&gt;
|-&lt;br /&gt;
|[[File:caption_2.png|40x40px]] || Adjust Volume&lt;br /&gt;
|-&lt;br /&gt;
|[[File:caption_3.png|40x40px]] || Quick search&lt;br /&gt;
|}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Playing Audio ==&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
* You can change the time display to remaining time (e.g. -1:30 for 1:30 minutes remaining) in the audio player by tapping on the current time label in the left.&lt;br /&gt;
&lt;br /&gt;
== Settings ==&lt;br /&gt;
&lt;br /&gt;
== See Also ==&lt;br /&gt;
&lt;br /&gt;
[[AndroidFAQ]] &amp;lt;br /&amp;gt;&lt;br /&gt;
[[Android Checklist]] &amp;lt;br /&amp;gt;&lt;br /&gt;
[[Android Player Intents]] &amp;lt;br /&amp;gt;&lt;br /&gt;
[[Android Report bugs]] &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Mobile documentation]]&lt;br /&gt;
[[Category:Android]]&lt;/div&gt;</summary>
		<author><name>Dekans</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=Documentation:Android&amp;diff=56382</id>
		<title>Documentation:Android</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=Documentation:Android&amp;diff=56382"/>
		<updated>2018-04-06T13:31:30Z</updated>

		<summary type="html">&lt;p&gt;Dekans: /* Preliminary Notes */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;&amp;lt;big&amp;gt;------ Work in progress ------&amp;lt;/big&amp;gt;&lt;br /&gt;
&lt;br /&gt;
Here is the documentation of the Android port of VLC media player.&lt;br /&gt;
&lt;br /&gt;
== Preliminary Notes ==&lt;br /&gt;
VLC for Android is a little different from VLC on desktops. In some ways, you can do more; in other ways, you can do less. VLC for Android only does media playback. Active streaming or file / stream to file conversations are not supported for usability and performance reasons. This walk-through does only include screenshots of a phone interface for size reasons. However, all features are also available on tablets with a similar appearance.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
== Feature Overview ==&lt;br /&gt;
&lt;br /&gt;
{| border=&amp;quot;1&amp;quot; cellpadding=&amp;quot;2&amp;quot; class=&amp;quot;wikitable&amp;quot; style=&amp;quot;border: 1px solid dark green; text-align: center; width: 100%; margin: 1em auto 1em auto&amp;quot;&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;150px&amp;quot; | Feature&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;100px&amp;quot; | Version 1.0&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;100px&amp;quot; | Version 1.6&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;100px&amp;quot; | Version 2.0&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;100px&amp;quot; | Version 2.5&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;100px&amp;quot; | Version 3.0&lt;br /&gt;
! scope=&amp;quot;col&amp;quot; width=&amp;quot;100px&amp;quot; | Version 3.1&lt;br /&gt;
|-&lt;br /&gt;
| Opening Network Streams || {{No}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}}&lt;br /&gt;
|-&lt;br /&gt;
| UPnP discovery and streaming || {{No}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}}&lt;br /&gt;
|-&lt;br /&gt;
| Plex server discovery and streaming || {{No}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}}&lt;br /&gt;
|-&lt;br /&gt;
| Password-protected Plex shares || {{No}} || {{No}} || {{No}} || {{No}} || {{No}} || {{No}}&lt;br /&gt;
|-&lt;br /&gt;
| Downloads from UPnP multimedia servers || {{No}} || {{No}} || {{No}} || {{No}} || {{No}} || {{No}}&lt;br /&gt;
|-&lt;br /&gt;
| FTP discovery, streaming || {{No}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}}&lt;br /&gt;
|-&lt;br /&gt;
| Store FTP server bookmarks || {{No}} || {{No}} || {{No}} || {{Yes}} || {{Yes}} || {{Yes}}&lt;br /&gt;
|-&lt;br /&gt;
| Audio Playback via Connector Cables || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}}&lt;br /&gt;
|-&lt;br /&gt;
| Video Playback via Connector Cables || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}}&lt;br /&gt;
|-&lt;br /&gt;
| Subtitles playback || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}}&lt;br /&gt;
|-&lt;br /&gt;
| Subtitles Font Customization || {{No}} || {{No}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}}&lt;br /&gt;
|-&lt;br /&gt;
| Closed Caption playback || {{Yes}} || {{Yes}} || {{Yes}}  || {{Yes}} || {{Yes}} || {{Yes}}&lt;br /&gt;
|-&lt;br /&gt;
| Teletext subtitles playback || {{No}} || {{No}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}}&lt;br /&gt;
|-&lt;br /&gt;
| Multi-track audio handling || {{No}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}}&lt;br /&gt;
|-&lt;br /&gt;
| Video Filtering incl. Screen Brightness || {{No}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}}&lt;br /&gt;
|-&lt;br /&gt;
| Video Cropping and Aspect Ratio variation || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}}&lt;br /&gt;
|-&lt;br /&gt;
| Deinterlacing || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}}&lt;br /&gt;
|-&lt;br /&gt;
| Playback Speed control || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}}&lt;br /&gt;
|-&lt;br /&gt;
| Audio/Subtitles delay control || {{No}} || {{No}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}}&lt;br /&gt;
|-&lt;br /&gt;
| Repeated playback || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}}&lt;br /&gt;
|-&lt;br /&gt;
| Gestures based playback control || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}}&lt;br /&gt;
|-&lt;br /&gt;
| Playback of Audio-only media (mp3, m4a, flac, …) || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}}&lt;br /&gt;
|-&lt;br /&gt;
| Audio Playback in Background || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}}&lt;br /&gt;
|-&lt;br /&gt;
| Video Playback in Background || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}}&lt;br /&gt;
|-&lt;br /&gt;
| Playback timer || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}}&lt;br /&gt;
|-&lt;br /&gt;
| Chapter &amp;amp; title selection || {{No}} || {{No}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}}&lt;br /&gt;
|-&lt;br /&gt;
| 10-band equalizer || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}}&lt;br /&gt;
|-&lt;br /&gt;
| Playback UI Lock || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}}&lt;br /&gt;
|-&lt;br /&gt;
| Smart Media Library sorting for audio albums and TV shows || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}}&lt;br /&gt;
|-&lt;br /&gt;
| Media Library Search || {{No}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}}&lt;br /&gt;
|-&lt;br /&gt;
| Passcode Lock || {{No}} || {{No}} || {{No}} || {{No}} || {{No}} || {{No}}&lt;br /&gt;
|-&lt;br /&gt;
| Voice search support || {{No}} || {{No}} || {{No}} || {{Yes}} || {{Yes}} || {{Yes}}&lt;br /&gt;
|-&lt;br /&gt;
| Voice actions support || {{No}} || {{No}} || {{No}} || {{No}} || {{No}} || {{No}}&lt;br /&gt;
|-&lt;br /&gt;
| Organize media in folders || {{No}} || {{No}} || {{No}} || {{No}} || {{No}} || {{No}}&lt;br /&gt;
|-&lt;br /&gt;
| Use folders as playlists || {{No}} || {{No}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}}&lt;br /&gt;
|-&lt;br /&gt;
| Loop playlists || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}}&lt;br /&gt;
|-&lt;br /&gt;
| Playback control through headphones or lock screen || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}}&lt;br /&gt;
|-&lt;br /&gt;
| Mediasession support (Wear, TV, etc…) || {{No}} || {{No}} || {{Partial}} || {{Yes}} || {{Yes}} || {{Yes}}&lt;br /&gt;
|-&lt;br /&gt;
| Playback is paused when headphones are unplugged || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}}&lt;br /&gt;
|-&lt;br /&gt;
| WiFi upload and HTTP downloads in background || {{No}} || {{No}} || {{No}} || {{No}} || {{No}} || {{No}}&lt;br /&gt;
|-&lt;br /&gt;
| Support for password protected HTTP streams || {{No}} || {{No}} || {{No}} || {{No}} || {{No}} || {{No}}&lt;br /&gt;
|-&lt;br /&gt;
| Sharing files with further apps || {{No}} || {{No}} || {{No}} || {{No}} || {{No}} || {{No}}&lt;br /&gt;
|-&lt;br /&gt;
| Custom vlc:// protocol || {{No}} || {{No}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}}&lt;br /&gt;
|-&lt;br /&gt;
| Support for x-callback-url || {{No}} || {{No}} || {{No}} || {{No}} || {{No}} || {{Yes}}&lt;br /&gt;
|-&lt;br /&gt;
| Android TV || {{No}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}}&lt;br /&gt;
|-&lt;br /&gt;
| Picture-in-Picture || {{No}} || {{No}} || {{No}} || {{Yes}} || {{Yes}} || {{Yes}}&lt;br /&gt;
|-&lt;br /&gt;
| ChromeOS support || {{No}} || {{ARC}} || {{ARC}} || {{Yes}} || {{Yes}} || {{Yes}}&lt;br /&gt;
|-&lt;br /&gt;
| Android Auto || {{No}} || {{No}} || {{No}} || {{Yes}} || {{No}} || {{Yes}}&lt;br /&gt;
|-&lt;br /&gt;
| 360° videos || {{No}} || {{No}} || {{No}} || {{Yes}} || {{Yes}} || {{Yes}}&lt;br /&gt;
|-&lt;br /&gt;
| Chromecast || {{No}} || {{No}} || {{No}} || {{No}} || {{Yes}} || {{Yes}}&lt;br /&gt;
|-&lt;br /&gt;
| Android 2.1 support || {{Yes}} || {{Yes}} || {{No}} || {{No}} || {{No}} || {{No}}&lt;br /&gt;
|-&lt;br /&gt;
| Android 2.2 support || {{Yes}} || {{Yes}} || {{Yes}} || {{No}} || {{No}} || {{No}}&lt;br /&gt;
|-&lt;br /&gt;
| Android 2.3 support || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}} || {{No}}&lt;br /&gt;
|-&lt;br /&gt;
| Android 6 (Runtime permissions) || {{No}} || {{No}} || {{Yes}} || {{Yes}} || {{Yes}} || {{Yes}}&lt;br /&gt;
|-&lt;br /&gt;
| Android 8 support || {{No}} || {{No}} || {{No}}  || {{Partial}} || {{Partial}} || {{Yes}}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Installation ==&lt;br /&gt;
There are many ways to install VLC on Android. This may be because you have a non-ARMv7 or x86 processor or do not wish to use the Play Store for whatever reason.&lt;br /&gt;
&lt;br /&gt;
=== From the Play Store (recommended) ===&lt;br /&gt;
The normal way, for ARMv7 (and above) and x86 processors only. Don&#039;t know your processor? Don&#039;t worry, if you can download it, you have a compatible ARMv7 or an x86 processor.&lt;br /&gt;
&lt;br /&gt;
: https://play.google.com/store/apps/details?id=org.videolan.vlc&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== From the F-Droid Repository ===&lt;br /&gt;
The F-Droid repository (https://f-droid.org) is a completely FOSS (Free and Open Source Software) equivalent to the Google Play Store. The F-Droid Repository and all apps within it are provided completely free of charge and licensed under open source licenses. The F-Droid repository can be downloaded directly from their website. The &amp;quot;Unknown Sources&amp;quot; setting must be turned on for Android devices (typically located in Settings -&amp;gt; Security) in order to install repositories other than the Google Play Store.&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== From VideoLAN ===&lt;br /&gt;
If you can&#039;t download from the Play Store or just want to install the VLC .apk by yourself, follow these steps:&lt;br /&gt;
&lt;br /&gt;
# Go to Android Settings → Security → Device Administration → Enable &#039;Unknown Sources&#039;&lt;br /&gt;
# Go to our download server, preferably from your device: http://get.videolan.org/vlc-android/{{Android:latest version}}/&lt;br /&gt;
# Choose your processor architecture (ARMv7 or Intel x86) and grab the .apk file.&lt;br /&gt;
# Click on the .apk you just downloaded and install it.&lt;br /&gt;
&lt;br /&gt;
Don&#039;t really know your processor architecture? Try both... it&#039;s not very clever, but it&#039;s harmless.&lt;br /&gt;
&lt;br /&gt;
None of the two work? It is possible that you have an older processor with the ARMv6 architecture. The solution for now is to install a Nightly Build release. See below.&lt;br /&gt;
&lt;br /&gt;
Still doesn&#039;t work? Really? Well, then you must have an exotic processor... Contact us, on the [http://forum.videolan.org/viewforum.php?f=35 Android forum] or directly at [mailto:videolan.mobile@gmail.com videolan.mobile@gmail.com].&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Be a Beta tester or try a Beta release ===&lt;br /&gt;
You want want to know the future of VLC for Android?&lt;br /&gt;
You want to help us and/or test if your issue is already fixed for the next release ?&lt;br /&gt;
&lt;br /&gt;
==== Be a Beta tester ====&lt;br /&gt;
&lt;br /&gt;
Just follow this link [https://play.google.com/apps/testing/org.videolan.vlc Be a Beta tester]&lt;br /&gt;
&lt;br /&gt;
Soon, Beta release will automatically install on our device.&lt;br /&gt;
&lt;br /&gt;
==== Try a Beta release ====&lt;br /&gt;
You don&#039;t want to be a Beta Tester but just try a Beta ? Follow these steps :&lt;br /&gt;
&lt;br /&gt;
# Go to Android Settings → Security → Device Administration → Enable &#039;Unknown Sources&#039;&lt;br /&gt;
# Go to our server, preferably from your device, : http://get.videolan.org/testing/android/{{Android:latest beta version}}/&lt;br /&gt;
# Choose your processor architecture (ARMv7, ARMv8, x86...) &amp;lt;br /&amp;gt; Don&#039;t really know your processor architecture? Try both... it&#039;s not very clever, but it&#039;s harmless&lt;br /&gt;
# Download the chosen .apk on your device&lt;br /&gt;
# Click on the .apk you just download and install it.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Install a Nightly Build ===&lt;br /&gt;
You fear nothing and want our very last works on VLC ? Or you have an ARMv6 Processor and want VLC? Follow these steps:&lt;br /&gt;
&lt;br /&gt;
# Go to Android Settings → Security → Device Administration → Enable &#039;Unknown Sources&#039;&lt;br /&gt;
# Go to our server, preferably from your device: http://nightlies.videolan.org/&lt;br /&gt;
# Choose your processor architecture (ARMv7, ARMv8, x86...)&lt;br /&gt;
# Grab the latest .apk&lt;br /&gt;
# Click on the .apk you just download and install it.&lt;br /&gt;
&lt;br /&gt;
You may experience some weird issues but generally, it works fine. If not, please try an older nightly release, and contact us.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Interface==&lt;br /&gt;
At first start, VLC scans all your device to find all your media files. This is the main interface after the scan :&lt;br /&gt;
&lt;br /&gt;
{|style=&amp;quot;width: 50%;&amp;quot;|&lt;br /&gt;
|[[File:Android_Main.jpg|550x550px]]&lt;br /&gt;
|style=&amp;quot;vertical-align:top;width: 25%;&amp;quot;|&lt;br /&gt;
{|&lt;br /&gt;
|[[File:caption_1.png|40x40px]] || Show Menu &lt;br /&gt;
|-&lt;br /&gt;
|[[File:caption_2.png|40x40px]] || Video view&lt;br /&gt;
|-&lt;br /&gt;
|[[File:caption_3.png|40x40px]] || Audio view&lt;br /&gt;
|-&lt;br /&gt;
|[[File:caption_4.png|40x40px]] || Directory view&lt;br /&gt;
|-&lt;br /&gt;
|[[File:caption_5.png|40x40px]] || History view&lt;br /&gt;
|}&lt;br /&gt;
|style=&amp;quot;vertical-align:top;width: 25%;&amp;quot;|&lt;br /&gt;
{|&lt;br /&gt;
| [[File:caption_6.png|40x40px]] || Video browser view&lt;br /&gt;
|-&lt;br /&gt;
| [[File:caption_7.png|40x40px]] || Search a specific media&lt;br /&gt;
|-&lt;br /&gt;
| [[File:caption_8.png|40x40px]] || Open network MRL&lt;br /&gt;
|-&lt;br /&gt;
| [[File:caption_9.png|40x40px]] || Load last playlist&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;vertical-align:top;&amp;quot;|[[File:caption_10.png|40x40px]]&lt;br /&gt;
| More actions :&amp;lt;br&amp;gt;&lt;br /&gt;
* Sort by name or length&amp;lt;br&amp;gt;&lt;br /&gt;
* Refresh your media library&amp;lt;br&amp;gt;&lt;br /&gt;
* Equalizer&amp;lt;br&amp;gt;&lt;br /&gt;
* Preferences&amp;lt;br&amp;gt;&lt;br /&gt;
* About VLC&amp;lt;br&amp;gt;&lt;br /&gt;
|}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
==Playing Video==&lt;br /&gt;
===Video browser view===&lt;br /&gt;
This view displays all your videos present in your device, or in the directories you have specified (see Preferences). To play one, just click on it, like the video [[File:caption_1.png|30x30px]].&lt;br /&gt;
&lt;br /&gt;
Note the difference with the video [[File:caption_2.png|30x30px]] which is a group of videos : VLC automatically groups your videos with the 4 same starting letters.&lt;br /&gt;
&lt;br /&gt;
{|style=&amp;quot;width: 50%;&amp;quot;|&lt;br /&gt;
|[[File:Android VideoBrowser.jpg|550x550px]]&lt;br /&gt;
|style=&amp;quot;vertical-align:top;width: 25%;&amp;quot;|&lt;br /&gt;
{|&lt;br /&gt;
|[[File:caption_1.png|40x40px]] || A Video&lt;br /&gt;
|-&lt;br /&gt;
|[[File:caption_2.png|40x40px]] || A group of videos.&lt;br /&gt;
|}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Video playback interface ===&lt;br /&gt;
&lt;br /&gt;
{|style=&amp;quot;width: 50%;&amp;quot;|&lt;br /&gt;
|[[File:Android_VideoPlayer_Interface.jpg|550x550px]]&lt;br /&gt;
|style=&amp;quot;vertical-align:top;width: 25%;&amp;quot;|&lt;br /&gt;
{|&lt;br /&gt;
|[[File:caption_1.png|40x40px]] || Video title&lt;br /&gt;
|-&lt;br /&gt;
|[[File:caption_2.png|40x40px]] || Battery and time&lt;br /&gt;
|-&lt;br /&gt;
|[[File:caption_3.png|40x40px]] || Play / Pause&lt;br /&gt;
|-&lt;br /&gt;
|[[File:caption_4.png|40x40px]] || Aspect ratio&lt;br /&gt;
|-&lt;br /&gt;
|[[File:caption_5.png|40x40px]] || Audio tracks&lt;br /&gt;
|-&lt;br /&gt;
|[[File:caption_6.png|40x40px]] || Subtitles tracks&lt;br /&gt;
|}&lt;br /&gt;
|style=&amp;quot;vertical-align:top;width: 25%;&amp;quot;|&lt;br /&gt;
{|&lt;br /&gt;
| [[File:caption_7.png|40x40px]] || Video menu (for DVD iso)&lt;br /&gt;
|-&lt;br /&gt;
| [[File:caption_8.png|40x40px]] || Lock screen&lt;br /&gt;
|-&lt;br /&gt;
| [[File:caption_9.png|40x40px]] || Elapsed time&lt;br /&gt;
|-&lt;br /&gt;
| [[File:caption_10.png|40x40px]] || Seek bar&lt;br /&gt;
|-&lt;br /&gt;
| [[File:caption_11.png|40x40px]] || Total time / Remaining time&lt;br /&gt;
|-&lt;br /&gt;
|style=&amp;quot;vertical-align:top;&amp;quot;| [[File:caption_12.png|40x40px]] || Advanced Options&lt;br /&gt;
* Playback Speed&lt;br /&gt;
* Sleep timer&lt;br /&gt;
* Jump to specific time&lt;br /&gt;
* Add subtitle&lt;br /&gt;
|}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
Some precisions:&lt;br /&gt;
* You can change audio and/or subtitle track if there are any. If not, these icons won&#039;t be displayed.&lt;br /&gt;
* The Video Menu icon is only displayed for iso video (a DVD iso for example)&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Video playback gesture ===&lt;br /&gt;
&lt;br /&gt;
{|style=&amp;quot;width: 50%;&amp;quot;|&lt;br /&gt;
|[[File:Android_VideoPlayer_Gesture.jpg|550x550px]]&lt;br /&gt;
|style=&amp;quot;vertical-align:top;width: 25%;&amp;quot;|&lt;br /&gt;
{|&lt;br /&gt;
|[[File:caption_1.png|40x40px]] || Adjust Brightness&lt;br /&gt;
|-&lt;br /&gt;
|[[File:caption_2.png|40x40px]] || Adjust Volume&lt;br /&gt;
|-&lt;br /&gt;
|[[File:caption_3.png|40x40px]] || Quick search&lt;br /&gt;
|}&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;br&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Playing Audio ==&lt;br /&gt;
TODO&lt;br /&gt;
&lt;br /&gt;
* You can change the time display to remaining time (e.g. -1:30 for 1:30 minutes remaining) in the audio player by tapping on the current time label in the left.&lt;br /&gt;
&lt;br /&gt;
== Settings ==&lt;br /&gt;
&lt;br /&gt;
== See Also ==&lt;br /&gt;
&lt;br /&gt;
[[AndroidFAQ]] &amp;lt;br /&amp;gt;&lt;br /&gt;
[[Android Checklist]] &amp;lt;br /&amp;gt;&lt;br /&gt;
[[Android Player Intents]] &amp;lt;br /&amp;gt;&lt;br /&gt;
[[Android Report bugs]] &amp;lt;br /&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Category:Mobile documentation]]&lt;br /&gt;
[[Category:Android]]&lt;/div&gt;</summary>
		<author><name>Dekans</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=Template:ARC&amp;diff=56381</id>
		<title>Template:ARC</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=Template:ARC&amp;diff=56381"/>
		<updated>2018-04-06T13:31:17Z</updated>

		<summary type="html">&lt;p&gt;Dekans: Created page with &amp;quot;style=&amp;quot;background: #ffbbbb&amp;quot; | ARC&amp;quot;&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;style=&amp;quot;background: #ffbbbb&amp;quot; | ARC&lt;/div&gt;</summary>
		<author><name>Dekans</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=AndroidCompile&amp;diff=56364</id>
		<title>AndroidCompile</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=AndroidCompile&amp;diff=56364"/>
		<updated>2018-03-01T12:40:15Z</updated>

		<summary type="html">&lt;p&gt;Dekans: /* Building */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page is an introduction to the compilation of &#039;&#039;&#039;VLC for Android&#039;&#039;&#039; on Linux. &lt;br /&gt;
&lt;br /&gt;
==Android Studio, SDK and NDK installation==&lt;br /&gt;
&lt;br /&gt;
=== Requirements  ===&lt;br /&gt;
* You &#039;&#039;&#039;MUST&#039;&#039;&#039; build on Linux (or OSX if you know what you are doing).&lt;br /&gt;
* The following packages &#039;&#039;&#039;MUST&#039;&#039;&#039; must be installed:&lt;br /&gt;
** the GNU autotools: &#039;&#039;autoconf&#039;&#039;, &#039;&#039;libtool&#039;&#039;, &#039;&#039;automake&#039;&#039; and &#039;&#039;make&#039;&#039; (a.k.a. &#039;&#039;gmake&#039;&#039;)&lt;br /&gt;
** ...and their dependencies: &#039;&#039;m4&#039;&#039; and &#039;&#039;gawk&#039;&#039;, &#039;&#039;mawk&#039;&#039; or &#039;&#039;nawk&#039;&#039;,&lt;br /&gt;
** the GNU C and C++ compilers a.k.a. &#039;&#039;gcc&#039;&#039; and &#039;&#039;g++&#039;&#039;,&lt;br /&gt;
** some GNU build utilities: &#039;&#039;pkg-config&#039;&#039; and &#039;&#039;patch&#039;&#039;,&lt;br /&gt;
** the following other build utilities: &#039;&#039;Apache Ant&#039;&#039; (or &#039;&#039;Ant&#039;&#039;), &#039;&#039;cmake&#039;&#039;, &#039;&#039;protobuf&#039;&#039;, &#039;&#039;ragel&#039;&#039;,&lt;br /&gt;
** the Subversion and Git version control systems&lt;br /&gt;
** &#039;&#039;unzip&#039;&#039; and either &#039;&#039;curl&#039;&#039; or &#039;&#039;wget&#039;&#039; for retreiving sources.&lt;br /&gt;
* Very recent versions of some of those tools may be required. At the time of writing, notably gettext 0.19.3 or later is required.&lt;br /&gt;
* If any of the above is missing, expect the build to fail at some point.&lt;br /&gt;
* If targeting an Android-x86 device, &#039;&#039;yasm&#039;&#039; must be installed too.&lt;br /&gt;
&lt;br /&gt;
Precise lists of tools dependencies is listed [https://git.videolan.org/?p=vlc.git;a=blob;f=extras/tools/bootstrap;h=e60e5ebf93e69e7bb731e80d0fbc6ebd1226dfdb;hb=HEAD#l73 here].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color: #ff0000&amp;quot;&amp;gt;&#039;&#039;&#039;64-bit users&#039;&#039;&#039;&amp;lt;/span&amp;gt;: You must install these 32-bit libs as specified here: [[AndroidCompile#Can.27t_run_aapt_or_adb_on_Linux_64-bit]]&lt;br /&gt;
&lt;br /&gt;
==== Example on Ubuntu ====&lt;br /&gt;
Install the packages as follow:&lt;br /&gt;
 sudo apt-get install automake ant autopoint cmake build-essential libtool \&lt;br /&gt;
      patch pkg-config protobuf-compiler ragel subversion unzip git \&lt;br /&gt;
     openjdk-8-jre openjdk-8-jdk flex&lt;br /&gt;
&lt;br /&gt;
=== SDK &amp;amp; Android Studio ===&lt;br /&gt;
# Go to [http://developer.android.com/sdk/index.html Android SDK/IDE page].&lt;br /&gt;
# Android Studio is recommended, but not mandatory!&lt;br /&gt;
# Download the command-line tools&lt;br /&gt;
&lt;br /&gt;
 mkdir android-sdk&lt;br /&gt;
 cd android-sdk; unzip tools_r25.2.3-linux.zip&lt;br /&gt;
 ./tools/bin/sdkmanager --update&lt;br /&gt;
&lt;br /&gt;
===Android NDK===&lt;br /&gt;
# Check that the SDK installation is correct. &lt;br /&gt;
# Go to the [https://developer.android.com/ndk/downloads/index.html Android NDK page] and download the &#039;&#039;&#039;NDK r14b&#039;&#039;&#039; for Linux. &lt;br /&gt;
# Decompress it to install&lt;br /&gt;
&lt;br /&gt;
== Environment setup  ==&lt;br /&gt;
Set &#039;&#039;&#039;$ANDROID_SDK&#039;&#039;&#039; to point to your Android SDK directory &lt;br /&gt;
&lt;br /&gt;
 export ANDROID_SDK=/path/to/android-sdk&lt;br /&gt;
&lt;br /&gt;
Set &#039;&#039;&#039;$ANDROID_NDK&#039;&#039;&#039; to point to your Android NDK directory &lt;br /&gt;
&lt;br /&gt;
 export ANDROID_NDK=/path/to/android-ndk&lt;br /&gt;
&lt;br /&gt;
Add some useful binaries to your &#039;&#039;&#039;$PATH&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
 export PATH=$PATH:$ANDROID_SDK/platform-tools:$ANDROID_SDK/tools&lt;br /&gt;
&lt;br /&gt;
== Building ==&lt;br /&gt;
=== Get VLC Source ===&lt;br /&gt;
Clone the source from the VLC git!&lt;br /&gt;
&lt;br /&gt;
In your &#039;&#039;android&#039;&#039; source folder, run: &lt;br /&gt;
&lt;br /&gt;
 git clone https://code.videolan.org/videolan/vlc-android.git&lt;br /&gt;
&lt;br /&gt;
==== Setup Gradle build system ====&lt;br /&gt;
&lt;br /&gt;
Before using Android studio to compile the app, you must run &#039;&#039;&#039;compile.sh&#039;&#039;&#039; once to set up gradle build system.&lt;br /&gt;
&lt;br /&gt;
It should automatically populate mandatory local.properties and gradle.properties files with:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;local.properties&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 sdk.dir=&amp;lt;SDK path from $ANDROID_SDK&amp;gt;&lt;br /&gt;
 ndk.dir=&amp;lt;NDK path from $ANDROID_NDK&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This sets up gradle to build with correct SDK/NDK.&lt;br /&gt;
&lt;br /&gt;
Once this first compilation has succeeded, you can build from Android Studio with the &#039;&#039;&#039;Run&#039;&#039;&#039; command.&lt;br /&gt;
&lt;br /&gt;
=== Devices ===&lt;br /&gt;
&lt;br /&gt;
Find the ABI for the target device.&lt;br /&gt;
&lt;br /&gt;
* For a normal (2012-2015 consumer phone or tablet) device (e.g. Cortex-A8 or Cortex-A9)&lt;br /&gt;
 &amp;lt;code&amp;gt;armeabi-v7a&amp;lt;/code&amp;gt;&lt;br /&gt;
* For a Tegra2 device (no [[wikipedia:ARM_architecture#Advanced_SIMD_.28NEON.29|NEON]])&lt;br /&gt;
 &amp;lt;code&amp;gt;armeabi-v7a&amp;lt;/code&amp;gt;&lt;br /&gt;
* For an ARMv6 device&lt;br /&gt;
 &amp;lt;code&amp;gt;armeabi&amp;lt;/code&amp;gt;&lt;br /&gt;
* For an ARMv6 device that does not support FPU&lt;br /&gt;
 &amp;lt;code&amp;gt;armeabi-nofpu&amp;lt;/code&amp;gt;&lt;br /&gt;
* For an ARMv5 device or the Android Emulator&lt;br /&gt;
 &amp;lt;code&amp;gt;armeabi-v5&amp;lt;/code&amp;gt;&lt;br /&gt;
* For a x86 device (e.g. Android-x86, Google TV, Logitech TV, Android x86 smartphones, etc)&lt;br /&gt;
 &amp;lt;code&amp;gt;x86&amp;lt;/code&amp;gt;&lt;br /&gt;
* For a MIPS device (i.e. Ainol Novo tablets):&lt;br /&gt;
 &amp;lt;code&amp;gt;mips&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This value must be passed to the compile.sh script&lt;br /&gt;
&lt;br /&gt;
==== Compile ====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Read&#039;&#039;&#039; compile.sh first, as it contains some very useful and important information. Then run it:&lt;br /&gt;
 sh compile.sh -a &amp;lt;ABI&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039; At this point, you will get an auto-generated debug APK in the vlc-android/build/outputs/apk folder, signed with a debug key.&lt;br /&gt;
&lt;br /&gt;
In order to build a non-debug (release, and &#039;&#039;&#039;unsigned&#039;&#039;&#039;) package:&lt;br /&gt;
 sh compile.sh release&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039; At this point, you will get an release APK in the same folder.&lt;br /&gt;
&lt;br /&gt;
==== Build LibVLC ====&lt;br /&gt;
&lt;br /&gt;
To build LibVLC, simply pass the -l option:&lt;br /&gt;
  sh compile.sh -l -a &amp;lt;ABI&amp;gt; -r&lt;br /&gt;
&lt;br /&gt;
.aar archive will be located in libvlc/build/outputs/aar/&lt;br /&gt;
&lt;br /&gt;
==== Gradle tweaks ====&lt;br /&gt;
&lt;br /&gt;
To improve gradle execution time, try these options by writing this in gradle.properties in vlc android project.&lt;br /&gt;
Or directly in your ~/.gradle/gradle.properties&lt;br /&gt;
 org.gradle.parallel=true&lt;br /&gt;
 org.gradle.configureondemand=true&lt;br /&gt;
 # If you have a BUNCH of RAM available&lt;br /&gt;
 org.gradle.daemon=true&lt;br /&gt;
 org.gradle.jvmargs=-Xmx2048M&lt;br /&gt;
&lt;br /&gt;
=== Run ===&lt;br /&gt;
Run it and enjoy!&lt;br /&gt;
&lt;br /&gt;
=== Troubleshooting ===&lt;br /&gt;
==== Compilation error on Dependencies ====&lt;br /&gt;
Sometimes, especially when gradle dependencies have been upgraded, the &#039;&#039;compile.sh&#039;&#039; will fail to refetch dependencies. Just close Android Studio and re-run the script to fix this issue.&lt;br /&gt;
&lt;br /&gt;
== Debugging ==&lt;br /&gt;
Here are some helpful links if you wish to debug VLC on Android:&lt;br /&gt;
* [http://developer.android.com/guide/developing/debugging/ddms.html DDMS] &lt;br /&gt;
* [http://developer.android.com/guide/developing/tools/logcat.html Logcat]&lt;br /&gt;
&lt;br /&gt;
===Native debugging===&lt;br /&gt;
If you run VLC Android and you get a crash that looks something like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
I/DEBUG   (  958): *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***&lt;br /&gt;
I/DEBUG   (  958): Build fingerprint: &#039;MOTO/MBTCA/sesame/XT300:2.1-update1/SESLA_U3_01.71.0/110110:user/release-keys&#039;&lt;br /&gt;
I/DEBUG   (  958): pid: 1733, tid: 1733 &amp;gt;&amp;gt;&amp;gt; org.videolan.vlc &amp;lt;&amp;lt;&amp;lt;&lt;br /&gt;
I/DEBUG   (  958): signal 11 (SIGSEGV), fault addr 4237be3c&lt;br /&gt;
I/DEBUG   (  958):  r0 423640a0  r1 7ece77ac  r2 42bccdac  r3 4237be38&lt;br /&gt;
I/DEBUG   (  958):  r4 00000000  r5 42bccdac  r6 002ed088  r7 002ed018&lt;br /&gt;
I/DEBUG   (  958):  r8 7ece78e8  r9 2bafa844  10 0000000e  fp 7ece794c&lt;br /&gt;
I/DEBUG   (  958):  ip 00002ba0  sp 7ece7784  lr 423652e4  pc 4237be3c  cpsr 60000010&lt;br /&gt;
I/DEBUG   (  958):          #00  pc 0037be3c  /data/data/org.videolan.vlc/lib/libvlcjni.so&lt;br /&gt;
I/DEBUG   (  958):          #01  lr 423652e4  /data/data/org.videolan.vlc/lib/libvlcjni.so&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You have a &#039;&#039;&#039;native crash&#039;&#039;&#039;. To debug it, you need to have compiled VLC as above and installed it on your device. Once your compiled VLC build is on your device, you can find the &#039;&#039;&#039;backtrace&#039;&#039;&#039; as follows:&lt;br /&gt;
&lt;br /&gt;
# Make sure you are in the directory that you checked out VLC-Android in.&lt;br /&gt;
# Migrate the libvlc folders. (Do this every time the code is recompiled)&lt;br /&gt;
## cp -r libvlc/jni vlc-android&lt;br /&gt;
## cp -r libvlc/libs vlc-android&lt;br /&gt;
## cp -r libvlc/obj vlc-android&lt;br /&gt;
## (This is because the libvlc and VLC for Android folders were split yet the debugger needs the object files from both.)&lt;br /&gt;
# cd vlc-android&lt;br /&gt;
# $ANDROID_NDK/ndk-gdb --verbose --force --start&lt;br /&gt;
At this point, lots of stuff will appear:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Android NDK installation path: /opt/android-ndk-r8c&lt;br /&gt;
Using default adb command: /opt/android-sdk-linux_x86/platform-tools/adb&lt;br /&gt;
ADB version found: Android Debug Bridge version 1.0.29&lt;br /&gt;
Using ADB flags: &lt;br /&gt;
Using auto-detected project path: .&lt;br /&gt;
Found package name: org.videolan.vlc&lt;br /&gt;
...bunch of stuff skipped...&lt;br /&gt;
GNU gdb (GDB) 7.3.1-gg2&lt;br /&gt;
Copyright (C) 2011 Free Software Foundation, Inc.&lt;br /&gt;
License GPLv3+: GNU GPL version 3 or later &amp;lt;http://gnu.org/licenses/gpl.html&amp;gt;&lt;br /&gt;
This is free software: you are free to change and redistribute it.&lt;br /&gt;
There is NO WARRANTY, to the extent permitted by law.  Type &amp;quot;show copying&amp;quot;&lt;br /&gt;
and &amp;quot;show warranty&amp;quot; for details.&lt;br /&gt;
This GDB was configured as &amp;quot;--host=x86_64-linux-gnu --target=arm-linux-android&amp;quot;.&lt;br /&gt;
For bug reporting instructions, please see:&lt;br /&gt;
&amp;lt;http://www.gnu.org/software/gdb/bugs/&amp;gt;.&lt;br /&gt;
Remote debugging from host 0.0.0.0&lt;br /&gt;
...bunch of stuff skipped...&lt;br /&gt;
libthread_db:td_ta_new: Victory: We can debug theads!&lt;br /&gt;
warning: Breakpoint address adjusted from 0x400deaa5 to 0x400deaa4.&lt;br /&gt;
0x40107a40 in epoll_wait () from /media/data/vlc_android/vlc-android/obj/local/armeabi/libc.so&lt;br /&gt;
(gdb)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;ol start=&amp;quot;4&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;At this point, type in &amp;quot;continue&amp;quot; and press Enter.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Perform the actions you did to make it crash. It will spit out something like this:&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Program received signal SIGSEGV, Segmentation fault.&lt;br /&gt;
0x401120ae in ?? () from /media/data/vlc_android/vlc-android/obj/local/armeabi/libc.so&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;ol start=&amp;quot;6&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Now, just type in &amp;quot;&#039;&#039;&#039;bt full&#039;&#039;&#039;&amp;quot; (excluding the quotation marks) and press Enter. That is your backtrace that you should give to the developers when they ask for it (possibly on a [http://paste.kde.org/ pastebin], too).&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
(gdb) bt full&lt;br /&gt;
#0  0x401120ae in ?? () from /media/data/vlc_android/vlc-android/obj/local/armeabi/libc.so&lt;br /&gt;
No symbol table info available.&lt;br /&gt;
#1  0x40107bd8 in abort () from /media/data/vlc_android/vlc-android/obj/local/armeabi/libc.so&lt;br /&gt;
No symbol table info available.&lt;br /&gt;
#2  0x40118e6a in __assert2 () from /media/data/vlc_android/vlc-android/obj/local/armeabi/libc.so&lt;br /&gt;
No symbol table info available.&lt;br /&gt;
#3  0x5e0cdfdc in var_SetChecked (p_this=0x40134b94, psz_name=0x5ea2fcb8 &amp;quot;rate&amp;quot;, expected_type=80, val=...) at ../../src/misc/variables.c:711&lt;br /&gt;
        i_ret = 0&lt;br /&gt;
        p_var = &amp;lt;optimized out&amp;gt;&lt;br /&gt;
        oldval = {i_int = 4742037487051810480, b_bool = 176, f_float = 2.27765068e+14, psz_string = 0x574f26b0 &amp;quot;X\270|B\001\001&amp;quot;, p_address = 0x574f26b0, &lt;br /&gt;
          p_object = 0x574f26b0, p_list = 0x574f26b0, i_time = 4742037487051810480, coords = {x = 1464805040, y = 1104091640}}&lt;br /&gt;
        __func__ = &amp;quot;var_SetChecked&amp;quot;&lt;br /&gt;
        p_priv = &amp;lt;optimized out&amp;gt;&lt;br /&gt;
#4  0x5e06dd9c in var_SetFloat (f=1.41421354, psz_name=0x5ea2fcb8 &amp;quot;rate____sample_backtrace&amp;quot;, p_obj=0x0) at ../../include/vlc_variables.h:262&lt;br /&gt;
        val = &amp;lt;optimized out&amp;gt;&lt;br /&gt;
#5  libvlc_media_player_set_rate (p_mi=0x0, rate=1.41421354) at ../../lib/media_player.c:1252&lt;br /&gt;
        p_input_thread = &amp;lt;optimized out&amp;gt;&lt;br /&gt;
#6  0x5de7bd18 in Java_org_videolan_vlc_LibVLC_setRate (env=0x41cf0470, thiz=0x8ab00021, rate=1.41421354) at jni/libvlcjni.c:678&lt;br /&gt;
        mp = 0x0&lt;br /&gt;
#7  0x4076de34 in ?? ()&lt;br /&gt;
No symbol table info available.&lt;br /&gt;
#8  0x4076de34 in ?? ()&lt;br /&gt;
No symbol table info available.&lt;br /&gt;
Backtrace stopped: previous frame identical to this frame (corrupt stack?)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Troubleshooting ==&lt;br /&gt;
=== Outdated Awk ===&lt;br /&gt;
If you receive the error message while building:&lt;br /&gt;
&lt;br /&gt;
 Android NDK: Host &#039;awk&#039; tool is outdated. Please define HOST_AWK to point to Gawk or Nawk !    &lt;br /&gt;
&lt;br /&gt;
The prebuilt version of Awk that comes with the Android NDK is outdated. Defining HOST_AWK in your environment does nothing as the system still tries to just the one that comes with the Android NDK. To get around this issue, simply rename or delete the Awk binary that comes with the Android NDK. For example to move it:&lt;br /&gt;
&lt;br /&gt;
 mv $ANDROID_NDK/prebuilt/linux-x86/bin/awk $ANDROID_NDK/prebuilt/linux-x86/bin/awk.old&lt;br /&gt;
&lt;br /&gt;
=== Can&#039;t find Ant ===&lt;br /&gt;
If you&#039;re new to Ant, please be aware that some Linux distributions don&#039;t install it in the usual spot as with other programs. Try checking to see if the directory /usr/share/java/apache-ant/bin exists and add it to your path.&lt;br /&gt;
&lt;br /&gt;
===Outdated autotools-dev===&lt;br /&gt;
If you get the following error message you may have have an outdated version of autotools-dev:&lt;br /&gt;
  Invalid configuration `arm-linux-androideabi&#039;: system `androideabi&#039; not recognized&lt;br /&gt;
You may first want to check if your distribution has any available updates for this package.  Alternatively, you can manually update your config.guess and config.sub files from here: [http://git.savannah.gnu.org/gitweb/?p=config.git;a=tree].  These files are typically located in /usr/share/misc on Debian based distributions.&lt;br /&gt;
&lt;br /&gt;
===autoreconf: automake failed with exit status: 1===&lt;br /&gt;
 automake: warnings are treated as errors&lt;br /&gt;
 configure.ac:41: warning: The &#039;AM_PROG_MKDIR_P&#039; macro is deprecated, and will soon be removed.&lt;br /&gt;
 configure.ac:41: You should use the Autoconf-provided &#039;AC_PROG_MKDIR_P&#039; macro instead,&lt;br /&gt;
 configure.ac:41: and use &#039;$(MKDIR_P)&#039; instead of &#039;$(mkdir_p)&#039;in your Makefile.am files.&lt;br /&gt;
&lt;br /&gt;
If you are using Automake 1.13 or higher, you must remove -Werror from vlc/contrib/android/gnutls/configure.ac to continue. (First reported in [http://forum.videolan.org/viewtopic.php?f=35&amp;amp;t=108927])&lt;br /&gt;
&lt;br /&gt;
===autoreconf: automake failed with exit status: 1 ===&lt;br /&gt;
 make: *** [dvdnav] Error 1&lt;br /&gt;
 ...&lt;br /&gt;
 ... error: possibly undefined macro: AM_PROG_LIBTOOL&lt;br /&gt;
&lt;br /&gt;
This error may occur when compiling with an older Linux distribution, such as Ubuntu 12.04, that doesn&#039;t meet bootstrap prerequisites. As of 2014-08-09, the master branch for vlc-ports/android.git [http://git.videolan.org/?p=vlc-ports/android.git;a=summary] lacks patch 5199 [https://patches.videolan.org/patch/5199/]. Without the patch, compile.sh builds out dated automake and autoconf that may not access libtool despite presence of a current libtool binary amongst supporting tools and a similar or more recent binary present as part of the OS.&lt;br /&gt;
&lt;br /&gt;
To work around this error, patch the master branch or update the prerequisites. For Ubuntu 12.04, upgrade autoconf, automake, and cmake as dictated by vlc/extras/tools/bootstrap.&lt;br /&gt;
&lt;br /&gt;
===Can&#039;t run aapt or adb on Linux 64-bit===&lt;br /&gt;
You must install the 32-bit libraries of the following libraries, as the precompiled Google binaries depend on them: &#039;&#039;libc6&#039;&#039;, &#039;&#039;libstdc++6&#039;&#039;, and &#039;&#039;zlib&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
New versions of Debian and/or Ubuntu require you to install i386 versions of packages:&lt;br /&gt;
 sudo dpkg --add-architecture i386&lt;br /&gt;
 sudo apt-get update&lt;br /&gt;
 sudo apt-get install zlib1g:i386 libstdc++6:i386 libc6:i386&lt;br /&gt;
&lt;br /&gt;
If you are under &#039;&#039;old versions&#039;&#039; of Ubuntu, install ia32-libs can help you solve this issue.&lt;br /&gt;
 sudo apt-get install ia32-libs&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
* [[Android Report bugs]] - Bug reporting guide for VLC-Android.&lt;br /&gt;
&lt;br /&gt;
[[Category:Building]] [[Category:Android]]&lt;/div&gt;</summary>
		<author><name>Dekans</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=AndroidCompile&amp;diff=56358</id>
		<title>AndroidCompile</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=AndroidCompile&amp;diff=56358"/>
		<updated>2018-02-16T17:07:04Z</updated>

		<summary type="html">&lt;p&gt;Dekans: /* Compile */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page is an introduction to the compilation of &#039;&#039;&#039;VLC for Android&#039;&#039;&#039; on Linux. &lt;br /&gt;
&lt;br /&gt;
==Android Studio, SDK and NDK installation==&lt;br /&gt;
&lt;br /&gt;
=== Requirements  ===&lt;br /&gt;
* You &#039;&#039;&#039;MUST&#039;&#039;&#039; build on Linux (or OSX if you know what you are doing).&lt;br /&gt;
* The following packages &#039;&#039;&#039;MUST&#039;&#039;&#039; must be installed:&lt;br /&gt;
** the GNU autotools: &#039;&#039;autoconf&#039;&#039;, &#039;&#039;libtool&#039;&#039;, &#039;&#039;automake&#039;&#039; and &#039;&#039;make&#039;&#039; (a.k.a. &#039;&#039;gmake&#039;&#039;)&lt;br /&gt;
** ...and their dependencies: &#039;&#039;m4&#039;&#039; and &#039;&#039;gawk&#039;&#039;, &#039;&#039;mawk&#039;&#039; or &#039;&#039;nawk&#039;&#039;,&lt;br /&gt;
** the GNU C and C++ compilers a.k.a. &#039;&#039;gcc&#039;&#039; and &#039;&#039;g++&#039;&#039;,&lt;br /&gt;
** some GNU build utilities: &#039;&#039;pkg-config&#039;&#039; and &#039;&#039;patch&#039;&#039;,&lt;br /&gt;
** the following other build utilities: &#039;&#039;Apache Ant&#039;&#039; (or &#039;&#039;Ant&#039;&#039;), &#039;&#039;cmake&#039;&#039;, &#039;&#039;protobuf&#039;&#039;, &#039;&#039;ragel&#039;&#039;,&lt;br /&gt;
** the Subversion and Git version control systems&lt;br /&gt;
** &#039;&#039;unzip&#039;&#039; and either &#039;&#039;curl&#039;&#039; or &#039;&#039;wget&#039;&#039; for retreiving sources.&lt;br /&gt;
* Very recent versions of some of those tools may be required. At the time of writing, notably gettext 0.19.3 or later is required.&lt;br /&gt;
* If any of the above is missing, expect the build to fail at some point.&lt;br /&gt;
* If targeting an Android-x86 device, &#039;&#039;yasm&#039;&#039; must be installed too.&lt;br /&gt;
&lt;br /&gt;
Precise lists of tools dependencies is listed [https://git.videolan.org/?p=vlc.git;a=blob;f=extras/tools/bootstrap;h=e60e5ebf93e69e7bb731e80d0fbc6ebd1226dfdb;hb=HEAD#l73 here].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color: #ff0000&amp;quot;&amp;gt;&#039;&#039;&#039;64-bit users&#039;&#039;&#039;&amp;lt;/span&amp;gt;: You must install these 32-bit libs as specified here: [[AndroidCompile#Can.27t_run_aapt_or_adb_on_Linux_64-bit]]&lt;br /&gt;
&lt;br /&gt;
==== Example on Ubuntu ====&lt;br /&gt;
Install the packages as follow:&lt;br /&gt;
 sudo apt-get install automake ant autopoint cmake build-essential libtool \&lt;br /&gt;
      patch pkg-config protobuf-compiler ragel subversion unzip git \&lt;br /&gt;
     openjdk-8-jre openjdk-8-jdk flex&lt;br /&gt;
&lt;br /&gt;
=== SDK &amp;amp; Android Studio ===&lt;br /&gt;
# Go to [http://developer.android.com/sdk/index.html Android SDK/IDE page].&lt;br /&gt;
# Android Studio is recommended, but not mandatory!&lt;br /&gt;
# Download the command-line tools&lt;br /&gt;
&lt;br /&gt;
 mkdir android-sdk&lt;br /&gt;
 cd android-sdk; unzip tools_r25.2.3-linux.zip&lt;br /&gt;
 ./tools/bin/sdkmanager --update&lt;br /&gt;
&lt;br /&gt;
===Android NDK===&lt;br /&gt;
# Check that the SDK installation is correct. &lt;br /&gt;
# Go to the [https://developer.android.com/ndk/downloads/index.html Android NDK page] and download the &#039;&#039;&#039;NDK r14b&#039;&#039;&#039; for Linux. &lt;br /&gt;
# Decompress it to install&lt;br /&gt;
&lt;br /&gt;
== Environment setup  ==&lt;br /&gt;
Set &#039;&#039;&#039;$ANDROID_SDK&#039;&#039;&#039; to point to your Android SDK directory &lt;br /&gt;
&lt;br /&gt;
 export ANDROID_SDK=/path/to/android-sdk&lt;br /&gt;
&lt;br /&gt;
Set &#039;&#039;&#039;$ANDROID_NDK&#039;&#039;&#039; to point to your Android NDK directory &lt;br /&gt;
&lt;br /&gt;
 export ANDROID_NDK=/path/to/android-ndk&lt;br /&gt;
&lt;br /&gt;
Add some useful binaries to your &#039;&#039;&#039;$PATH&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
 export PATH=$PATH:$ANDROID_SDK/platform-tools:$ANDROID_SDK/tools&lt;br /&gt;
&lt;br /&gt;
== Building ==&lt;br /&gt;
=== Get VLC Source ===&lt;br /&gt;
Clone the source from the VLC git!&lt;br /&gt;
&lt;br /&gt;
In your &#039;&#039;android&#039;&#039; source folder, run: &lt;br /&gt;
&lt;br /&gt;
 git clone https://code.videolan.org/videolan/vlc-android.git&lt;br /&gt;
&lt;br /&gt;
==== Setup Gradle build system ====&lt;br /&gt;
&lt;br /&gt;
Before using Android studio to compile the app, you must run &#039;&#039;&#039;compile.sh&#039;&#039;&#039; once to set up gradle build system.&lt;br /&gt;
&lt;br /&gt;
It should automatically populate mandatory local.properties and gradle.properties files with:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;local.properties&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 sdk.dir=&amp;lt;SDK path from $ANDROID_SDK&amp;gt;&lt;br /&gt;
 ndk.dir=&amp;lt;NDK path from $ANDROID_NDK&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This sets up gradle to build with correct SDK/NDK.&lt;br /&gt;
&lt;br /&gt;
Once this first compilation has succeeded, you can build from Android Studio with the &#039;&#039;&#039;Run&#039;&#039;&#039; command.&lt;br /&gt;
&lt;br /&gt;
=== Devices ===&lt;br /&gt;
&lt;br /&gt;
Find the ABI for the target device.&lt;br /&gt;
&lt;br /&gt;
* For a normal (2012-2015 consumer phone or tablet) device (e.g. Cortex-A8 or Cortex-A9)&lt;br /&gt;
 &amp;lt;code&amp;gt;armeabi-v7a&amp;lt;/code&amp;gt;&lt;br /&gt;
* For a Tegra2 device (no [[wikipedia:ARM_architecture#Advanced_SIMD_.28NEON.29|NEON]])&lt;br /&gt;
 &amp;lt;code&amp;gt;armeabi-v7a&amp;lt;/code&amp;gt;&lt;br /&gt;
* For an ARMv6 device&lt;br /&gt;
 &amp;lt;code&amp;gt;armeabi&amp;lt;/code&amp;gt;&lt;br /&gt;
* For an ARMv6 device that does not support FPU&lt;br /&gt;
 &amp;lt;code&amp;gt;armeabi-nofpu&amp;lt;/code&amp;gt;&lt;br /&gt;
* For an ARMv5 device or the Android Emulator&lt;br /&gt;
 &amp;lt;code&amp;gt;armeabi-v5&amp;lt;/code&amp;gt;&lt;br /&gt;
* For a x86 device (e.g. Android-x86, Google TV, Logitech TV, Android x86 smartphones, etc)&lt;br /&gt;
 &amp;lt;code&amp;gt;x86&amp;lt;/code&amp;gt;&lt;br /&gt;
* For a MIPS device (i.e. Ainol Novo tablets):&lt;br /&gt;
 &amp;lt;code&amp;gt;mips&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This value must be passed to the compile.sh script&lt;br /&gt;
&lt;br /&gt;
==== Compile ====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Read&#039;&#039;&#039; compile.sh first, as it contains some very useful and important information. Then run it:&lt;br /&gt;
 sh compile.sh -a &amp;lt;ABI&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039; At this point, you will get an auto-generated debug APK in the vlc-android/build/outputs/apk folder, signed with a debug key.&lt;br /&gt;
&lt;br /&gt;
In order to build a non-debug (release, and &#039;&#039;&#039;unsigned&#039;&#039;&#039;) package:&lt;br /&gt;
 sh compile.sh release&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039; At this point, you will get an release APK in the same folder.&lt;br /&gt;
&lt;br /&gt;
==== Gradle tweaks ====&lt;br /&gt;
&lt;br /&gt;
To improve gradle execution time, try these options by writing this in gradle.properties in vlc android project.&lt;br /&gt;
Or directly in your ~/.gradle/gradle.properties&lt;br /&gt;
 org.gradle.parallel=true&lt;br /&gt;
 org.gradle.configureondemand=true&lt;br /&gt;
 # If you have a BUNCH of RAM available&lt;br /&gt;
 org.gradle.daemon=true&lt;br /&gt;
 org.gradle.jvmargs=-Xmx2048M&lt;br /&gt;
&lt;br /&gt;
=== Run ===&lt;br /&gt;
Run it and enjoy!&lt;br /&gt;
&lt;br /&gt;
=== Troubleshooting ===&lt;br /&gt;
==== Compilation error on Dependencies ====&lt;br /&gt;
Sometimes, especially when gradle dependencies have been upgraded, the &#039;&#039;compile.sh&#039;&#039; will fail to refetch dependencies. Just close Android Studio and re-run the script to fix this issue.&lt;br /&gt;
&lt;br /&gt;
== Debugging ==&lt;br /&gt;
Here are some helpful links if you wish to debug VLC on Android:&lt;br /&gt;
* [http://developer.android.com/guide/developing/debugging/ddms.html DDMS] &lt;br /&gt;
* [http://developer.android.com/guide/developing/tools/logcat.html Logcat]&lt;br /&gt;
&lt;br /&gt;
===Native debugging===&lt;br /&gt;
If you run VLC Android and you get a crash that looks something like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
I/DEBUG   (  958): *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***&lt;br /&gt;
I/DEBUG   (  958): Build fingerprint: &#039;MOTO/MBTCA/sesame/XT300:2.1-update1/SESLA_U3_01.71.0/110110:user/release-keys&#039;&lt;br /&gt;
I/DEBUG   (  958): pid: 1733, tid: 1733 &amp;gt;&amp;gt;&amp;gt; org.videolan.vlc &amp;lt;&amp;lt;&amp;lt;&lt;br /&gt;
I/DEBUG   (  958): signal 11 (SIGSEGV), fault addr 4237be3c&lt;br /&gt;
I/DEBUG   (  958):  r0 423640a0  r1 7ece77ac  r2 42bccdac  r3 4237be38&lt;br /&gt;
I/DEBUG   (  958):  r4 00000000  r5 42bccdac  r6 002ed088  r7 002ed018&lt;br /&gt;
I/DEBUG   (  958):  r8 7ece78e8  r9 2bafa844  10 0000000e  fp 7ece794c&lt;br /&gt;
I/DEBUG   (  958):  ip 00002ba0  sp 7ece7784  lr 423652e4  pc 4237be3c  cpsr 60000010&lt;br /&gt;
I/DEBUG   (  958):          #00  pc 0037be3c  /data/data/org.videolan.vlc/lib/libvlcjni.so&lt;br /&gt;
I/DEBUG   (  958):          #01  lr 423652e4  /data/data/org.videolan.vlc/lib/libvlcjni.so&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You have a &#039;&#039;&#039;native crash&#039;&#039;&#039;. To debug it, you need to have compiled VLC as above and installed it on your device. Once your compiled VLC build is on your device, you can find the &#039;&#039;&#039;backtrace&#039;&#039;&#039; as follows:&lt;br /&gt;
&lt;br /&gt;
# Make sure you are in the directory that you checked out VLC-Android in.&lt;br /&gt;
# Migrate the libvlc folders. (Do this every time the code is recompiled)&lt;br /&gt;
## cp -r libvlc/jni vlc-android&lt;br /&gt;
## cp -r libvlc/libs vlc-android&lt;br /&gt;
## cp -r libvlc/obj vlc-android&lt;br /&gt;
## (This is because the libvlc and VLC for Android folders were split yet the debugger needs the object files from both.)&lt;br /&gt;
# cd vlc-android&lt;br /&gt;
# $ANDROID_NDK/ndk-gdb --verbose --force --start&lt;br /&gt;
At this point, lots of stuff will appear:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Android NDK installation path: /opt/android-ndk-r8c&lt;br /&gt;
Using default adb command: /opt/android-sdk-linux_x86/platform-tools/adb&lt;br /&gt;
ADB version found: Android Debug Bridge version 1.0.29&lt;br /&gt;
Using ADB flags: &lt;br /&gt;
Using auto-detected project path: .&lt;br /&gt;
Found package name: org.videolan.vlc&lt;br /&gt;
...bunch of stuff skipped...&lt;br /&gt;
GNU gdb (GDB) 7.3.1-gg2&lt;br /&gt;
Copyright (C) 2011 Free Software Foundation, Inc.&lt;br /&gt;
License GPLv3+: GNU GPL version 3 or later &amp;lt;http://gnu.org/licenses/gpl.html&amp;gt;&lt;br /&gt;
This is free software: you are free to change and redistribute it.&lt;br /&gt;
There is NO WARRANTY, to the extent permitted by law.  Type &amp;quot;show copying&amp;quot;&lt;br /&gt;
and &amp;quot;show warranty&amp;quot; for details.&lt;br /&gt;
This GDB was configured as &amp;quot;--host=x86_64-linux-gnu --target=arm-linux-android&amp;quot;.&lt;br /&gt;
For bug reporting instructions, please see:&lt;br /&gt;
&amp;lt;http://www.gnu.org/software/gdb/bugs/&amp;gt;.&lt;br /&gt;
Remote debugging from host 0.0.0.0&lt;br /&gt;
...bunch of stuff skipped...&lt;br /&gt;
libthread_db:td_ta_new: Victory: We can debug theads!&lt;br /&gt;
warning: Breakpoint address adjusted from 0x400deaa5 to 0x400deaa4.&lt;br /&gt;
0x40107a40 in epoll_wait () from /media/data/vlc_android/vlc-android/obj/local/armeabi/libc.so&lt;br /&gt;
(gdb)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;ol start=&amp;quot;4&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;At this point, type in &amp;quot;continue&amp;quot; and press Enter.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Perform the actions you did to make it crash. It will spit out something like this:&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Program received signal SIGSEGV, Segmentation fault.&lt;br /&gt;
0x401120ae in ?? () from /media/data/vlc_android/vlc-android/obj/local/armeabi/libc.so&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;ol start=&amp;quot;6&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Now, just type in &amp;quot;&#039;&#039;&#039;bt full&#039;&#039;&#039;&amp;quot; (excluding the quotation marks) and press Enter. That is your backtrace that you should give to the developers when they ask for it (possibly on a [http://paste.kde.org/ pastebin], too).&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
(gdb) bt full&lt;br /&gt;
#0  0x401120ae in ?? () from /media/data/vlc_android/vlc-android/obj/local/armeabi/libc.so&lt;br /&gt;
No symbol table info available.&lt;br /&gt;
#1  0x40107bd8 in abort () from /media/data/vlc_android/vlc-android/obj/local/armeabi/libc.so&lt;br /&gt;
No symbol table info available.&lt;br /&gt;
#2  0x40118e6a in __assert2 () from /media/data/vlc_android/vlc-android/obj/local/armeabi/libc.so&lt;br /&gt;
No symbol table info available.&lt;br /&gt;
#3  0x5e0cdfdc in var_SetChecked (p_this=0x40134b94, psz_name=0x5ea2fcb8 &amp;quot;rate&amp;quot;, expected_type=80, val=...) at ../../src/misc/variables.c:711&lt;br /&gt;
        i_ret = 0&lt;br /&gt;
        p_var = &amp;lt;optimized out&amp;gt;&lt;br /&gt;
        oldval = {i_int = 4742037487051810480, b_bool = 176, f_float = 2.27765068e+14, psz_string = 0x574f26b0 &amp;quot;X\270|B\001\001&amp;quot;, p_address = 0x574f26b0, &lt;br /&gt;
          p_object = 0x574f26b0, p_list = 0x574f26b0, i_time = 4742037487051810480, coords = {x = 1464805040, y = 1104091640}}&lt;br /&gt;
        __func__ = &amp;quot;var_SetChecked&amp;quot;&lt;br /&gt;
        p_priv = &amp;lt;optimized out&amp;gt;&lt;br /&gt;
#4  0x5e06dd9c in var_SetFloat (f=1.41421354, psz_name=0x5ea2fcb8 &amp;quot;rate____sample_backtrace&amp;quot;, p_obj=0x0) at ../../include/vlc_variables.h:262&lt;br /&gt;
        val = &amp;lt;optimized out&amp;gt;&lt;br /&gt;
#5  libvlc_media_player_set_rate (p_mi=0x0, rate=1.41421354) at ../../lib/media_player.c:1252&lt;br /&gt;
        p_input_thread = &amp;lt;optimized out&amp;gt;&lt;br /&gt;
#6  0x5de7bd18 in Java_org_videolan_vlc_LibVLC_setRate (env=0x41cf0470, thiz=0x8ab00021, rate=1.41421354) at jni/libvlcjni.c:678&lt;br /&gt;
        mp = 0x0&lt;br /&gt;
#7  0x4076de34 in ?? ()&lt;br /&gt;
No symbol table info available.&lt;br /&gt;
#8  0x4076de34 in ?? ()&lt;br /&gt;
No symbol table info available.&lt;br /&gt;
Backtrace stopped: previous frame identical to this frame (corrupt stack?)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Troubleshooting ==&lt;br /&gt;
=== Outdated Awk ===&lt;br /&gt;
If you receive the error message while building:&lt;br /&gt;
&lt;br /&gt;
 Android NDK: Host &#039;awk&#039; tool is outdated. Please define HOST_AWK to point to Gawk or Nawk !    &lt;br /&gt;
&lt;br /&gt;
The prebuilt version of Awk that comes with the Android NDK is outdated. Defining HOST_AWK in your environment does nothing as the system still tries to just the one that comes with the Android NDK. To get around this issue, simply rename or delete the Awk binary that comes with the Android NDK. For example to move it:&lt;br /&gt;
&lt;br /&gt;
 mv $ANDROID_NDK/prebuilt/linux-x86/bin/awk $ANDROID_NDK/prebuilt/linux-x86/bin/awk.old&lt;br /&gt;
&lt;br /&gt;
=== Can&#039;t find Ant ===&lt;br /&gt;
If you&#039;re new to Ant, please be aware that some Linux distributions don&#039;t install it in the usual spot as with other programs. Try checking to see if the directory /usr/share/java/apache-ant/bin exists and add it to your path.&lt;br /&gt;
&lt;br /&gt;
===Outdated autotools-dev===&lt;br /&gt;
If you get the following error message you may have have an outdated version of autotools-dev:&lt;br /&gt;
  Invalid configuration `arm-linux-androideabi&#039;: system `androideabi&#039; not recognized&lt;br /&gt;
You may first want to check if your distribution has any available updates for this package.  Alternatively, you can manually update your config.guess and config.sub files from here: [http://git.savannah.gnu.org/gitweb/?p=config.git;a=tree].  These files are typically located in /usr/share/misc on Debian based distributions.&lt;br /&gt;
&lt;br /&gt;
===autoreconf: automake failed with exit status: 1===&lt;br /&gt;
 automake: warnings are treated as errors&lt;br /&gt;
 configure.ac:41: warning: The &#039;AM_PROG_MKDIR_P&#039; macro is deprecated, and will soon be removed.&lt;br /&gt;
 configure.ac:41: You should use the Autoconf-provided &#039;AC_PROG_MKDIR_P&#039; macro instead,&lt;br /&gt;
 configure.ac:41: and use &#039;$(MKDIR_P)&#039; instead of &#039;$(mkdir_p)&#039;in your Makefile.am files.&lt;br /&gt;
&lt;br /&gt;
If you are using Automake 1.13 or higher, you must remove -Werror from vlc/contrib/android/gnutls/configure.ac to continue. (First reported in [http://forum.videolan.org/viewtopic.php?f=35&amp;amp;t=108927])&lt;br /&gt;
&lt;br /&gt;
===autoreconf: automake failed with exit status: 1 ===&lt;br /&gt;
 make: *** [dvdnav] Error 1&lt;br /&gt;
 ...&lt;br /&gt;
 ... error: possibly undefined macro: AM_PROG_LIBTOOL&lt;br /&gt;
&lt;br /&gt;
This error may occur when compiling with an older Linux distribution, such as Ubuntu 12.04, that doesn&#039;t meet bootstrap prerequisites. As of 2014-08-09, the master branch for vlc-ports/android.git [http://git.videolan.org/?p=vlc-ports/android.git;a=summary] lacks patch 5199 [https://patches.videolan.org/patch/5199/]. Without the patch, compile.sh builds out dated automake and autoconf that may not access libtool despite presence of a current libtool binary amongst supporting tools and a similar or more recent binary present as part of the OS.&lt;br /&gt;
&lt;br /&gt;
To work around this error, patch the master branch or update the prerequisites. For Ubuntu 12.04, upgrade autoconf, automake, and cmake as dictated by vlc/extras/tools/bootstrap.&lt;br /&gt;
&lt;br /&gt;
===Can&#039;t run aapt or adb on Linux 64-bit===&lt;br /&gt;
You must install the 32-bit libraries of the following libraries, as the precompiled Google binaries depend on them: &#039;&#039;libc6&#039;&#039;, &#039;&#039;libstdc++6&#039;&#039;, and &#039;&#039;zlib&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
New versions of Debian and/or Ubuntu require you to install i386 versions of packages:&lt;br /&gt;
 sudo dpkg --add-architecture i386&lt;br /&gt;
 sudo apt-get update&lt;br /&gt;
 sudo apt-get install zlib1g:i386 libstdc++6:i386 libc6:i386&lt;br /&gt;
&lt;br /&gt;
If you are under &#039;&#039;old versions&#039;&#039; of Ubuntu, install ia32-libs can help you solve this issue.&lt;br /&gt;
 sudo apt-get install ia32-libs&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
* [[Android Report bugs]] - Bug reporting guide for VLC-Android.&lt;br /&gt;
&lt;br /&gt;
[[Category:Building]] [[Category:Android]]&lt;/div&gt;</summary>
		<author><name>Dekans</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=AndroidCompile&amp;diff=56336</id>
		<title>AndroidCompile</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=AndroidCompile&amp;diff=56336"/>
		<updated>2018-01-23T10:38:59Z</updated>

		<summary type="html">&lt;p&gt;Dekans: /* Example on Ubuntu */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page is an introduction to the compilation of &#039;&#039;&#039;VLC for Android&#039;&#039;&#039; on Linux. &lt;br /&gt;
&lt;br /&gt;
==Android Studio, SDK and NDK installation==&lt;br /&gt;
&lt;br /&gt;
=== Requirements  ===&lt;br /&gt;
* You &#039;&#039;&#039;MUST&#039;&#039;&#039; build on Linux (or OSX if you know what you are doing).&lt;br /&gt;
* The following packages &#039;&#039;&#039;MUST&#039;&#039;&#039; must be installed:&lt;br /&gt;
** the GNU autotools: &#039;&#039;autoconf&#039;&#039;, &#039;&#039;libtool&#039;&#039;, &#039;&#039;automake&#039;&#039; and &#039;&#039;make&#039;&#039; (a.k.a. &#039;&#039;gmake&#039;&#039;)&lt;br /&gt;
** ...and their dependencies: &#039;&#039;m4&#039;&#039; and &#039;&#039;gawk&#039;&#039;, &#039;&#039;mawk&#039;&#039; or &#039;&#039;nawk&#039;&#039;,&lt;br /&gt;
** the GNU C and C++ compilers a.k.a. &#039;&#039;gcc&#039;&#039; and &#039;&#039;g++&#039;&#039;,&lt;br /&gt;
** some GNU build utilities: &#039;&#039;pkg-config&#039;&#039; and &#039;&#039;patch&#039;&#039;,&lt;br /&gt;
** the following other build utilities: &#039;&#039;Apache Ant&#039;&#039; (or &#039;&#039;Ant&#039;&#039;), &#039;&#039;cmake&#039;&#039;, &#039;&#039;protobuf&#039;&#039;, &#039;&#039;ragel&#039;&#039;,&lt;br /&gt;
** the Subversion and Git version control systems&lt;br /&gt;
** &#039;&#039;unzip&#039;&#039; and either &#039;&#039;curl&#039;&#039; or &#039;&#039;wget&#039;&#039; for retreiving sources.&lt;br /&gt;
* Very recent versions of some of those tools may be required. At the time of writing, notably gettext 0.19.3 or later is required.&lt;br /&gt;
* If any of the above is missing, expect the build to fail at some point.&lt;br /&gt;
* If targeting an Android-x86 device, &#039;&#039;yasm&#039;&#039; must be installed too.&lt;br /&gt;
&lt;br /&gt;
Precise lists of tools dependencies is listed [https://git.videolan.org/?p=vlc.git;a=blob;f=extras/tools/bootstrap;h=e60e5ebf93e69e7bb731e80d0fbc6ebd1226dfdb;hb=HEAD#l73 here].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color: #ff0000&amp;quot;&amp;gt;&#039;&#039;&#039;64-bit users&#039;&#039;&#039;&amp;lt;/span&amp;gt;: You must install these 32-bit libs as specified here: [[AndroidCompile#Can.27t_run_aapt_or_adb_on_Linux_64-bit]]&lt;br /&gt;
&lt;br /&gt;
==== Example on Ubuntu ====&lt;br /&gt;
Install the packages as follow:&lt;br /&gt;
 sudo apt-get install automake ant autopoint cmake build-essential libtool \&lt;br /&gt;
      patch pkg-config protobuf-compiler ragel subversion unzip git \&lt;br /&gt;
     openjdk-8-jre openjdk-8-jdk flex&lt;br /&gt;
&lt;br /&gt;
=== SDK &amp;amp; Android Studio ===&lt;br /&gt;
# Go to [http://developer.android.com/sdk/index.html Android SDK/IDE page].&lt;br /&gt;
# Android Studio is recommended, but not mandatory!&lt;br /&gt;
# Download the command-line tools&lt;br /&gt;
&lt;br /&gt;
 mkdir android-sdk&lt;br /&gt;
 cd android-sdk; unzip tools_r25.2.3-linux.zip&lt;br /&gt;
 ./tools/bin/sdkmanager --update&lt;br /&gt;
&lt;br /&gt;
===Android NDK===&lt;br /&gt;
# Check that the SDK installation is correct. &lt;br /&gt;
# Go to the [https://developer.android.com/ndk/downloads/index.html Android NDK page] and download the &#039;&#039;&#039;NDK r14b&#039;&#039;&#039; for Linux. &lt;br /&gt;
# Decompress it to install&lt;br /&gt;
&lt;br /&gt;
== Environment setup  ==&lt;br /&gt;
Set &#039;&#039;&#039;$ANDROID_SDK&#039;&#039;&#039; to point to your Android SDK directory &lt;br /&gt;
&lt;br /&gt;
 export ANDROID_SDK=/path/to/android-sdk&lt;br /&gt;
&lt;br /&gt;
Set &#039;&#039;&#039;$ANDROID_NDK&#039;&#039;&#039; to point to your Android NDK directory &lt;br /&gt;
&lt;br /&gt;
 export ANDROID_NDK=/path/to/android-ndk&lt;br /&gt;
&lt;br /&gt;
Add some useful binaries to your &#039;&#039;&#039;$PATH&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
 export PATH=$PATH:$ANDROID_SDK/platform-tools:$ANDROID_SDK/tools&lt;br /&gt;
&lt;br /&gt;
== Building ==&lt;br /&gt;
=== Get VLC Source ===&lt;br /&gt;
Clone the source from the VLC git!&lt;br /&gt;
&lt;br /&gt;
In your &#039;&#039;android&#039;&#039; source folder, run: &lt;br /&gt;
&lt;br /&gt;
 git clone https://code.videolan.org/videolan/vlc-android.git&lt;br /&gt;
&lt;br /&gt;
==== Setup Gradle build system ====&lt;br /&gt;
&lt;br /&gt;
Before using Android studio to compile the app, you must run &#039;&#039;&#039;compile.sh&#039;&#039;&#039; once to set up gradle build system.&lt;br /&gt;
&lt;br /&gt;
It should automatically populate mandatory local.properties and gradle.properties files with:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;local.properties&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 sdk.dir=&amp;lt;SDK path from $ANDROID_SDK&amp;gt;&lt;br /&gt;
 ndk.dir=&amp;lt;NDK path from $ANDROID_NDK&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This sets up gradle to build with correct SDK/NDK.&lt;br /&gt;
&lt;br /&gt;
Once this first compilation has succeeded, you can build from Android Studio with the &#039;&#039;&#039;Run&#039;&#039;&#039; command.&lt;br /&gt;
&lt;br /&gt;
=== Devices ===&lt;br /&gt;
&lt;br /&gt;
Find the ABI for the target device.&lt;br /&gt;
&lt;br /&gt;
* For a normal (2012-2015 consumer phone or tablet) device (e.g. Cortex-A8 or Cortex-A9)&lt;br /&gt;
 &amp;lt;code&amp;gt;armeabi-v7a&amp;lt;/code&amp;gt;&lt;br /&gt;
* For a Tegra2 device (no [[wikipedia:ARM_architecture#Advanced_SIMD_.28NEON.29|NEON]])&lt;br /&gt;
 &amp;lt;code&amp;gt;armeabi-v7a&amp;lt;/code&amp;gt;&lt;br /&gt;
* For an ARMv6 device&lt;br /&gt;
 &amp;lt;code&amp;gt;armeabi&amp;lt;/code&amp;gt;&lt;br /&gt;
* For an ARMv6 device that does not support FPU&lt;br /&gt;
 &amp;lt;code&amp;gt;armeabi-nofpu&amp;lt;/code&amp;gt;&lt;br /&gt;
* For an ARMv5 device or the Android Emulator&lt;br /&gt;
 &amp;lt;code&amp;gt;armeabi-v5&amp;lt;/code&amp;gt;&lt;br /&gt;
* For a x86 device (e.g. Android-x86, Google TV, Logitech TV, Android x86 smartphones, etc)&lt;br /&gt;
 &amp;lt;code&amp;gt;x86&amp;lt;/code&amp;gt;&lt;br /&gt;
* For a MIPS device (i.e. Ainol Novo tablets):&lt;br /&gt;
 &amp;lt;code&amp;gt;mips&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This value must be passed to the compile.sh script&lt;br /&gt;
&lt;br /&gt;
==== Compile ====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Read&#039;&#039;&#039; compile.sh first, as it contains some very useful and important information. Then run it:&lt;br /&gt;
 sh compile.sh -a &amp;lt;ABI&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039; At this point, you will get an auto-generated debug APK in the vlc-android/build/outputs/apk folder, signed with a debug key.&lt;br /&gt;
&lt;br /&gt;
In order to build a non-debug (release, and &#039;&#039;&#039;unsigned&#039;&#039;&#039;) package:&lt;br /&gt;
 sh compile.sh release&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039; At this point, you will get an release APK in the same folder.&lt;br /&gt;
&lt;br /&gt;
==== Gradle tweaks ====&lt;br /&gt;
&lt;br /&gt;
To improve gradle execution time, try these options by writing this in gradle.properties in vlc android project.&lt;br /&gt;
Or directly in your ~/.gradle/gradle.properties&lt;br /&gt;
 org.gradle.parallel=true&lt;br /&gt;
 org.gradle.configureondemand=true&lt;br /&gt;
 # If you have a BUNCH of RAM available&lt;br /&gt;
 org.gradle.daemon=true&lt;br /&gt;
 org.gradle.jvmargs=-Xmx2048M&lt;br /&gt;
&lt;br /&gt;
=== Run ===&lt;br /&gt;
Run it and enjoy!&lt;br /&gt;
&lt;br /&gt;
=== Troubleshooting ===&lt;br /&gt;
==== Compilation error on Dependencies ====&lt;br /&gt;
Sometimes, especially when gradle dependencies have been upgraded, the &#039;&#039;compile.sh&#039;&#039; will fail to refetch dependencies. Just close Android Studio and re-run the script to fix this issue.&lt;br /&gt;
&lt;br /&gt;
== Debugging ==&lt;br /&gt;
Here are some helpful links if you wish to debug VLC on Android:&lt;br /&gt;
* [http://developer.android.com/guide/developing/debugging/ddms.html DDMS] &lt;br /&gt;
* [http://developer.android.com/guide/developing/tools/logcat.html Logcat]&lt;br /&gt;
&lt;br /&gt;
===Native debugging===&lt;br /&gt;
If you run VLC Android and you get a crash that looks something like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
I/DEBUG   (  958): *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***&lt;br /&gt;
I/DEBUG   (  958): Build fingerprint: &#039;MOTO/MBTCA/sesame/XT300:2.1-update1/SESLA_U3_01.71.0/110110:user/release-keys&#039;&lt;br /&gt;
I/DEBUG   (  958): pid: 1733, tid: 1733 &amp;gt;&amp;gt;&amp;gt; org.videolan.vlc &amp;lt;&amp;lt;&amp;lt;&lt;br /&gt;
I/DEBUG   (  958): signal 11 (SIGSEGV), fault addr 4237be3c&lt;br /&gt;
I/DEBUG   (  958):  r0 423640a0  r1 7ece77ac  r2 42bccdac  r3 4237be38&lt;br /&gt;
I/DEBUG   (  958):  r4 00000000  r5 42bccdac  r6 002ed088  r7 002ed018&lt;br /&gt;
I/DEBUG   (  958):  r8 7ece78e8  r9 2bafa844  10 0000000e  fp 7ece794c&lt;br /&gt;
I/DEBUG   (  958):  ip 00002ba0  sp 7ece7784  lr 423652e4  pc 4237be3c  cpsr 60000010&lt;br /&gt;
I/DEBUG   (  958):          #00  pc 0037be3c  /data/data/org.videolan.vlc/lib/libvlcjni.so&lt;br /&gt;
I/DEBUG   (  958):          #01  lr 423652e4  /data/data/org.videolan.vlc/lib/libvlcjni.so&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You have a &#039;&#039;&#039;native crash&#039;&#039;&#039;. To debug it, you need to have compiled VLC as above and installed it on your device. Once your compiled VLC build is on your device, you can find the &#039;&#039;&#039;backtrace&#039;&#039;&#039; as follows:&lt;br /&gt;
&lt;br /&gt;
# Make sure you are in the directory that you checked out VLC-Android in.&lt;br /&gt;
# Migrate the libvlc folders. (Do this every time the code is recompiled)&lt;br /&gt;
## cp -r libvlc/jni vlc-android&lt;br /&gt;
## cp -r libvlc/libs vlc-android&lt;br /&gt;
## cp -r libvlc/obj vlc-android&lt;br /&gt;
## (This is because the libvlc and VLC for Android folders were split yet the debugger needs the object files from both.)&lt;br /&gt;
# cd vlc-android&lt;br /&gt;
# $ANDROID_NDK/ndk-gdb --verbose --force --start&lt;br /&gt;
At this point, lots of stuff will appear:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Android NDK installation path: /opt/android-ndk-r8c&lt;br /&gt;
Using default adb command: /opt/android-sdk-linux_x86/platform-tools/adb&lt;br /&gt;
ADB version found: Android Debug Bridge version 1.0.29&lt;br /&gt;
Using ADB flags: &lt;br /&gt;
Using auto-detected project path: .&lt;br /&gt;
Found package name: org.videolan.vlc&lt;br /&gt;
...bunch of stuff skipped...&lt;br /&gt;
GNU gdb (GDB) 7.3.1-gg2&lt;br /&gt;
Copyright (C) 2011 Free Software Foundation, Inc.&lt;br /&gt;
License GPLv3+: GNU GPL version 3 or later &amp;lt;http://gnu.org/licenses/gpl.html&amp;gt;&lt;br /&gt;
This is free software: you are free to change and redistribute it.&lt;br /&gt;
There is NO WARRANTY, to the extent permitted by law.  Type &amp;quot;show copying&amp;quot;&lt;br /&gt;
and &amp;quot;show warranty&amp;quot; for details.&lt;br /&gt;
This GDB was configured as &amp;quot;--host=x86_64-linux-gnu --target=arm-linux-android&amp;quot;.&lt;br /&gt;
For bug reporting instructions, please see:&lt;br /&gt;
&amp;lt;http://www.gnu.org/software/gdb/bugs/&amp;gt;.&lt;br /&gt;
Remote debugging from host 0.0.0.0&lt;br /&gt;
...bunch of stuff skipped...&lt;br /&gt;
libthread_db:td_ta_new: Victory: We can debug theads!&lt;br /&gt;
warning: Breakpoint address adjusted from 0x400deaa5 to 0x400deaa4.&lt;br /&gt;
0x40107a40 in epoll_wait () from /media/data/vlc_android/vlc-android/obj/local/armeabi/libc.so&lt;br /&gt;
(gdb)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;ol start=&amp;quot;4&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;At this point, type in &amp;quot;continue&amp;quot; and press Enter.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Perform the actions you did to make it crash. It will spit out something like this:&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Program received signal SIGSEGV, Segmentation fault.&lt;br /&gt;
0x401120ae in ?? () from /media/data/vlc_android/vlc-android/obj/local/armeabi/libc.so&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;ol start=&amp;quot;6&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Now, just type in &amp;quot;&#039;&#039;&#039;bt full&#039;&#039;&#039;&amp;quot; (excluding the quotation marks) and press Enter. That is your backtrace that you should give to the developers when they ask for it (possibly on a [http://paste.kde.org/ pastebin], too).&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
(gdb) bt full&lt;br /&gt;
#0  0x401120ae in ?? () from /media/data/vlc_android/vlc-android/obj/local/armeabi/libc.so&lt;br /&gt;
No symbol table info available.&lt;br /&gt;
#1  0x40107bd8 in abort () from /media/data/vlc_android/vlc-android/obj/local/armeabi/libc.so&lt;br /&gt;
No symbol table info available.&lt;br /&gt;
#2  0x40118e6a in __assert2 () from /media/data/vlc_android/vlc-android/obj/local/armeabi/libc.so&lt;br /&gt;
No symbol table info available.&lt;br /&gt;
#3  0x5e0cdfdc in var_SetChecked (p_this=0x40134b94, psz_name=0x5ea2fcb8 &amp;quot;rate&amp;quot;, expected_type=80, val=...) at ../../src/misc/variables.c:711&lt;br /&gt;
        i_ret = 0&lt;br /&gt;
        p_var = &amp;lt;optimized out&amp;gt;&lt;br /&gt;
        oldval = {i_int = 4742037487051810480, b_bool = 176, f_float = 2.27765068e+14, psz_string = 0x574f26b0 &amp;quot;X\270|B\001\001&amp;quot;, p_address = 0x574f26b0, &lt;br /&gt;
          p_object = 0x574f26b0, p_list = 0x574f26b0, i_time = 4742037487051810480, coords = {x = 1464805040, y = 1104091640}}&lt;br /&gt;
        __func__ = &amp;quot;var_SetChecked&amp;quot;&lt;br /&gt;
        p_priv = &amp;lt;optimized out&amp;gt;&lt;br /&gt;
#4  0x5e06dd9c in var_SetFloat (f=1.41421354, psz_name=0x5ea2fcb8 &amp;quot;rate____sample_backtrace&amp;quot;, p_obj=0x0) at ../../include/vlc_variables.h:262&lt;br /&gt;
        val = &amp;lt;optimized out&amp;gt;&lt;br /&gt;
#5  libvlc_media_player_set_rate (p_mi=0x0, rate=1.41421354) at ../../lib/media_player.c:1252&lt;br /&gt;
        p_input_thread = &amp;lt;optimized out&amp;gt;&lt;br /&gt;
#6  0x5de7bd18 in Java_org_videolan_vlc_LibVLC_setRate (env=0x41cf0470, thiz=0x8ab00021, rate=1.41421354) at jni/libvlcjni.c:678&lt;br /&gt;
        mp = 0x0&lt;br /&gt;
#7  0x4076de34 in ?? ()&lt;br /&gt;
No symbol table info available.&lt;br /&gt;
#8  0x4076de34 in ?? ()&lt;br /&gt;
No symbol table info available.&lt;br /&gt;
Backtrace stopped: previous frame identical to this frame (corrupt stack?)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Troubleshooting ==&lt;br /&gt;
=== Outdated Awk ===&lt;br /&gt;
If you receive the error message while building:&lt;br /&gt;
&lt;br /&gt;
 Android NDK: Host &#039;awk&#039; tool is outdated. Please define HOST_AWK to point to Gawk or Nawk !    &lt;br /&gt;
&lt;br /&gt;
The prebuilt version of Awk that comes with the Android NDK is outdated. Defining HOST_AWK in your environment does nothing as the system still tries to just the one that comes with the Android NDK. To get around this issue, simply rename or delete the Awk binary that comes with the Android NDK. For example to move it:&lt;br /&gt;
&lt;br /&gt;
 mv $ANDROID_NDK/prebuilt/linux-x86/bin/awk $ANDROID_NDK/prebuilt/linux-x86/bin/awk.old&lt;br /&gt;
&lt;br /&gt;
=== Can&#039;t find Ant ===&lt;br /&gt;
If you&#039;re new to Ant, please be aware that some Linux distributions don&#039;t install it in the usual spot as with other programs. Try checking to see if the directory /usr/share/java/apache-ant/bin exists and add it to your path.&lt;br /&gt;
&lt;br /&gt;
===Outdated autotools-dev===&lt;br /&gt;
If you get the following error message you may have have an outdated version of autotools-dev:&lt;br /&gt;
  Invalid configuration `arm-linux-androideabi&#039;: system `androideabi&#039; not recognized&lt;br /&gt;
You may first want to check if your distribution has any available updates for this package.  Alternatively, you can manually update your config.guess and config.sub files from here: [http://git.savannah.gnu.org/gitweb/?p=config.git;a=tree].  These files are typically located in /usr/share/misc on Debian based distributions.&lt;br /&gt;
&lt;br /&gt;
===autoreconf: automake failed with exit status: 1===&lt;br /&gt;
 automake: warnings are treated as errors&lt;br /&gt;
 configure.ac:41: warning: The &#039;AM_PROG_MKDIR_P&#039; macro is deprecated, and will soon be removed.&lt;br /&gt;
 configure.ac:41: You should use the Autoconf-provided &#039;AC_PROG_MKDIR_P&#039; macro instead,&lt;br /&gt;
 configure.ac:41: and use &#039;$(MKDIR_P)&#039; instead of &#039;$(mkdir_p)&#039;in your Makefile.am files.&lt;br /&gt;
&lt;br /&gt;
If you are using Automake 1.13 or higher, you must remove -Werror from vlc/contrib/android/gnutls/configure.ac to continue. (First reported in [http://forum.videolan.org/viewtopic.php?f=35&amp;amp;t=108927])&lt;br /&gt;
&lt;br /&gt;
===autoreconf: automake failed with exit status: 1 ===&lt;br /&gt;
 make: *** [dvdnav] Error 1&lt;br /&gt;
 ...&lt;br /&gt;
 ... error: possibly undefined macro: AM_PROG_LIBTOOL&lt;br /&gt;
&lt;br /&gt;
This error may occur when compiling with an older Linux distribution, such as Ubuntu 12.04, that doesn&#039;t meet bootstrap prerequisites. As of 2014-08-09, the master branch for vlc-ports/android.git [http://git.videolan.org/?p=vlc-ports/android.git;a=summary] lacks patch 5199 [https://patches.videolan.org/patch/5199/]. Without the patch, compile.sh builds out dated automake and autoconf that may not access libtool despite presence of a current libtool binary amongst supporting tools and a similar or more recent binary present as part of the OS.&lt;br /&gt;
&lt;br /&gt;
To work around this error, patch the master branch or update the prerequisites. For Ubuntu 12.04, upgrade autoconf, automake, and cmake as dictated by vlc/extras/tools/bootstrap.&lt;br /&gt;
&lt;br /&gt;
===Can&#039;t run aapt or adb on Linux 64-bit===&lt;br /&gt;
You must install the 32-bit libraries of the following libraries, as the precompiled Google binaries depend on them: &#039;&#039;libc6&#039;&#039;, &#039;&#039;libstdc++6&#039;&#039;, and &#039;&#039;zlib&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
New versions of Debian and/or Ubuntu require you to install i386 versions of packages:&lt;br /&gt;
 sudo dpkg --add-architecture i386&lt;br /&gt;
 sudo apt-get update&lt;br /&gt;
 sudo apt-get install zlib1g:i386 libstdc++6:i386 libc6:i386&lt;br /&gt;
&lt;br /&gt;
If you are under &#039;&#039;old versions&#039;&#039; of Ubuntu, install ia32-libs can help you solve this issue.&lt;br /&gt;
 sudo apt-get install ia32-libs&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
* [[Android Report bugs]] - Bug reporting guide for VLC-Android.&lt;br /&gt;
&lt;br /&gt;
[[Category:Building]] [[Category:Android]]&lt;/div&gt;</summary>
		<author><name>Dekans</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=AndroidCompile&amp;diff=33447</id>
		<title>AndroidCompile</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=AndroidCompile&amp;diff=33447"/>
		<updated>2017-07-31T11:48:54Z</updated>

		<summary type="html">&lt;p&gt;Dekans: /* Setup Gradle build system */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page is an introduction to the compilation of &#039;&#039;&#039;VLC for Android&#039;&#039;&#039; on Linux. &lt;br /&gt;
&lt;br /&gt;
==Android Studio, SDK and NDK installation==&lt;br /&gt;
&lt;br /&gt;
=== Requirements  ===&lt;br /&gt;
* You &#039;&#039;&#039;MUST&#039;&#039;&#039; build on Linux (or OSX if you know what you are doing).&lt;br /&gt;
* The following packages &#039;&#039;&#039;MUST&#039;&#039;&#039; must be installed:&lt;br /&gt;
** the GNU autotools: &#039;&#039;autoconf&#039;&#039;, &#039;&#039;libtool&#039;&#039;, &#039;&#039;automake&#039;&#039; and &#039;&#039;make&#039;&#039; (a.k.a. &#039;&#039;gmake&#039;&#039;)&lt;br /&gt;
** ...and their dependencies: &#039;&#039;m4&#039;&#039; and &#039;&#039;gawk&#039;&#039;, &#039;&#039;mawk&#039;&#039; or &#039;&#039;nawk&#039;&#039;,&lt;br /&gt;
** the GNU C and C++ compilers a.k.a. &#039;&#039;gcc&#039;&#039; and &#039;&#039;g++&#039;&#039;,&lt;br /&gt;
** some GNU build utilities: &#039;&#039;pkg-config&#039;&#039; and &#039;&#039;patch&#039;&#039;,&lt;br /&gt;
** the following other build utilities: &#039;&#039;Apache Ant&#039;&#039; (or &#039;&#039;Ant&#039;&#039;), &#039;&#039;cmake&#039;&#039;, &#039;&#039;protobuf&#039;&#039;, &#039;&#039;ragel&#039;&#039;,&lt;br /&gt;
** the Subversion and Git version control systems&lt;br /&gt;
** &#039;&#039;unzip&#039;&#039; and either &#039;&#039;curl&#039;&#039; or &#039;&#039;wget&#039;&#039; for retreiving sources.&lt;br /&gt;
* Very recent versions of some of those tools may be required. At the time of writing, notably gettext 0.19.3 or later is required.&lt;br /&gt;
* If any of the above is missing, expect the build to fail at some point.&lt;br /&gt;
* If targeting an Android-x86 device, &#039;&#039;yasm&#039;&#039; must be installed too.&lt;br /&gt;
&lt;br /&gt;
Precise lists of tools dependencies is listed [https://git.videolan.org/?p=vlc.git;a=blob;f=extras/tools/bootstrap;h=e60e5ebf93e69e7bb731e80d0fbc6ebd1226dfdb;hb=HEAD#l73 here].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color: #ff0000&amp;quot;&amp;gt;&#039;&#039;&#039;64-bit users&#039;&#039;&#039;&amp;lt;/span&amp;gt;: You must install these 32-bit libs as specified here: [[AndroidCompile#Can.27t_run_aapt_or_adb_on_Linux_64-bit]]&lt;br /&gt;
&lt;br /&gt;
==== Example on Ubuntu ====&lt;br /&gt;
Install the packages as follow:&lt;br /&gt;
 sudo apt-get install automake ant autopoint cmake build-essential libtool \&lt;br /&gt;
      patch pkg-config protobuf-compiler ragel subversion unzip git \&lt;br /&gt;
     openjdk-8-jre openjdk-8-jdk&lt;br /&gt;
&lt;br /&gt;
=== SDK &amp;amp; Android Studio ===&lt;br /&gt;
# Go to [http://developer.android.com/sdk/index.html Android SDK/IDE page].&lt;br /&gt;
# Android Studio is recommended, but not mandatory!&lt;br /&gt;
# Download the command-line tools&lt;br /&gt;
&lt;br /&gt;
 mkdir android-sdk&lt;br /&gt;
 cd android-sdk; unzip tools_r25.2.3-linux.zip&lt;br /&gt;
 ./tools/bin/sdkmanager --update&lt;br /&gt;
&lt;br /&gt;
===Android NDK===&lt;br /&gt;
# Check that the SDK installation is correct. &lt;br /&gt;
# Go to the [https://developer.android.com/ndk/downloads/index.html Android NDK page] and download the &#039;&#039;&#039;NDK r14b&#039;&#039;&#039; for Linux. &lt;br /&gt;
# Decompress it to install&lt;br /&gt;
&lt;br /&gt;
== Environment setup  ==&lt;br /&gt;
Set &#039;&#039;&#039;$ANDROID_SDK&#039;&#039;&#039; to point to your Android SDK directory &lt;br /&gt;
&lt;br /&gt;
 export ANDROID_SDK=/path/to/android-sdk&lt;br /&gt;
&lt;br /&gt;
Set &#039;&#039;&#039;$ANDROID_NDK&#039;&#039;&#039; to point to your Android NDK directory &lt;br /&gt;
&lt;br /&gt;
 export ANDROID_NDK=/path/to/android-ndk&lt;br /&gt;
&lt;br /&gt;
Add some useful binaries to your &#039;&#039;&#039;$PATH&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
 export PATH=$PATH:$ANDROID_SDK/platform-tools:$ANDROID_SDK/tools&lt;br /&gt;
&lt;br /&gt;
== Building ==&lt;br /&gt;
=== Get VLC Source ===&lt;br /&gt;
Clone the source from the VLC git!&lt;br /&gt;
&lt;br /&gt;
In your &#039;&#039;android&#039;&#039; source folder, run: &lt;br /&gt;
&lt;br /&gt;
 git clone https://code.videolan.org/videolan/vlc-android.git&lt;br /&gt;
&lt;br /&gt;
==== Setup Gradle build system ====&lt;br /&gt;
&lt;br /&gt;
Before using Android studio to compile the app, you must run &#039;&#039;&#039;compile.sh&#039;&#039;&#039; once to set up gradle build system.&lt;br /&gt;
&lt;br /&gt;
It should automatically populate mandatory local.properties and gradle.properties files with:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;local.properties&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 sdk.dir=&amp;lt;SDK path from $ANDROID_SDK&amp;gt;&lt;br /&gt;
 ndk.dir=&amp;lt;NDK path from $ANDROID_NDK&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This sets up gradle to build with correct SDK/NDK.&lt;br /&gt;
&lt;br /&gt;
Once this first compilation has succeeded, you can build from Android Studio with the &#039;&#039;&#039;Run&#039;&#039;&#039; command.&lt;br /&gt;
&lt;br /&gt;
=== Devices ===&lt;br /&gt;
&lt;br /&gt;
Find the ABI for the target device.&lt;br /&gt;
&lt;br /&gt;
* For a normal (2012-2015 consumer phone or tablet) device (e.g. Cortex-A8 or Cortex-A9)&lt;br /&gt;
 &amp;lt;code&amp;gt;armeabi-v7a&amp;lt;/code&amp;gt;&lt;br /&gt;
* For a Tegra2 device (no [[wikipedia:ARM_architecture#Advanced_SIMD_.28NEON.29|NEON]])&lt;br /&gt;
 &amp;lt;code&amp;gt;armeabi-v7a&amp;lt;/code&amp;gt;&lt;br /&gt;
* For an ARMv6 device&lt;br /&gt;
 &amp;lt;code&amp;gt;armeabi&amp;lt;/code&amp;gt;&lt;br /&gt;
* For an ARMv6 device that does not support FPU&lt;br /&gt;
 &amp;lt;code&amp;gt;armeabi-nofpu&amp;lt;/code&amp;gt;&lt;br /&gt;
* For an ARMv5 device or the Android Emulator&lt;br /&gt;
 &amp;lt;code&amp;gt;armeabi-v5&amp;lt;/code&amp;gt;&lt;br /&gt;
* For a x86 device (e.g. Android-x86, Google TV, Logitech TV, Android x86 smartphones, etc)&lt;br /&gt;
 &amp;lt;code&amp;gt;x86&amp;lt;/code&amp;gt;&lt;br /&gt;
* For a MIPS device (i.e. Ainol Novo tablets):&lt;br /&gt;
 &amp;lt;code&amp;gt;mips&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This value must be passed to the compile.sh script&lt;br /&gt;
&lt;br /&gt;
==== Compile ====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Read&#039;&#039;&#039; compile.sh first, as it contains some very useful and important information. Then run it:&lt;br /&gt;
 sh compile.sh -a &amp;lt;ABI&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039; At this point, you will get an auto-generated debug APK in the vlc-android/build/outputs/apk folder, signed with a debug key.&lt;br /&gt;
&lt;br /&gt;
In order to build a non-debug (release, and &#039;&#039;&#039;unsigned&#039;&#039;&#039;) package:&lt;br /&gt;
 sh compile.sh release&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039; At this point, you will get an release APK in the same folder.&lt;br /&gt;
&lt;br /&gt;
==== Gradle tweaks ====&lt;br /&gt;
&lt;br /&gt;
To improve gradle execution time, try these options by writing this in gradle.properties in vlc android project.&lt;br /&gt;
Or directly in your ~/.gradle/gradle.properties&lt;br /&gt;
 org.gradle.parallel=true&lt;br /&gt;
 org.gradle.configureondemand=true&lt;br /&gt;
 # If you have a BUNCH of RAM available&lt;br /&gt;
 org.gradle.daemon=true&lt;br /&gt;
 org.gradle.jvmargs=-Xmx2048M&lt;br /&gt;
&lt;br /&gt;
=== Run ===&lt;br /&gt;
Run it and enjoy!&lt;br /&gt;
&lt;br /&gt;
=== Troubleshooting ===&lt;br /&gt;
==== Compilation error on Dependencies ====&lt;br /&gt;
Sometimes, especially when gradle dependencies have been upgraded, the &#039;&#039;compile.sh&#039;&#039; will fail to refetch dependencies. Just close Android Studio and re-run the script to fix this issue.&lt;br /&gt;
&lt;br /&gt;
== Debugging ==&lt;br /&gt;
Here are some helpful links if you wish to debug VLC on Android:&lt;br /&gt;
* [http://developer.android.com/guide/developing/debugging/ddms.html DDMS] &lt;br /&gt;
* [http://developer.android.com/guide/developing/tools/logcat.html Logcat]&lt;br /&gt;
&lt;br /&gt;
===Native debugging===&lt;br /&gt;
If you run VLC Android and you get a crash that looks something like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
I/DEBUG   (  958): *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***&lt;br /&gt;
I/DEBUG   (  958): Build fingerprint: &#039;MOTO/MBTCA/sesame/XT300:2.1-update1/SESLA_U3_01.71.0/110110:user/release-keys&#039;&lt;br /&gt;
I/DEBUG   (  958): pid: 1733, tid: 1733 &amp;gt;&amp;gt;&amp;gt; org.videolan.vlc &amp;lt;&amp;lt;&amp;lt;&lt;br /&gt;
I/DEBUG   (  958): signal 11 (SIGSEGV), fault addr 4237be3c&lt;br /&gt;
I/DEBUG   (  958):  r0 423640a0  r1 7ece77ac  r2 42bccdac  r3 4237be38&lt;br /&gt;
I/DEBUG   (  958):  r4 00000000  r5 42bccdac  r6 002ed088  r7 002ed018&lt;br /&gt;
I/DEBUG   (  958):  r8 7ece78e8  r9 2bafa844  10 0000000e  fp 7ece794c&lt;br /&gt;
I/DEBUG   (  958):  ip 00002ba0  sp 7ece7784  lr 423652e4  pc 4237be3c  cpsr 60000010&lt;br /&gt;
I/DEBUG   (  958):          #00  pc 0037be3c  /data/data/org.videolan.vlc/lib/libvlcjni.so&lt;br /&gt;
I/DEBUG   (  958):          #01  lr 423652e4  /data/data/org.videolan.vlc/lib/libvlcjni.so&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You have a &#039;&#039;&#039;native crash&#039;&#039;&#039;. To debug it, you need to have compiled VLC as above and installed it on your device. Once your compiled VLC build is on your device, you can find the &#039;&#039;&#039;backtrace&#039;&#039;&#039; as follows:&lt;br /&gt;
&lt;br /&gt;
# Make sure you are in the directory that you checked out VLC-Android in.&lt;br /&gt;
# Migrate the libvlc folders. (Do this every time the code is recompiled)&lt;br /&gt;
## cp -r libvlc/jni vlc-android&lt;br /&gt;
## cp -r libvlc/libs vlc-android&lt;br /&gt;
## cp -r libvlc/obj vlc-android&lt;br /&gt;
## (This is because the libvlc and VLC for Android folders were split yet the debugger needs the object files from both.)&lt;br /&gt;
# cd vlc-android&lt;br /&gt;
# $ANDROID_NDK/ndk-gdb --verbose --force --start&lt;br /&gt;
At this point, lots of stuff will appear:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Android NDK installation path: /opt/android-ndk-r8c&lt;br /&gt;
Using default adb command: /opt/android-sdk-linux_x86/platform-tools/adb&lt;br /&gt;
ADB version found: Android Debug Bridge version 1.0.29&lt;br /&gt;
Using ADB flags: &lt;br /&gt;
Using auto-detected project path: .&lt;br /&gt;
Found package name: org.videolan.vlc&lt;br /&gt;
...bunch of stuff skipped...&lt;br /&gt;
GNU gdb (GDB) 7.3.1-gg2&lt;br /&gt;
Copyright (C) 2011 Free Software Foundation, Inc.&lt;br /&gt;
License GPLv3+: GNU GPL version 3 or later &amp;lt;http://gnu.org/licenses/gpl.html&amp;gt;&lt;br /&gt;
This is free software: you are free to change and redistribute it.&lt;br /&gt;
There is NO WARRANTY, to the extent permitted by law.  Type &amp;quot;show copying&amp;quot;&lt;br /&gt;
and &amp;quot;show warranty&amp;quot; for details.&lt;br /&gt;
This GDB was configured as &amp;quot;--host=x86_64-linux-gnu --target=arm-linux-android&amp;quot;.&lt;br /&gt;
For bug reporting instructions, please see:&lt;br /&gt;
&amp;lt;http://www.gnu.org/software/gdb/bugs/&amp;gt;.&lt;br /&gt;
Remote debugging from host 0.0.0.0&lt;br /&gt;
...bunch of stuff skipped...&lt;br /&gt;
libthread_db:td_ta_new: Victory: We can debug theads!&lt;br /&gt;
warning: Breakpoint address adjusted from 0x400deaa5 to 0x400deaa4.&lt;br /&gt;
0x40107a40 in epoll_wait () from /media/data/vlc_android/vlc-android/obj/local/armeabi/libc.so&lt;br /&gt;
(gdb)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;ol start=&amp;quot;4&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;At this point, type in &amp;quot;continue&amp;quot; and press Enter.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Perform the actions you did to make it crash. It will spit out something like this:&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Program received signal SIGSEGV, Segmentation fault.&lt;br /&gt;
0x401120ae in ?? () from /media/data/vlc_android/vlc-android/obj/local/armeabi/libc.so&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;ol start=&amp;quot;6&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Now, just type in &amp;quot;&#039;&#039;&#039;bt full&#039;&#039;&#039;&amp;quot; (excluding the quotation marks) and press Enter. That is your backtrace that you should give to the developers when they ask for it (possibly on a [http://paste.kde.org/ pastebin], too).&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
(gdb) bt full&lt;br /&gt;
#0  0x401120ae in ?? () from /media/data/vlc_android/vlc-android/obj/local/armeabi/libc.so&lt;br /&gt;
No symbol table info available.&lt;br /&gt;
#1  0x40107bd8 in abort () from /media/data/vlc_android/vlc-android/obj/local/armeabi/libc.so&lt;br /&gt;
No symbol table info available.&lt;br /&gt;
#2  0x40118e6a in __assert2 () from /media/data/vlc_android/vlc-android/obj/local/armeabi/libc.so&lt;br /&gt;
No symbol table info available.&lt;br /&gt;
#3  0x5e0cdfdc in var_SetChecked (p_this=0x40134b94, psz_name=0x5ea2fcb8 &amp;quot;rate&amp;quot;, expected_type=80, val=...) at ../../src/misc/variables.c:711&lt;br /&gt;
        i_ret = 0&lt;br /&gt;
        p_var = &amp;lt;optimized out&amp;gt;&lt;br /&gt;
        oldval = {i_int = 4742037487051810480, b_bool = 176, f_float = 2.27765068e+14, psz_string = 0x574f26b0 &amp;quot;X\270|B\001\001&amp;quot;, p_address = 0x574f26b0, &lt;br /&gt;
          p_object = 0x574f26b0, p_list = 0x574f26b0, i_time = 4742037487051810480, coords = {x = 1464805040, y = 1104091640}}&lt;br /&gt;
        __func__ = &amp;quot;var_SetChecked&amp;quot;&lt;br /&gt;
        p_priv = &amp;lt;optimized out&amp;gt;&lt;br /&gt;
#4  0x5e06dd9c in var_SetFloat (f=1.41421354, psz_name=0x5ea2fcb8 &amp;quot;rate____sample_backtrace&amp;quot;, p_obj=0x0) at ../../include/vlc_variables.h:262&lt;br /&gt;
        val = &amp;lt;optimized out&amp;gt;&lt;br /&gt;
#5  libvlc_media_player_set_rate (p_mi=0x0, rate=1.41421354) at ../../lib/media_player.c:1252&lt;br /&gt;
        p_input_thread = &amp;lt;optimized out&amp;gt;&lt;br /&gt;
#6  0x5de7bd18 in Java_org_videolan_vlc_LibVLC_setRate (env=0x41cf0470, thiz=0x8ab00021, rate=1.41421354) at jni/libvlcjni.c:678&lt;br /&gt;
        mp = 0x0&lt;br /&gt;
#7  0x4076de34 in ?? ()&lt;br /&gt;
No symbol table info available.&lt;br /&gt;
#8  0x4076de34 in ?? ()&lt;br /&gt;
No symbol table info available.&lt;br /&gt;
Backtrace stopped: previous frame identical to this frame (corrupt stack?)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Troubleshooting ==&lt;br /&gt;
=== Outdated Awk ===&lt;br /&gt;
If you receive the error message while building:&lt;br /&gt;
&lt;br /&gt;
 Android NDK: Host &#039;awk&#039; tool is outdated. Please define HOST_AWK to point to Gawk or Nawk !    &lt;br /&gt;
&lt;br /&gt;
The prebuilt version of Awk that comes with the Android NDK is outdated. Defining HOST_AWK in your environment does nothing as the system still tries to just the one that comes with the Android NDK. To get around this issue, simply rename or delete the Awk binary that comes with the Android NDK. For example to move it:&lt;br /&gt;
&lt;br /&gt;
 mv $ANDROID_NDK/prebuilt/linux-x86/bin/awk $ANDROID_NDK/prebuilt/linux-x86/bin/awk.old&lt;br /&gt;
&lt;br /&gt;
=== Can&#039;t find Ant ===&lt;br /&gt;
If you&#039;re new to Ant, please be aware that some Linux distributions don&#039;t install it in the usual spot as with other programs. Try checking to see if the directory /usr/share/java/apache-ant/bin exists and add it to your path.&lt;br /&gt;
&lt;br /&gt;
===Outdated autotools-dev===&lt;br /&gt;
If you get the following error message you may have have an outdated version of autotools-dev:&lt;br /&gt;
  Invalid configuration `arm-linux-androideabi&#039;: system `androideabi&#039; not recognized&lt;br /&gt;
You may first want to check if your distribution has any available updates for this package.  Alternatively, you can manually update your config.guess and config.sub files from here: [http://git.savannah.gnu.org/gitweb/?p=config.git;a=tree].  These files are typically located in /usr/share/misc on Debian based distributions.&lt;br /&gt;
&lt;br /&gt;
===autoreconf: automake failed with exit status: 1===&lt;br /&gt;
 automake: warnings are treated as errors&lt;br /&gt;
 configure.ac:41: warning: The &#039;AM_PROG_MKDIR_P&#039; macro is deprecated, and will soon be removed.&lt;br /&gt;
 configure.ac:41: You should use the Autoconf-provided &#039;AC_PROG_MKDIR_P&#039; macro instead,&lt;br /&gt;
 configure.ac:41: and use &#039;$(MKDIR_P)&#039; instead of &#039;$(mkdir_p)&#039;in your Makefile.am files.&lt;br /&gt;
&lt;br /&gt;
If you are using Automake 1.13 or higher, you must remove -Werror from vlc/contrib/android/gnutls/configure.ac to continue. (First reported in [http://forum.videolan.org/viewtopic.php?f=35&amp;amp;t=108927])&lt;br /&gt;
&lt;br /&gt;
===autoreconf: automake failed with exit status: 1 ===&lt;br /&gt;
 make: *** [dvdnav] Error 1&lt;br /&gt;
 ...&lt;br /&gt;
 ... error: possibly undefined macro: AM_PROG_LIBTOOL&lt;br /&gt;
&lt;br /&gt;
This error may occur when compiling with an older Linux distribution, such as Ubuntu 12.04, that doesn&#039;t meet bootstrap prerequisites. As of 2014-08-09, the master branch for vlc-ports/android.git [http://git.videolan.org/?p=vlc-ports/android.git;a=summary] lacks patch 5199 [https://patches.videolan.org/patch/5199/]. Without the patch, compile.sh builds out dated automake and autoconf that may not access libtool despite presence of a current libtool binary amongst supporting tools and a similar or more recent binary present as part of the OS.&lt;br /&gt;
&lt;br /&gt;
To work around this error, patch the master branch or update the prerequisites. For Ubuntu 12.04, upgrade autoconf, automake, and cmake as dictated by vlc/extras/tools/bootstrap.&lt;br /&gt;
&lt;br /&gt;
===Can&#039;t run aapt or adb on Linux 64-bit===&lt;br /&gt;
You must install the 32-bit libraries of the following libraries, as the precompiled Google binaries depend on them: &#039;&#039;libc6&#039;&#039;, &#039;&#039;libstdc++6&#039;&#039;, and &#039;&#039;zlib&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
New versions of Debian and/or Ubuntu require you to install i386 versions of packages:&lt;br /&gt;
 sudo dpkg --add-architecture i386&lt;br /&gt;
 sudo apt-get update&lt;br /&gt;
 sudo apt-get install zlib1g:i386 libstdc++6:i386 libc6:i386&lt;br /&gt;
&lt;br /&gt;
If you are under &#039;&#039;old versions&#039;&#039; of Ubuntu, install ia32-libs can help you solve this issue.&lt;br /&gt;
 sudo apt-get install ia32-libs&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
* [[Android Report bugs]] - Bug reporting guide for VLC-Android.&lt;br /&gt;
&lt;br /&gt;
[[Category:Building]] [[Category:Android]]&lt;/div&gt;</summary>
		<author><name>Dekans</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=AndroidCompile&amp;diff=33446</id>
		<title>AndroidCompile</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=AndroidCompile&amp;diff=33446"/>
		<updated>2017-07-31T11:47:15Z</updated>

		<summary type="html">&lt;p&gt;Dekans: /* Compile */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page is an introduction to the compilation of &#039;&#039;&#039;VLC for Android&#039;&#039;&#039; on Linux. &lt;br /&gt;
&lt;br /&gt;
==Android Studio, SDK and NDK installation==&lt;br /&gt;
&lt;br /&gt;
=== Requirements  ===&lt;br /&gt;
* You &#039;&#039;&#039;MUST&#039;&#039;&#039; build on Linux (or OSX if you know what you are doing).&lt;br /&gt;
* The following packages &#039;&#039;&#039;MUST&#039;&#039;&#039; must be installed:&lt;br /&gt;
** the GNU autotools: &#039;&#039;autoconf&#039;&#039;, &#039;&#039;libtool&#039;&#039;, &#039;&#039;automake&#039;&#039; and &#039;&#039;make&#039;&#039; (a.k.a. &#039;&#039;gmake&#039;&#039;)&lt;br /&gt;
** ...and their dependencies: &#039;&#039;m4&#039;&#039; and &#039;&#039;gawk&#039;&#039;, &#039;&#039;mawk&#039;&#039; or &#039;&#039;nawk&#039;&#039;,&lt;br /&gt;
** the GNU C and C++ compilers a.k.a. &#039;&#039;gcc&#039;&#039; and &#039;&#039;g++&#039;&#039;,&lt;br /&gt;
** some GNU build utilities: &#039;&#039;pkg-config&#039;&#039; and &#039;&#039;patch&#039;&#039;,&lt;br /&gt;
** the following other build utilities: &#039;&#039;Apache Ant&#039;&#039; (or &#039;&#039;Ant&#039;&#039;), &#039;&#039;cmake&#039;&#039;, &#039;&#039;protobuf&#039;&#039;, &#039;&#039;ragel&#039;&#039;,&lt;br /&gt;
** the Subversion and Git version control systems&lt;br /&gt;
** &#039;&#039;unzip&#039;&#039; and either &#039;&#039;curl&#039;&#039; or &#039;&#039;wget&#039;&#039; for retreiving sources.&lt;br /&gt;
* Very recent versions of some of those tools may be required. At the time of writing, notably gettext 0.19.3 or later is required.&lt;br /&gt;
* If any of the above is missing, expect the build to fail at some point.&lt;br /&gt;
* If targeting an Android-x86 device, &#039;&#039;yasm&#039;&#039; must be installed too.&lt;br /&gt;
&lt;br /&gt;
Precise lists of tools dependencies is listed [https://git.videolan.org/?p=vlc.git;a=blob;f=extras/tools/bootstrap;h=e60e5ebf93e69e7bb731e80d0fbc6ebd1226dfdb;hb=HEAD#l73 here].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color: #ff0000&amp;quot;&amp;gt;&#039;&#039;&#039;64-bit users&#039;&#039;&#039;&amp;lt;/span&amp;gt;: You must install these 32-bit libs as specified here: [[AndroidCompile#Can.27t_run_aapt_or_adb_on_Linux_64-bit]]&lt;br /&gt;
&lt;br /&gt;
==== Example on Ubuntu ====&lt;br /&gt;
Install the packages as follow:&lt;br /&gt;
 sudo apt-get install automake ant autopoint cmake build-essential libtool \&lt;br /&gt;
      patch pkg-config protobuf-compiler ragel subversion unzip git \&lt;br /&gt;
     openjdk-8-jre openjdk-8-jdk&lt;br /&gt;
&lt;br /&gt;
=== SDK &amp;amp; Android Studio ===&lt;br /&gt;
# Go to [http://developer.android.com/sdk/index.html Android SDK/IDE page].&lt;br /&gt;
# Android Studio is recommended, but not mandatory!&lt;br /&gt;
# Download the command-line tools&lt;br /&gt;
&lt;br /&gt;
 mkdir android-sdk&lt;br /&gt;
 cd android-sdk; unzip tools_r25.2.3-linux.zip&lt;br /&gt;
 ./tools/bin/sdkmanager --update&lt;br /&gt;
&lt;br /&gt;
===Android NDK===&lt;br /&gt;
# Check that the SDK installation is correct. &lt;br /&gt;
# Go to the [https://developer.android.com/ndk/downloads/index.html Android NDK page] and download the &#039;&#039;&#039;NDK r14b&#039;&#039;&#039; for Linux. &lt;br /&gt;
# Decompress it to install&lt;br /&gt;
&lt;br /&gt;
== Environment setup  ==&lt;br /&gt;
Set &#039;&#039;&#039;$ANDROID_SDK&#039;&#039;&#039; to point to your Android SDK directory &lt;br /&gt;
&lt;br /&gt;
 export ANDROID_SDK=/path/to/android-sdk&lt;br /&gt;
&lt;br /&gt;
Set &#039;&#039;&#039;$ANDROID_NDK&#039;&#039;&#039; to point to your Android NDK directory &lt;br /&gt;
&lt;br /&gt;
 export ANDROID_NDK=/path/to/android-ndk&lt;br /&gt;
&lt;br /&gt;
Add some useful binaries to your &#039;&#039;&#039;$PATH&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
 export PATH=$PATH:$ANDROID_SDK/platform-tools:$ANDROID_SDK/tools&lt;br /&gt;
&lt;br /&gt;
== Building ==&lt;br /&gt;
=== Get VLC Source ===&lt;br /&gt;
Clone the source from the VLC git!&lt;br /&gt;
&lt;br /&gt;
In your &#039;&#039;android&#039;&#039; source folder, run: &lt;br /&gt;
&lt;br /&gt;
 git clone https://code.videolan.org/videolan/vlc-android.git&lt;br /&gt;
&lt;br /&gt;
==== Setup Gradle build system ====&lt;br /&gt;
&lt;br /&gt;
Before using Android studio to compile the app, you must run &#039;&#039;&#039;compile.sh&#039;&#039;&#039; once to set up gradle build system.&lt;br /&gt;
&lt;br /&gt;
It should automatically populate mandatory local.properties and gradle.properties files with:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;local.properties&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 sdk.dir=&amp;lt;SDK path from $ANDROID_SDK&amp;gt;&lt;br /&gt;
 ndk.dir=&amp;lt;NDK path from $ANDROID_NDK&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;gradle.properties&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 keyStoreFile=/home/&#039;&#039;user&#039;&#039;/.android/debug.keystore&lt;br /&gt;
 storealias=androiddebugkey&lt;br /&gt;
 storepwd=android&lt;br /&gt;
&lt;br /&gt;
This sets up gradle to build with correct SDK/NDK and sign builds with your personal debug key.&lt;br /&gt;
&lt;br /&gt;
Once this first compilation has succeeded, you can build from Android Studio with the &#039;&#039;&#039;Run&#039;&#039;&#039; command.&lt;br /&gt;
&lt;br /&gt;
=== Devices ===&lt;br /&gt;
&lt;br /&gt;
Find the ABI for the target device.&lt;br /&gt;
&lt;br /&gt;
* For a normal (2012-2015 consumer phone or tablet) device (e.g. Cortex-A8 or Cortex-A9)&lt;br /&gt;
 &amp;lt;code&amp;gt;armeabi-v7a&amp;lt;/code&amp;gt;&lt;br /&gt;
* For a Tegra2 device (no [[wikipedia:ARM_architecture#Advanced_SIMD_.28NEON.29|NEON]])&lt;br /&gt;
 &amp;lt;code&amp;gt;armeabi-v7a&amp;lt;/code&amp;gt;&lt;br /&gt;
* For an ARMv6 device&lt;br /&gt;
 &amp;lt;code&amp;gt;armeabi&amp;lt;/code&amp;gt;&lt;br /&gt;
* For an ARMv6 device that does not support FPU&lt;br /&gt;
 &amp;lt;code&amp;gt;armeabi-nofpu&amp;lt;/code&amp;gt;&lt;br /&gt;
* For an ARMv5 device or the Android Emulator&lt;br /&gt;
 &amp;lt;code&amp;gt;armeabi-v5&amp;lt;/code&amp;gt;&lt;br /&gt;
* For a x86 device (e.g. Android-x86, Google TV, Logitech TV, Android x86 smartphones, etc)&lt;br /&gt;
 &amp;lt;code&amp;gt;x86&amp;lt;/code&amp;gt;&lt;br /&gt;
* For a MIPS device (i.e. Ainol Novo tablets):&lt;br /&gt;
 &amp;lt;code&amp;gt;mips&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This value must be passed to the compile.sh script&lt;br /&gt;
&lt;br /&gt;
==== Compile ====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Read&#039;&#039;&#039; compile.sh first, as it contains some very useful and important information. Then run it:&lt;br /&gt;
 sh compile.sh -a &amp;lt;ABI&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039; At this point, you will get an auto-generated debug APK in the vlc-android/build/outputs/apk folder, signed with a debug key.&lt;br /&gt;
&lt;br /&gt;
In order to build a non-debug (release, and &#039;&#039;&#039;unsigned&#039;&#039;&#039;) package:&lt;br /&gt;
 sh compile.sh release&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039; At this point, you will get an release APK in the same folder.&lt;br /&gt;
&lt;br /&gt;
==== Gradle tweaks ====&lt;br /&gt;
&lt;br /&gt;
To improve gradle execution time, try these options by writing this in gradle.properties in vlc android project.&lt;br /&gt;
Or directly in your ~/.gradle/gradle.properties&lt;br /&gt;
 org.gradle.parallel=true&lt;br /&gt;
 org.gradle.configureondemand=true&lt;br /&gt;
 # If you have a BUNCH of RAM available&lt;br /&gt;
 org.gradle.daemon=true&lt;br /&gt;
 org.gradle.jvmargs=-Xmx2048M&lt;br /&gt;
&lt;br /&gt;
=== Run ===&lt;br /&gt;
Run it and enjoy!&lt;br /&gt;
&lt;br /&gt;
=== Troubleshooting ===&lt;br /&gt;
==== Compilation error on Dependencies ====&lt;br /&gt;
Sometimes, especially when gradle dependencies have been upgraded, the &#039;&#039;compile.sh&#039;&#039; will fail to refetch dependencies. Just close Android Studio and re-run the script to fix this issue.&lt;br /&gt;
&lt;br /&gt;
== Debugging ==&lt;br /&gt;
Here are some helpful links if you wish to debug VLC on Android:&lt;br /&gt;
* [http://developer.android.com/guide/developing/debugging/ddms.html DDMS] &lt;br /&gt;
* [http://developer.android.com/guide/developing/tools/logcat.html Logcat]&lt;br /&gt;
&lt;br /&gt;
===Native debugging===&lt;br /&gt;
If you run VLC Android and you get a crash that looks something like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
I/DEBUG   (  958): *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***&lt;br /&gt;
I/DEBUG   (  958): Build fingerprint: &#039;MOTO/MBTCA/sesame/XT300:2.1-update1/SESLA_U3_01.71.0/110110:user/release-keys&#039;&lt;br /&gt;
I/DEBUG   (  958): pid: 1733, tid: 1733 &amp;gt;&amp;gt;&amp;gt; org.videolan.vlc &amp;lt;&amp;lt;&amp;lt;&lt;br /&gt;
I/DEBUG   (  958): signal 11 (SIGSEGV), fault addr 4237be3c&lt;br /&gt;
I/DEBUG   (  958):  r0 423640a0  r1 7ece77ac  r2 42bccdac  r3 4237be38&lt;br /&gt;
I/DEBUG   (  958):  r4 00000000  r5 42bccdac  r6 002ed088  r7 002ed018&lt;br /&gt;
I/DEBUG   (  958):  r8 7ece78e8  r9 2bafa844  10 0000000e  fp 7ece794c&lt;br /&gt;
I/DEBUG   (  958):  ip 00002ba0  sp 7ece7784  lr 423652e4  pc 4237be3c  cpsr 60000010&lt;br /&gt;
I/DEBUG   (  958):          #00  pc 0037be3c  /data/data/org.videolan.vlc/lib/libvlcjni.so&lt;br /&gt;
I/DEBUG   (  958):          #01  lr 423652e4  /data/data/org.videolan.vlc/lib/libvlcjni.so&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You have a &#039;&#039;&#039;native crash&#039;&#039;&#039;. To debug it, you need to have compiled VLC as above and installed it on your device. Once your compiled VLC build is on your device, you can find the &#039;&#039;&#039;backtrace&#039;&#039;&#039; as follows:&lt;br /&gt;
&lt;br /&gt;
# Make sure you are in the directory that you checked out VLC-Android in.&lt;br /&gt;
# Migrate the libvlc folders. (Do this every time the code is recompiled)&lt;br /&gt;
## cp -r libvlc/jni vlc-android&lt;br /&gt;
## cp -r libvlc/libs vlc-android&lt;br /&gt;
## cp -r libvlc/obj vlc-android&lt;br /&gt;
## (This is because the libvlc and VLC for Android folders were split yet the debugger needs the object files from both.)&lt;br /&gt;
# cd vlc-android&lt;br /&gt;
# $ANDROID_NDK/ndk-gdb --verbose --force --start&lt;br /&gt;
At this point, lots of stuff will appear:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Android NDK installation path: /opt/android-ndk-r8c&lt;br /&gt;
Using default adb command: /opt/android-sdk-linux_x86/platform-tools/adb&lt;br /&gt;
ADB version found: Android Debug Bridge version 1.0.29&lt;br /&gt;
Using ADB flags: &lt;br /&gt;
Using auto-detected project path: .&lt;br /&gt;
Found package name: org.videolan.vlc&lt;br /&gt;
...bunch of stuff skipped...&lt;br /&gt;
GNU gdb (GDB) 7.3.1-gg2&lt;br /&gt;
Copyright (C) 2011 Free Software Foundation, Inc.&lt;br /&gt;
License GPLv3+: GNU GPL version 3 or later &amp;lt;http://gnu.org/licenses/gpl.html&amp;gt;&lt;br /&gt;
This is free software: you are free to change and redistribute it.&lt;br /&gt;
There is NO WARRANTY, to the extent permitted by law.  Type &amp;quot;show copying&amp;quot;&lt;br /&gt;
and &amp;quot;show warranty&amp;quot; for details.&lt;br /&gt;
This GDB was configured as &amp;quot;--host=x86_64-linux-gnu --target=arm-linux-android&amp;quot;.&lt;br /&gt;
For bug reporting instructions, please see:&lt;br /&gt;
&amp;lt;http://www.gnu.org/software/gdb/bugs/&amp;gt;.&lt;br /&gt;
Remote debugging from host 0.0.0.0&lt;br /&gt;
...bunch of stuff skipped...&lt;br /&gt;
libthread_db:td_ta_new: Victory: We can debug theads!&lt;br /&gt;
warning: Breakpoint address adjusted from 0x400deaa5 to 0x400deaa4.&lt;br /&gt;
0x40107a40 in epoll_wait () from /media/data/vlc_android/vlc-android/obj/local/armeabi/libc.so&lt;br /&gt;
(gdb)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;ol start=&amp;quot;4&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;At this point, type in &amp;quot;continue&amp;quot; and press Enter.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Perform the actions you did to make it crash. It will spit out something like this:&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Program received signal SIGSEGV, Segmentation fault.&lt;br /&gt;
0x401120ae in ?? () from /media/data/vlc_android/vlc-android/obj/local/armeabi/libc.so&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;ol start=&amp;quot;6&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Now, just type in &amp;quot;&#039;&#039;&#039;bt full&#039;&#039;&#039;&amp;quot; (excluding the quotation marks) and press Enter. That is your backtrace that you should give to the developers when they ask for it (possibly on a [http://paste.kde.org/ pastebin], too).&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
(gdb) bt full&lt;br /&gt;
#0  0x401120ae in ?? () from /media/data/vlc_android/vlc-android/obj/local/armeabi/libc.so&lt;br /&gt;
No symbol table info available.&lt;br /&gt;
#1  0x40107bd8 in abort () from /media/data/vlc_android/vlc-android/obj/local/armeabi/libc.so&lt;br /&gt;
No symbol table info available.&lt;br /&gt;
#2  0x40118e6a in __assert2 () from /media/data/vlc_android/vlc-android/obj/local/armeabi/libc.so&lt;br /&gt;
No symbol table info available.&lt;br /&gt;
#3  0x5e0cdfdc in var_SetChecked (p_this=0x40134b94, psz_name=0x5ea2fcb8 &amp;quot;rate&amp;quot;, expected_type=80, val=...) at ../../src/misc/variables.c:711&lt;br /&gt;
        i_ret = 0&lt;br /&gt;
        p_var = &amp;lt;optimized out&amp;gt;&lt;br /&gt;
        oldval = {i_int = 4742037487051810480, b_bool = 176, f_float = 2.27765068e+14, psz_string = 0x574f26b0 &amp;quot;X\270|B\001\001&amp;quot;, p_address = 0x574f26b0, &lt;br /&gt;
          p_object = 0x574f26b0, p_list = 0x574f26b0, i_time = 4742037487051810480, coords = {x = 1464805040, y = 1104091640}}&lt;br /&gt;
        __func__ = &amp;quot;var_SetChecked&amp;quot;&lt;br /&gt;
        p_priv = &amp;lt;optimized out&amp;gt;&lt;br /&gt;
#4  0x5e06dd9c in var_SetFloat (f=1.41421354, psz_name=0x5ea2fcb8 &amp;quot;rate____sample_backtrace&amp;quot;, p_obj=0x0) at ../../include/vlc_variables.h:262&lt;br /&gt;
        val = &amp;lt;optimized out&amp;gt;&lt;br /&gt;
#5  libvlc_media_player_set_rate (p_mi=0x0, rate=1.41421354) at ../../lib/media_player.c:1252&lt;br /&gt;
        p_input_thread = &amp;lt;optimized out&amp;gt;&lt;br /&gt;
#6  0x5de7bd18 in Java_org_videolan_vlc_LibVLC_setRate (env=0x41cf0470, thiz=0x8ab00021, rate=1.41421354) at jni/libvlcjni.c:678&lt;br /&gt;
        mp = 0x0&lt;br /&gt;
#7  0x4076de34 in ?? ()&lt;br /&gt;
No symbol table info available.&lt;br /&gt;
#8  0x4076de34 in ?? ()&lt;br /&gt;
No symbol table info available.&lt;br /&gt;
Backtrace stopped: previous frame identical to this frame (corrupt stack?)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Troubleshooting ==&lt;br /&gt;
=== Outdated Awk ===&lt;br /&gt;
If you receive the error message while building:&lt;br /&gt;
&lt;br /&gt;
 Android NDK: Host &#039;awk&#039; tool is outdated. Please define HOST_AWK to point to Gawk or Nawk !    &lt;br /&gt;
&lt;br /&gt;
The prebuilt version of Awk that comes with the Android NDK is outdated. Defining HOST_AWK in your environment does nothing as the system still tries to just the one that comes with the Android NDK. To get around this issue, simply rename or delete the Awk binary that comes with the Android NDK. For example to move it:&lt;br /&gt;
&lt;br /&gt;
 mv $ANDROID_NDK/prebuilt/linux-x86/bin/awk $ANDROID_NDK/prebuilt/linux-x86/bin/awk.old&lt;br /&gt;
&lt;br /&gt;
=== Can&#039;t find Ant ===&lt;br /&gt;
If you&#039;re new to Ant, please be aware that some Linux distributions don&#039;t install it in the usual spot as with other programs. Try checking to see if the directory /usr/share/java/apache-ant/bin exists and add it to your path.&lt;br /&gt;
&lt;br /&gt;
===Outdated autotools-dev===&lt;br /&gt;
If you get the following error message you may have have an outdated version of autotools-dev:&lt;br /&gt;
  Invalid configuration `arm-linux-androideabi&#039;: system `androideabi&#039; not recognized&lt;br /&gt;
You may first want to check if your distribution has any available updates for this package.  Alternatively, you can manually update your config.guess and config.sub files from here: [http://git.savannah.gnu.org/gitweb/?p=config.git;a=tree].  These files are typically located in /usr/share/misc on Debian based distributions.&lt;br /&gt;
&lt;br /&gt;
===autoreconf: automake failed with exit status: 1===&lt;br /&gt;
 automake: warnings are treated as errors&lt;br /&gt;
 configure.ac:41: warning: The &#039;AM_PROG_MKDIR_P&#039; macro is deprecated, and will soon be removed.&lt;br /&gt;
 configure.ac:41: You should use the Autoconf-provided &#039;AC_PROG_MKDIR_P&#039; macro instead,&lt;br /&gt;
 configure.ac:41: and use &#039;$(MKDIR_P)&#039; instead of &#039;$(mkdir_p)&#039;in your Makefile.am files.&lt;br /&gt;
&lt;br /&gt;
If you are using Automake 1.13 or higher, you must remove -Werror from vlc/contrib/android/gnutls/configure.ac to continue. (First reported in [http://forum.videolan.org/viewtopic.php?f=35&amp;amp;t=108927])&lt;br /&gt;
&lt;br /&gt;
===autoreconf: automake failed with exit status: 1 ===&lt;br /&gt;
 make: *** [dvdnav] Error 1&lt;br /&gt;
 ...&lt;br /&gt;
 ... error: possibly undefined macro: AM_PROG_LIBTOOL&lt;br /&gt;
&lt;br /&gt;
This error may occur when compiling with an older Linux distribution, such as Ubuntu 12.04, that doesn&#039;t meet bootstrap prerequisites. As of 2014-08-09, the master branch for vlc-ports/android.git [http://git.videolan.org/?p=vlc-ports/android.git;a=summary] lacks patch 5199 [https://patches.videolan.org/patch/5199/]. Without the patch, compile.sh builds out dated automake and autoconf that may not access libtool despite presence of a current libtool binary amongst supporting tools and a similar or more recent binary present as part of the OS.&lt;br /&gt;
&lt;br /&gt;
To work around this error, patch the master branch or update the prerequisites. For Ubuntu 12.04, upgrade autoconf, automake, and cmake as dictated by vlc/extras/tools/bootstrap.&lt;br /&gt;
&lt;br /&gt;
===Can&#039;t run aapt or adb on Linux 64-bit===&lt;br /&gt;
You must install the 32-bit libraries of the following libraries, as the precompiled Google binaries depend on them: &#039;&#039;libc6&#039;&#039;, &#039;&#039;libstdc++6&#039;&#039;, and &#039;&#039;zlib&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
New versions of Debian and/or Ubuntu require you to install i386 versions of packages:&lt;br /&gt;
 sudo dpkg --add-architecture i386&lt;br /&gt;
 sudo apt-get update&lt;br /&gt;
 sudo apt-get install zlib1g:i386 libstdc++6:i386 libc6:i386&lt;br /&gt;
&lt;br /&gt;
If you are under &#039;&#039;old versions&#039;&#039; of Ubuntu, install ia32-libs can help you solve this issue.&lt;br /&gt;
 sudo apt-get install ia32-libs&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
* [[Android Report bugs]] - Bug reporting guide for VLC-Android.&lt;br /&gt;
&lt;br /&gt;
[[Category:Building]] [[Category:Android]]&lt;/div&gt;</summary>
		<author><name>Dekans</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=AndroidCompile&amp;diff=33387</id>
		<title>AndroidCompile</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=AndroidCompile&amp;diff=33387"/>
		<updated>2017-07-03T13:33:28Z</updated>

		<summary type="html">&lt;p&gt;Dekans: /* Android NDK */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page is an introduction to the compilation of &#039;&#039;&#039;VLC for Android&#039;&#039;&#039; on Linux. &lt;br /&gt;
&lt;br /&gt;
==Android Studio, SDK and NDK installation==&lt;br /&gt;
&lt;br /&gt;
=== Requirements  ===&lt;br /&gt;
* You &#039;&#039;&#039;MUST&#039;&#039;&#039; build on Linux (or OSX if you know what you are doing).&lt;br /&gt;
* The following packages &#039;&#039;&#039;MUST&#039;&#039;&#039; must be installed:&lt;br /&gt;
** the GNU autotools: &#039;&#039;autoconf&#039;&#039;, &#039;&#039;libtool&#039;&#039;, &#039;&#039;automake&#039;&#039; and &#039;&#039;make&#039;&#039; (a.k.a. &#039;&#039;gmake&#039;&#039;)&lt;br /&gt;
** ...and their dependencies: &#039;&#039;m4&#039;&#039; and &#039;&#039;gawk&#039;&#039;, &#039;&#039;mawk&#039;&#039; or &#039;&#039;nawk&#039;&#039;,&lt;br /&gt;
** the GNU C and C++ compilers a.k.a. &#039;&#039;gcc&#039;&#039; and &#039;&#039;g++&#039;&#039;,&lt;br /&gt;
** some GNU build utilities: &#039;&#039;pkg-config&#039;&#039; and &#039;&#039;patch&#039;&#039;,&lt;br /&gt;
** the following other build utilities: &#039;&#039;Apache Ant&#039;&#039; (or &#039;&#039;Ant&#039;&#039;), &#039;&#039;cmake&#039;&#039;, &#039;&#039;protobuf&#039;&#039;, &#039;&#039;ragel&#039;&#039;,&lt;br /&gt;
** the Subversion and Git version control systems&lt;br /&gt;
** &#039;&#039;unzip&#039;&#039; and either &#039;&#039;curl&#039;&#039; or &#039;&#039;wget&#039;&#039; for retreiving sources.&lt;br /&gt;
* Very recent versions of some of those tools may be required. At the time of writing, notably gettext 0.19.3 or later is required.&lt;br /&gt;
* If any of the above is missing, expect the build to fail at some point.&lt;br /&gt;
* If targeting an Android-x86 device, &#039;&#039;yasm&#039;&#039; must be installed too.&lt;br /&gt;
&lt;br /&gt;
Precise lists of tools dependencies is listed [https://git.videolan.org/?p=vlc.git;a=blob;f=extras/tools/bootstrap;h=e60e5ebf93e69e7bb731e80d0fbc6ebd1226dfdb;hb=HEAD#l73 here].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color: #ff0000&amp;quot;&amp;gt;&#039;&#039;&#039;64-bit users&#039;&#039;&#039;&amp;lt;/span&amp;gt;: You must install these 32-bit libs as specified here: [[AndroidCompile#Can.27t_run_aapt_or_adb_on_Linux_64-bit]]&lt;br /&gt;
&lt;br /&gt;
==== Example on Ubuntu ====&lt;br /&gt;
Install the packages as follow:&lt;br /&gt;
 sudo apt-get install automake ant autopoint cmake build-essential libtool \&lt;br /&gt;
      patch pkg-config protobuf-compiler ragel subversion unzip git \&lt;br /&gt;
     openjdk-8-jre openjdk-8-jdk&lt;br /&gt;
&lt;br /&gt;
=== SDK &amp;amp; Android Studio ===&lt;br /&gt;
# Go to [http://developer.android.com/sdk/index.html Android SDK/IDE page].&lt;br /&gt;
# Android Studio is recommended, but not mandatory!&lt;br /&gt;
# Download the command-line tools&lt;br /&gt;
&lt;br /&gt;
 mkdir android-sdk&lt;br /&gt;
 cd android-sdk; unzip tools_r25.2.3-linux.zip&lt;br /&gt;
 ./tools/bin/sdkmanager --update&lt;br /&gt;
&lt;br /&gt;
===Android NDK===&lt;br /&gt;
# Check that the SDK installation is correct. &lt;br /&gt;
# Go to the [https://developer.android.com/ndk/downloads/index.html Android NDK page] and download the &#039;&#039;&#039;NDK r14b&#039;&#039;&#039; for Linux. &lt;br /&gt;
# Decompress it to install&lt;br /&gt;
&lt;br /&gt;
== Environment setup  ==&lt;br /&gt;
Set &#039;&#039;&#039;$ANDROID_SDK&#039;&#039;&#039; to point to your Android SDK directory &lt;br /&gt;
&lt;br /&gt;
 export ANDROID_SDK=/path/to/android-sdk&lt;br /&gt;
&lt;br /&gt;
Set &#039;&#039;&#039;$ANDROID_NDK&#039;&#039;&#039; to point to your Android NDK directory &lt;br /&gt;
&lt;br /&gt;
 export ANDROID_NDK=/path/to/android-ndk&lt;br /&gt;
&lt;br /&gt;
Add some useful binaries to your &#039;&#039;&#039;$PATH&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
 export PATH=$PATH:$ANDROID_SDK/platform-tools:$ANDROID_SDK/tools&lt;br /&gt;
&lt;br /&gt;
== Building ==&lt;br /&gt;
=== Get VLC Source ===&lt;br /&gt;
Clone the source from the VLC git!&lt;br /&gt;
&lt;br /&gt;
In your &#039;&#039;android&#039;&#039; source folder, run: &lt;br /&gt;
&lt;br /&gt;
 git clone https://code.videolan.org/videolan/vlc-android.git&lt;br /&gt;
&lt;br /&gt;
==== Setup Gradle build system ====&lt;br /&gt;
&lt;br /&gt;
Before using Android studio to compile the app, you must run &#039;&#039;&#039;compile.sh&#039;&#039;&#039; once to set up gradle build system.&lt;br /&gt;
&lt;br /&gt;
It should automatically populate mandatory local.properties and gradle.properties files with:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;local.properties&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 sdk.dir=&amp;lt;SDK path from $ANDROID_SDK&amp;gt;&lt;br /&gt;
 ndk.dir=&amp;lt;NDK path from $ANDROID_NDK&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;gradle.properties&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 keyStoreFile=/home/&#039;&#039;user&#039;&#039;/.android/debug.keystore&lt;br /&gt;
 storealias=androiddebugkey&lt;br /&gt;
 storepwd=android&lt;br /&gt;
&lt;br /&gt;
This sets up gradle to build with correct SDK/NDK and sign builds with your personal debug key.&lt;br /&gt;
&lt;br /&gt;
Once this first compilation has succeeded, you can build from Android Studio with the &#039;&#039;&#039;Run&#039;&#039;&#039; command.&lt;br /&gt;
&lt;br /&gt;
=== Devices ===&lt;br /&gt;
&lt;br /&gt;
Find the ABI for the target device.&lt;br /&gt;
&lt;br /&gt;
* For a normal (2012-2015 consumer phone or tablet) device (e.g. Cortex-A8 or Cortex-A9)&lt;br /&gt;
 &amp;lt;code&amp;gt;armeabi-v7a&amp;lt;/code&amp;gt;&lt;br /&gt;
* For a Tegra2 device (no [[wikipedia:ARM_architecture#Advanced_SIMD_.28NEON.29|NEON]])&lt;br /&gt;
 &amp;lt;code&amp;gt;armeabi-v7a&amp;lt;/code&amp;gt;&lt;br /&gt;
* For an ARMv6 device&lt;br /&gt;
 &amp;lt;code&amp;gt;armeabi&amp;lt;/code&amp;gt;&lt;br /&gt;
* For an ARMv6 device that does not support FPU&lt;br /&gt;
 &amp;lt;code&amp;gt;armeabi-nofpu&amp;lt;/code&amp;gt;&lt;br /&gt;
* For an ARMv5 device or the Android Emulator&lt;br /&gt;
 &amp;lt;code&amp;gt;armeabi-v5&amp;lt;/code&amp;gt;&lt;br /&gt;
* For a x86 device (e.g. Android-x86, Google TV, Logitech TV, Android x86 smartphones, etc)&lt;br /&gt;
 &amp;lt;code&amp;gt;x86&amp;lt;/code&amp;gt;&lt;br /&gt;
* For a MIPS device (i.e. Ainol Novo tablets):&lt;br /&gt;
 &amp;lt;code&amp;gt;mips&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This value must be passed to the compile.sh script&lt;br /&gt;
&lt;br /&gt;
==== Compile ====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Read&#039;&#039;&#039; compile.sh first, as it contains some very useful and important information. Then run it:&lt;br /&gt;
 sh compile.sh -a &amp;lt;ABI&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039; At this point, you will get an auto-generated debug APK in the vlc-android/build/outputs/apk folder, signed with a debug key.&lt;br /&gt;
&lt;br /&gt;
In order to build a non-debug (release) package:&lt;br /&gt;
 sh compile.sh release&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039; At this point, you will get an release APK in the same folder.&lt;br /&gt;
&lt;br /&gt;
==== Gradle tweaks ====&lt;br /&gt;
&lt;br /&gt;
To improve gradle execution time, try these options by writing this in gradle.properties in vlc android project.&lt;br /&gt;
Or directly in your ~/.gradle/gradle.properties&lt;br /&gt;
 org.gradle.parallel=true&lt;br /&gt;
 org.gradle.configureondemand=true&lt;br /&gt;
 # If you have a BUNCH of RAM available&lt;br /&gt;
 org.gradle.daemon=true&lt;br /&gt;
 org.gradle.jvmargs=-Xmx2048M&lt;br /&gt;
&lt;br /&gt;
=== Run ===&lt;br /&gt;
Run it and enjoy!&lt;br /&gt;
&lt;br /&gt;
=== Troubleshooting ===&lt;br /&gt;
==== Compilation error on Dependencies ====&lt;br /&gt;
Sometimes, especially when gradle dependencies have been upgraded, the &#039;&#039;compile.sh&#039;&#039; will fail to refetch dependencies. Just close Android Studio and re-run the script to fix this issue.&lt;br /&gt;
&lt;br /&gt;
== Debugging ==&lt;br /&gt;
Here are some helpful links if you wish to debug VLC on Android:&lt;br /&gt;
* [http://developer.android.com/guide/developing/debugging/ddms.html DDMS] &lt;br /&gt;
* [http://developer.android.com/guide/developing/tools/logcat.html Logcat]&lt;br /&gt;
&lt;br /&gt;
===Native debugging===&lt;br /&gt;
If you run VLC Android and you get a crash that looks something like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
I/DEBUG   (  958): *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***&lt;br /&gt;
I/DEBUG   (  958): Build fingerprint: &#039;MOTO/MBTCA/sesame/XT300:2.1-update1/SESLA_U3_01.71.0/110110:user/release-keys&#039;&lt;br /&gt;
I/DEBUG   (  958): pid: 1733, tid: 1733 &amp;gt;&amp;gt;&amp;gt; org.videolan.vlc &amp;lt;&amp;lt;&amp;lt;&lt;br /&gt;
I/DEBUG   (  958): signal 11 (SIGSEGV), fault addr 4237be3c&lt;br /&gt;
I/DEBUG   (  958):  r0 423640a0  r1 7ece77ac  r2 42bccdac  r3 4237be38&lt;br /&gt;
I/DEBUG   (  958):  r4 00000000  r5 42bccdac  r6 002ed088  r7 002ed018&lt;br /&gt;
I/DEBUG   (  958):  r8 7ece78e8  r9 2bafa844  10 0000000e  fp 7ece794c&lt;br /&gt;
I/DEBUG   (  958):  ip 00002ba0  sp 7ece7784  lr 423652e4  pc 4237be3c  cpsr 60000010&lt;br /&gt;
I/DEBUG   (  958):          #00  pc 0037be3c  /data/data/org.videolan.vlc/lib/libvlcjni.so&lt;br /&gt;
I/DEBUG   (  958):          #01  lr 423652e4  /data/data/org.videolan.vlc/lib/libvlcjni.so&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You have a &#039;&#039;&#039;native crash&#039;&#039;&#039;. To debug it, you need to have compiled VLC as above and installed it on your device. Once your compiled VLC build is on your device, you can find the &#039;&#039;&#039;backtrace&#039;&#039;&#039; as follows:&lt;br /&gt;
&lt;br /&gt;
# Make sure you are in the directory that you checked out VLC-Android in.&lt;br /&gt;
# Migrate the libvlc folders. (Do this every time the code is recompiled)&lt;br /&gt;
## cp -r libvlc/jni vlc-android&lt;br /&gt;
## cp -r libvlc/libs vlc-android&lt;br /&gt;
## cp -r libvlc/obj vlc-android&lt;br /&gt;
## (This is because the libvlc and VLC for Android folders were split yet the debugger needs the object files from both.)&lt;br /&gt;
# cd vlc-android&lt;br /&gt;
# $ANDROID_NDK/ndk-gdb --verbose --force --start&lt;br /&gt;
At this point, lots of stuff will appear:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Android NDK installation path: /opt/android-ndk-r8c&lt;br /&gt;
Using default adb command: /opt/android-sdk-linux_x86/platform-tools/adb&lt;br /&gt;
ADB version found: Android Debug Bridge version 1.0.29&lt;br /&gt;
Using ADB flags: &lt;br /&gt;
Using auto-detected project path: .&lt;br /&gt;
Found package name: org.videolan.vlc&lt;br /&gt;
...bunch of stuff skipped...&lt;br /&gt;
GNU gdb (GDB) 7.3.1-gg2&lt;br /&gt;
Copyright (C) 2011 Free Software Foundation, Inc.&lt;br /&gt;
License GPLv3+: GNU GPL version 3 or later &amp;lt;http://gnu.org/licenses/gpl.html&amp;gt;&lt;br /&gt;
This is free software: you are free to change and redistribute it.&lt;br /&gt;
There is NO WARRANTY, to the extent permitted by law.  Type &amp;quot;show copying&amp;quot;&lt;br /&gt;
and &amp;quot;show warranty&amp;quot; for details.&lt;br /&gt;
This GDB was configured as &amp;quot;--host=x86_64-linux-gnu --target=arm-linux-android&amp;quot;.&lt;br /&gt;
For bug reporting instructions, please see:&lt;br /&gt;
&amp;lt;http://www.gnu.org/software/gdb/bugs/&amp;gt;.&lt;br /&gt;
Remote debugging from host 0.0.0.0&lt;br /&gt;
...bunch of stuff skipped...&lt;br /&gt;
libthread_db:td_ta_new: Victory: We can debug theads!&lt;br /&gt;
warning: Breakpoint address adjusted from 0x400deaa5 to 0x400deaa4.&lt;br /&gt;
0x40107a40 in epoll_wait () from /media/data/vlc_android/vlc-android/obj/local/armeabi/libc.so&lt;br /&gt;
(gdb)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;ol start=&amp;quot;4&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;At this point, type in &amp;quot;continue&amp;quot; and press Enter.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Perform the actions you did to make it crash. It will spit out something like this:&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Program received signal SIGSEGV, Segmentation fault.&lt;br /&gt;
0x401120ae in ?? () from /media/data/vlc_android/vlc-android/obj/local/armeabi/libc.so&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;ol start=&amp;quot;6&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Now, just type in &amp;quot;&#039;&#039;&#039;bt full&#039;&#039;&#039;&amp;quot; (excluding the quotation marks) and press Enter. That is your backtrace that you should give to the developers when they ask for it (possibly on a [http://paste.kde.org/ pastebin], too).&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
(gdb) bt full&lt;br /&gt;
#0  0x401120ae in ?? () from /media/data/vlc_android/vlc-android/obj/local/armeabi/libc.so&lt;br /&gt;
No symbol table info available.&lt;br /&gt;
#1  0x40107bd8 in abort () from /media/data/vlc_android/vlc-android/obj/local/armeabi/libc.so&lt;br /&gt;
No symbol table info available.&lt;br /&gt;
#2  0x40118e6a in __assert2 () from /media/data/vlc_android/vlc-android/obj/local/armeabi/libc.so&lt;br /&gt;
No symbol table info available.&lt;br /&gt;
#3  0x5e0cdfdc in var_SetChecked (p_this=0x40134b94, psz_name=0x5ea2fcb8 &amp;quot;rate&amp;quot;, expected_type=80, val=...) at ../../src/misc/variables.c:711&lt;br /&gt;
        i_ret = 0&lt;br /&gt;
        p_var = &amp;lt;optimized out&amp;gt;&lt;br /&gt;
        oldval = {i_int = 4742037487051810480, b_bool = 176, f_float = 2.27765068e+14, psz_string = 0x574f26b0 &amp;quot;X\270|B\001\001&amp;quot;, p_address = 0x574f26b0, &lt;br /&gt;
          p_object = 0x574f26b0, p_list = 0x574f26b0, i_time = 4742037487051810480, coords = {x = 1464805040, y = 1104091640}}&lt;br /&gt;
        __func__ = &amp;quot;var_SetChecked&amp;quot;&lt;br /&gt;
        p_priv = &amp;lt;optimized out&amp;gt;&lt;br /&gt;
#4  0x5e06dd9c in var_SetFloat (f=1.41421354, psz_name=0x5ea2fcb8 &amp;quot;rate____sample_backtrace&amp;quot;, p_obj=0x0) at ../../include/vlc_variables.h:262&lt;br /&gt;
        val = &amp;lt;optimized out&amp;gt;&lt;br /&gt;
#5  libvlc_media_player_set_rate (p_mi=0x0, rate=1.41421354) at ../../lib/media_player.c:1252&lt;br /&gt;
        p_input_thread = &amp;lt;optimized out&amp;gt;&lt;br /&gt;
#6  0x5de7bd18 in Java_org_videolan_vlc_LibVLC_setRate (env=0x41cf0470, thiz=0x8ab00021, rate=1.41421354) at jni/libvlcjni.c:678&lt;br /&gt;
        mp = 0x0&lt;br /&gt;
#7  0x4076de34 in ?? ()&lt;br /&gt;
No symbol table info available.&lt;br /&gt;
#8  0x4076de34 in ?? ()&lt;br /&gt;
No symbol table info available.&lt;br /&gt;
Backtrace stopped: previous frame identical to this frame (corrupt stack?)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Troubleshooting ==&lt;br /&gt;
=== Outdated Awk ===&lt;br /&gt;
If you receive the error message while building:&lt;br /&gt;
&lt;br /&gt;
 Android NDK: Host &#039;awk&#039; tool is outdated. Please define HOST_AWK to point to Gawk or Nawk !    &lt;br /&gt;
&lt;br /&gt;
The prebuilt version of Awk that comes with the Android NDK is outdated. Defining HOST_AWK in your environment does nothing as the system still tries to just the one that comes with the Android NDK. To get around this issue, simply rename or delete the Awk binary that comes with the Android NDK. For example to move it:&lt;br /&gt;
&lt;br /&gt;
 mv $ANDROID_NDK/prebuilt/linux-x86/bin/awk $ANDROID_NDK/prebuilt/linux-x86/bin/awk.old&lt;br /&gt;
&lt;br /&gt;
=== Can&#039;t find Ant ===&lt;br /&gt;
If you&#039;re new to Ant, please be aware that some Linux distributions don&#039;t install it in the usual spot as with other programs. Try checking to see if the directory /usr/share/java/apache-ant/bin exists and add it to your path.&lt;br /&gt;
&lt;br /&gt;
===Outdated autotools-dev===&lt;br /&gt;
If you get the following error message you may have have an outdated version of autotools-dev:&lt;br /&gt;
  Invalid configuration `arm-linux-androideabi&#039;: system `androideabi&#039; not recognized&lt;br /&gt;
You may first want to check if your distribution has any available updates for this package.  Alternatively, you can manually update your config.guess and config.sub files from here: [http://git.savannah.gnu.org/gitweb/?p=config.git;a=tree].  These files are typically located in /usr/share/misc on Debian based distributions.&lt;br /&gt;
&lt;br /&gt;
===autoreconf: automake failed with exit status: 1===&lt;br /&gt;
 automake: warnings are treated as errors&lt;br /&gt;
 configure.ac:41: warning: The &#039;AM_PROG_MKDIR_P&#039; macro is deprecated, and will soon be removed.&lt;br /&gt;
 configure.ac:41: You should use the Autoconf-provided &#039;AC_PROG_MKDIR_P&#039; macro instead,&lt;br /&gt;
 configure.ac:41: and use &#039;$(MKDIR_P)&#039; instead of &#039;$(mkdir_p)&#039;in your Makefile.am files.&lt;br /&gt;
&lt;br /&gt;
If you are using Automake 1.13 or higher, you must remove -Werror from vlc/contrib/android/gnutls/configure.ac to continue. (First reported in [http://forum.videolan.org/viewtopic.php?f=35&amp;amp;t=108927])&lt;br /&gt;
&lt;br /&gt;
===autoreconf: automake failed with exit status: 1 ===&lt;br /&gt;
 make: *** [dvdnav] Error 1&lt;br /&gt;
 ...&lt;br /&gt;
 ... error: possibly undefined macro: AM_PROG_LIBTOOL&lt;br /&gt;
&lt;br /&gt;
This error may occur when compiling with an older Linux distribution, such as Ubuntu 12.04, that doesn&#039;t meet bootstrap prerequisites. As of 2014-08-09, the master branch for vlc-ports/android.git [http://git.videolan.org/?p=vlc-ports/android.git;a=summary] lacks patch 5199 [https://patches.videolan.org/patch/5199/]. Without the patch, compile.sh builds out dated automake and autoconf that may not access libtool despite presence of a current libtool binary amongst supporting tools and a similar or more recent binary present as part of the OS.&lt;br /&gt;
&lt;br /&gt;
To work around this error, patch the master branch or update the prerequisites. For Ubuntu 12.04, upgrade autoconf, automake, and cmake as dictated by vlc/extras/tools/bootstrap.&lt;br /&gt;
&lt;br /&gt;
===Can&#039;t run aapt or adb on Linux 64-bit===&lt;br /&gt;
You must install the 32-bit libraries of the following libraries, as the precompiled Google binaries depend on them: &#039;&#039;libc6&#039;&#039;, &#039;&#039;libstdc++6&#039;&#039;, and &#039;&#039;zlib&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
New versions of Debian and/or Ubuntu require you to install i386 versions of packages:&lt;br /&gt;
 sudo dpkg --add-architecture i386&lt;br /&gt;
 sudo apt-get update&lt;br /&gt;
 sudo apt-get install zlib1g:i386 libstdc++6:i386 libc6:i386&lt;br /&gt;
&lt;br /&gt;
If you are under &#039;&#039;old versions&#039;&#039; of Ubuntu, install ia32-libs can help you solve this issue.&lt;br /&gt;
 sudo apt-get install ia32-libs&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
* [[Android Report bugs]] - Bug reporting guide for VLC-Android.&lt;br /&gt;
&lt;br /&gt;
[[Category:Building]] [[Category:Android]]&lt;/div&gt;</summary>
		<author><name>Dekans</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=AndroidCompile&amp;diff=31834</id>
		<title>AndroidCompile</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=AndroidCompile&amp;diff=31834"/>
		<updated>2017-02-08T10:44:56Z</updated>

		<summary type="html">&lt;p&gt;Dekans: /* Requirements */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page is an introduction to the compilation of &#039;&#039;&#039;VLC for Android&#039;&#039;&#039; on Linux. &lt;br /&gt;
&lt;br /&gt;
==Android Studio, SDK and NDK installation==&lt;br /&gt;
&lt;br /&gt;
=== Requirements  ===&lt;br /&gt;
* You &#039;&#039;&#039;MUST&#039;&#039;&#039; build on Linux (or OSX if you know what you are doing).&lt;br /&gt;
* The following packages &#039;&#039;&#039;MUST&#039;&#039;&#039; must be installed:&lt;br /&gt;
** the GNU autotools: &#039;&#039;autoconf&#039;&#039;, &#039;&#039;libtool&#039;&#039;, &#039;&#039;automake&#039;&#039; and &#039;&#039;make&#039;&#039; (a.k.a. &#039;&#039;gmake&#039;&#039;)&lt;br /&gt;
** ...and their dependencies: &#039;&#039;m4&#039;&#039; and &#039;&#039;gawk&#039;&#039;, &#039;&#039;mawk&#039;&#039; or &#039;&#039;nawk&#039;&#039;,&lt;br /&gt;
** the GNU C and C++ compilers a.k.a. &#039;&#039;gcc&#039;&#039; and &#039;&#039;g++&#039;&#039;,&lt;br /&gt;
** some GNU build utilities: &#039;&#039;pkg-config&#039;&#039; and &#039;&#039;patch&#039;&#039;,&lt;br /&gt;
** the following other build utilities: &#039;&#039;Apache Ant&#039;&#039; (or &#039;&#039;Ant&#039;&#039;), &#039;&#039;cmake&#039;&#039;, &#039;&#039;protobuf&#039;&#039;, &#039;&#039;ragel&#039;&#039;,&lt;br /&gt;
** the Subversion and Git version control systems&lt;br /&gt;
** &#039;&#039;unzip&#039;&#039; and either &#039;&#039;curl&#039;&#039; or &#039;&#039;wget&#039;&#039; for retreiving sources.&lt;br /&gt;
* Very recent versions of some of those tools may be required. At the time of writing, notably gettext 0.19.3 or later is required.&lt;br /&gt;
* If any of the above is missing, expect the build to fail at some point.&lt;br /&gt;
* If targeting an Android-x86 device, &#039;&#039;yasm&#039;&#039; must be installed too.&lt;br /&gt;
&lt;br /&gt;
Precise lists of tools dependencies is listed [https://git.videolan.org/?p=vlc.git;a=blob;f=extras/tools/bootstrap;h=e60e5ebf93e69e7bb731e80d0fbc6ebd1226dfdb;hb=HEAD#l73 here].&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color: #ff0000&amp;quot;&amp;gt;&#039;&#039;&#039;64-bit users&#039;&#039;&#039;&amp;lt;/span&amp;gt;: You must install these 32-bit libs as specified here: [[AndroidCompile#Can.27t_run_aapt_or_adb_on_Linux_64-bit]]&lt;br /&gt;
&lt;br /&gt;
==== Example on Ubuntu ====&lt;br /&gt;
Install the packages as follow:&lt;br /&gt;
 sudo apt-get install automake ant autopoint cmake build-essential libtool \&lt;br /&gt;
      patch pkg-config protobuf-compiler ragel subversion unzip git&lt;br /&gt;
&lt;br /&gt;
=== SDK &amp;amp; Android Studio ===&lt;br /&gt;
# Go to [http://developer.android.com/sdk/index.html Android SDK page].&lt;br /&gt;
# Follow instructions to install latest version of Android SDK.&lt;br /&gt;
# Android Studio is recommended, but not mandatory!&lt;br /&gt;
&lt;br /&gt;
You can have [http://developer.android.com/sdk/installing.html more details], if needed.&lt;br /&gt;
&lt;br /&gt;
===Android NDK===&lt;br /&gt;
# Check that the SDK installation is correct. &lt;br /&gt;
# Go to the [http://developer.android.com/sdk/ndk/index.html Android NDK page] and download the &#039;&#039;&#039;NDK r13&#039;&#039;&#039; for Linux. &lt;br /&gt;
# Decompress it to install&lt;br /&gt;
&lt;br /&gt;
== Environment setup  ==&lt;br /&gt;
Set &#039;&#039;&#039;$ANDROID_SDK&#039;&#039;&#039; to point to your Android SDK directory &lt;br /&gt;
&lt;br /&gt;
 export ANDROID_SDK=/path/to/android-sdk&lt;br /&gt;
&lt;br /&gt;
Set &#039;&#039;&#039;$ANDROID_NDK&#039;&#039;&#039; to point to your Android NDK directory &lt;br /&gt;
&lt;br /&gt;
 export ANDROID_NDK=/path/to/android-ndk&lt;br /&gt;
&lt;br /&gt;
Add some useful binaries to your &#039;&#039;&#039;$PATH&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
 export PATH=$PATH:$ANDROID_SDK/platform-tools:$ANDROID_SDK/tools&lt;br /&gt;
&lt;br /&gt;
== Building ==&lt;br /&gt;
=== Get VLC Source ===&lt;br /&gt;
Clone the source from the VLC git!&lt;br /&gt;
&lt;br /&gt;
In your &#039;&#039;android&#039;&#039; source folder, run: &lt;br /&gt;
&lt;br /&gt;
 git clone https://code.videolan.org/videolan/vlc-android.git&lt;br /&gt;
&lt;br /&gt;
==== Setup Gradle build system ====&lt;br /&gt;
&lt;br /&gt;
Before using Android studio to compile the app, you must run &#039;&#039;&#039;compile.sh&#039;&#039;&#039; once to set up gradle build system.&lt;br /&gt;
&lt;br /&gt;
It should automatically populate mandatory local.properties and gradle.properties files with:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;local.properties&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 sdk.dir=&amp;lt;SDK path from $ANDROID_SDK&amp;gt;&lt;br /&gt;
 ndk.dir=&amp;lt;NDK path from $ANDROID_NDK&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;gradle.properties&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 keyStoreFile=/home/&#039;&#039;user&#039;&#039;/.android/debug.keystore&lt;br /&gt;
 storealias=androiddebugkey&lt;br /&gt;
 storepwd=android&lt;br /&gt;
&lt;br /&gt;
This sets up gradle to build with correct SDK/NDK and sign builds with your personal debug key.&lt;br /&gt;
&lt;br /&gt;
Once this first compilation has succeeded, you can build from Android Studio with the &#039;&#039;&#039;Run&#039;&#039;&#039; command.&lt;br /&gt;
&lt;br /&gt;
=== Devices ===&lt;br /&gt;
&lt;br /&gt;
Find the ABI for the target device.&lt;br /&gt;
&lt;br /&gt;
* For a normal (2012-2015 consumer phone or tablet) device (e.g. Cortex-A8 or Cortex-A9)&lt;br /&gt;
 &amp;lt;code&amp;gt;armeabi-v7a&amp;lt;/code&amp;gt;&lt;br /&gt;
* For a Tegra2 device (no [[wikipedia:ARM_architecture#Advanced_SIMD_.28NEON.29|NEON]])&lt;br /&gt;
 &amp;lt;code&amp;gt;armeabi-v7a&amp;lt;/code&amp;gt;&lt;br /&gt;
* For an ARMv6 device&lt;br /&gt;
 &amp;lt;code&amp;gt;armeabi&amp;lt;/code&amp;gt;&lt;br /&gt;
* For an ARMv6 device that does not support FPU&lt;br /&gt;
 &amp;lt;code&amp;gt;armeabi-nofpu&amp;lt;/code&amp;gt;&lt;br /&gt;
* For an ARMv5 device or the Android Emulator&lt;br /&gt;
 &amp;lt;code&amp;gt;armeabi-v5&amp;lt;/code&amp;gt;&lt;br /&gt;
* For a x86 device (e.g. Android-x86, Google TV, Logitech TV, Android x86 smartphones, etc)&lt;br /&gt;
 &amp;lt;code&amp;gt;x86&amp;lt;/code&amp;gt;&lt;br /&gt;
* For a MIPS device (i.e. Ainol Novo tablets):&lt;br /&gt;
 &amp;lt;code&amp;gt;mips&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This value must be passed to the compile.sh script&lt;br /&gt;
&lt;br /&gt;
==== Compile ====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Read&#039;&#039;&#039; compile.sh first, as it contains some very useful and important information. Then run it:&lt;br /&gt;
 sh compile.sh -a &amp;lt;ABI&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039; At this point, you will get an auto-generated debug APK in the vlc-android/build/outputs/apk folder, signed with a debug key.&lt;br /&gt;
&lt;br /&gt;
In order to build a non-debug (release) package:&lt;br /&gt;
 sh compile.sh release&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039; At this point, you will get an release APK in the same folder.&lt;br /&gt;
&lt;br /&gt;
==== Gradle tweaks ====&lt;br /&gt;
&lt;br /&gt;
To improve gradle execution time, try these options by writing this in gradle.properties in vlc android project.&lt;br /&gt;
Or directly in your ~/.gradle/gradle.properties&lt;br /&gt;
 org.gradle.parallel=true&lt;br /&gt;
 org.gradle.configureondemand=true&lt;br /&gt;
 # If you have a BUNCH of RAM available&lt;br /&gt;
 org.gradle.daemon=true&lt;br /&gt;
 org.gradle.jvmargs=-Xmx2048M&lt;br /&gt;
&lt;br /&gt;
=== Run ===&lt;br /&gt;
Run it and enjoy!&lt;br /&gt;
&lt;br /&gt;
=== Troubleshooting ===&lt;br /&gt;
==== Compilation error on Dependencies ====&lt;br /&gt;
Sometimes, especially when gradle dependencies have been upgraded, the &#039;&#039;compile.sh&#039;&#039; will fail to refetch dependencies. Just close Android Studio and re-run the script to fix this issue.&lt;br /&gt;
&lt;br /&gt;
== Debugging ==&lt;br /&gt;
Here are some helpful links if you wish to debug VLC on Android:&lt;br /&gt;
* [http://developer.android.com/guide/developing/debugging/ddms.html DDMS] &lt;br /&gt;
* [http://developer.android.com/guide/developing/tools/logcat.html Logcat]&lt;br /&gt;
&lt;br /&gt;
===Native debugging===&lt;br /&gt;
If you run VLC Android and you get a crash that looks something like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
I/DEBUG   (  958): *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***&lt;br /&gt;
I/DEBUG   (  958): Build fingerprint: &#039;MOTO/MBTCA/sesame/XT300:2.1-update1/SESLA_U3_01.71.0/110110:user/release-keys&#039;&lt;br /&gt;
I/DEBUG   (  958): pid: 1733, tid: 1733 &amp;gt;&amp;gt;&amp;gt; org.videolan.vlc &amp;lt;&amp;lt;&amp;lt;&lt;br /&gt;
I/DEBUG   (  958): signal 11 (SIGSEGV), fault addr 4237be3c&lt;br /&gt;
I/DEBUG   (  958):  r0 423640a0  r1 7ece77ac  r2 42bccdac  r3 4237be38&lt;br /&gt;
I/DEBUG   (  958):  r4 00000000  r5 42bccdac  r6 002ed088  r7 002ed018&lt;br /&gt;
I/DEBUG   (  958):  r8 7ece78e8  r9 2bafa844  10 0000000e  fp 7ece794c&lt;br /&gt;
I/DEBUG   (  958):  ip 00002ba0  sp 7ece7784  lr 423652e4  pc 4237be3c  cpsr 60000010&lt;br /&gt;
I/DEBUG   (  958):          #00  pc 0037be3c  /data/data/org.videolan.vlc/lib/libvlcjni.so&lt;br /&gt;
I/DEBUG   (  958):          #01  lr 423652e4  /data/data/org.videolan.vlc/lib/libvlcjni.so&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You have a &#039;&#039;&#039;native crash&#039;&#039;&#039;. To debug it, you need to have compiled VLC as above and installed it on your device. Once your compiled VLC build is on your device, you can find the &#039;&#039;&#039;backtrace&#039;&#039;&#039; as follows:&lt;br /&gt;
&lt;br /&gt;
# Make sure you are in the directory that you checked out VLC-Android in.&lt;br /&gt;
# Migrate the libvlc folders. (Do this every time the code is recompiled)&lt;br /&gt;
## cp -r libvlc/jni vlc-android&lt;br /&gt;
## cp -r libvlc/libs vlc-android&lt;br /&gt;
## cp -r libvlc/obj vlc-android&lt;br /&gt;
## (This is because the libvlc and VLC for Android folders were split yet the debugger needs the object files from both.)&lt;br /&gt;
# cd vlc-android&lt;br /&gt;
# $ANDROID_NDK/ndk-gdb --verbose --force --start&lt;br /&gt;
At this point, lots of stuff will appear:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Android NDK installation path: /opt/android-ndk-r8c&lt;br /&gt;
Using default adb command: /opt/android-sdk-linux_x86/platform-tools/adb&lt;br /&gt;
ADB version found: Android Debug Bridge version 1.0.29&lt;br /&gt;
Using ADB flags: &lt;br /&gt;
Using auto-detected project path: .&lt;br /&gt;
Found package name: org.videolan.vlc&lt;br /&gt;
...bunch of stuff skipped...&lt;br /&gt;
GNU gdb (GDB) 7.3.1-gg2&lt;br /&gt;
Copyright (C) 2011 Free Software Foundation, Inc.&lt;br /&gt;
License GPLv3+: GNU GPL version 3 or later &amp;lt;http://gnu.org/licenses/gpl.html&amp;gt;&lt;br /&gt;
This is free software: you are free to change and redistribute it.&lt;br /&gt;
There is NO WARRANTY, to the extent permitted by law.  Type &amp;quot;show copying&amp;quot;&lt;br /&gt;
and &amp;quot;show warranty&amp;quot; for details.&lt;br /&gt;
This GDB was configured as &amp;quot;--host=x86_64-linux-gnu --target=arm-linux-android&amp;quot;.&lt;br /&gt;
For bug reporting instructions, please see:&lt;br /&gt;
&amp;lt;http://www.gnu.org/software/gdb/bugs/&amp;gt;.&lt;br /&gt;
Remote debugging from host 0.0.0.0&lt;br /&gt;
...bunch of stuff skipped...&lt;br /&gt;
libthread_db:td_ta_new: Victory: We can debug theads!&lt;br /&gt;
warning: Breakpoint address adjusted from 0x400deaa5 to 0x400deaa4.&lt;br /&gt;
0x40107a40 in epoll_wait () from /media/data/vlc_android/vlc-android/obj/local/armeabi/libc.so&lt;br /&gt;
(gdb)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;ol start=&amp;quot;4&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;At this point, type in &amp;quot;continue&amp;quot; and press Enter.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Perform the actions you did to make it crash. It will spit out something like this:&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Program received signal SIGSEGV, Segmentation fault.&lt;br /&gt;
0x401120ae in ?? () from /media/data/vlc_android/vlc-android/obj/local/armeabi/libc.so&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;ol start=&amp;quot;6&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Now, just type in &amp;quot;&#039;&#039;&#039;bt full&#039;&#039;&#039;&amp;quot; (excluding the quotation marks) and press Enter. That is your backtrace that you should give to the developers when they ask for it (possibly on a [http://paste.kde.org/ pastebin], too).&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
(gdb) bt full&lt;br /&gt;
#0  0x401120ae in ?? () from /media/data/vlc_android/vlc-android/obj/local/armeabi/libc.so&lt;br /&gt;
No symbol table info available.&lt;br /&gt;
#1  0x40107bd8 in abort () from /media/data/vlc_android/vlc-android/obj/local/armeabi/libc.so&lt;br /&gt;
No symbol table info available.&lt;br /&gt;
#2  0x40118e6a in __assert2 () from /media/data/vlc_android/vlc-android/obj/local/armeabi/libc.so&lt;br /&gt;
No symbol table info available.&lt;br /&gt;
#3  0x5e0cdfdc in var_SetChecked (p_this=0x40134b94, psz_name=0x5ea2fcb8 &amp;quot;rate&amp;quot;, expected_type=80, val=...) at ../../src/misc/variables.c:711&lt;br /&gt;
        i_ret = 0&lt;br /&gt;
        p_var = &amp;lt;optimized out&amp;gt;&lt;br /&gt;
        oldval = {i_int = 4742037487051810480, b_bool = 176, f_float = 2.27765068e+14, psz_string = 0x574f26b0 &amp;quot;X\270|B\001\001&amp;quot;, p_address = 0x574f26b0, &lt;br /&gt;
          p_object = 0x574f26b0, p_list = 0x574f26b0, i_time = 4742037487051810480, coords = {x = 1464805040, y = 1104091640}}&lt;br /&gt;
        __func__ = &amp;quot;var_SetChecked&amp;quot;&lt;br /&gt;
        p_priv = &amp;lt;optimized out&amp;gt;&lt;br /&gt;
#4  0x5e06dd9c in var_SetFloat (f=1.41421354, psz_name=0x5ea2fcb8 &amp;quot;rate____sample_backtrace&amp;quot;, p_obj=0x0) at ../../include/vlc_variables.h:262&lt;br /&gt;
        val = &amp;lt;optimized out&amp;gt;&lt;br /&gt;
#5  libvlc_media_player_set_rate (p_mi=0x0, rate=1.41421354) at ../../lib/media_player.c:1252&lt;br /&gt;
        p_input_thread = &amp;lt;optimized out&amp;gt;&lt;br /&gt;
#6  0x5de7bd18 in Java_org_videolan_vlc_LibVLC_setRate (env=0x41cf0470, thiz=0x8ab00021, rate=1.41421354) at jni/libvlcjni.c:678&lt;br /&gt;
        mp = 0x0&lt;br /&gt;
#7  0x4076de34 in ?? ()&lt;br /&gt;
No symbol table info available.&lt;br /&gt;
#8  0x4076de34 in ?? ()&lt;br /&gt;
No symbol table info available.&lt;br /&gt;
Backtrace stopped: previous frame identical to this frame (corrupt stack?)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Troubleshooting ==&lt;br /&gt;
=== Outdated Awk ===&lt;br /&gt;
If you receive the error message while building:&lt;br /&gt;
&lt;br /&gt;
 Android NDK: Host &#039;awk&#039; tool is outdated. Please define HOST_AWK to point to Gawk or Nawk !    &lt;br /&gt;
&lt;br /&gt;
The prebuilt version of Awk that comes with the Android NDK is outdated. Defining HOST_AWK in your environment does nothing as the system still tries to just the one that comes with the Android NDK. To get around this issue, simply rename or delete the Awk binary that comes with the Android NDK. For example to move it:&lt;br /&gt;
&lt;br /&gt;
 mv $ANDROID_NDK/prebuilt/linux-x86/bin/awk $ANDROID_NDK/prebuilt/linux-x86/bin/awk.old&lt;br /&gt;
&lt;br /&gt;
=== Can&#039;t find Ant ===&lt;br /&gt;
If you&#039;re new to Ant, please be aware that some Linux distributions don&#039;t install it in the usual spot as with other programs. Try checking to see if the directory /usr/share/java/apache-ant/bin exists and add it to your path.&lt;br /&gt;
&lt;br /&gt;
===Outdated autotools-dev===&lt;br /&gt;
If you get the following error message you may have have an outdated version of autotools-dev:&lt;br /&gt;
  Invalid configuration `arm-linux-androideabi&#039;: system `androideabi&#039; not recognized&lt;br /&gt;
You may first want to check if your distribution has any available updates for this package.  Alternatively, you can manually update your config.guess and config.sub files from here: [http://git.savannah.gnu.org/gitweb/?p=config.git;a=tree].  These files are typically located in /usr/share/misc on Debian based distributions.&lt;br /&gt;
&lt;br /&gt;
===autoreconf: automake failed with exit status: 1===&lt;br /&gt;
 automake: warnings are treated as errors&lt;br /&gt;
 configure.ac:41: warning: The &#039;AM_PROG_MKDIR_P&#039; macro is deprecated, and will soon be removed.&lt;br /&gt;
 configure.ac:41: You should use the Autoconf-provided &#039;AC_PROG_MKDIR_P&#039; macro instead,&lt;br /&gt;
 configure.ac:41: and use &#039;$(MKDIR_P)&#039; instead of &#039;$(mkdir_p)&#039;in your Makefile.am files.&lt;br /&gt;
&lt;br /&gt;
If you are using Automake 1.13 or higher, you must remove -Werror from vlc/contrib/android/gnutls/configure.ac to continue. (First reported in [http://forum.videolan.org/viewtopic.php?f=35&amp;amp;t=108927])&lt;br /&gt;
&lt;br /&gt;
===autoreconf: automake failed with exit status: 1 ===&lt;br /&gt;
 make: *** [dvdnav] Error 1&lt;br /&gt;
 ...&lt;br /&gt;
 ... error: possibly undefined macro: AM_PROG_LIBTOOL&lt;br /&gt;
&lt;br /&gt;
This error may occur when compiling with an older Linux distribution, such as Ubuntu 12.04, that doesn&#039;t meet bootstrap prerequisites. As of 2014-08-09, the master branch for vlc-ports/android.git [http://git.videolan.org/?p=vlc-ports/android.git;a=summary] lacks patch 5199 [https://patches.videolan.org/patch/5199/]. Without the patch, compile.sh builds out dated automake and autoconf that may not access libtool despite presence of a current libtool binary amongst supporting tools and a similar or more recent binary present as part of the OS.&lt;br /&gt;
&lt;br /&gt;
To work around this error, patch the master branch or update the prerequisites. For Ubuntu 12.04, upgrade autoconf, automake, and cmake as dictated by vlc/extras/tools/bootstrap.&lt;br /&gt;
&lt;br /&gt;
===Can&#039;t run aapt or adb on Linux 64-bit===&lt;br /&gt;
You must install the 32-bit libraries of the following libraries, as the precompiled Google binaries depend on them: &#039;&#039;libc6&#039;&#039;, &#039;&#039;libstdc++6&#039;&#039;, and &#039;&#039;zlib&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
New versions of Debian and/or Ubuntu require you to install i386 versions of packages:&lt;br /&gt;
 sudo dpkg --add-architecture i386&lt;br /&gt;
 sudo apt-get update&lt;br /&gt;
 sudo apt-get install zlib1g:i386 libstdc++6:i386 libc6:i386&lt;br /&gt;
&lt;br /&gt;
If you are under &#039;&#039;old versions&#039;&#039; of Ubuntu, install ia32-libs can help you solve this issue.&lt;br /&gt;
 sudo apt-get install ia32-libs&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
* [[Android Report bugs]] - Bug reporting guide for VLC-Android.&lt;br /&gt;
&lt;br /&gt;
[[Category:Building]] [[Category:Android]]&lt;/div&gt;</summary>
		<author><name>Dekans</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=AndroidCompile&amp;diff=31814</id>
		<title>AndroidCompile</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=AndroidCompile&amp;diff=31814"/>
		<updated>2017-02-01T16:49:44Z</updated>

		<summary type="html">&lt;p&gt;Dekans: /* Gradle tweaks */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page is an introduction to the compilation of &#039;&#039;&#039;VLC for Android&#039;&#039;&#039; on Linux. &lt;br /&gt;
&lt;br /&gt;
==Android Studio, SDK and NDK installation==&lt;br /&gt;
&lt;br /&gt;
=== Requirements  ===&lt;br /&gt;
* You &#039;&#039;&#039;MUST&#039;&#039;&#039; build on Linux (or OSX if you know what you are doing).&lt;br /&gt;
* The following packages &#039;&#039;&#039;MUST&#039;&#039;&#039; must be installed:&lt;br /&gt;
** the GNU autotools: &#039;&#039;autoconf&#039;&#039;, &#039;&#039;libtool&#039;&#039;, &#039;&#039;automake&#039;&#039; and &#039;&#039;make&#039;&#039; (a.k.a. &#039;&#039;gmake&#039;&#039;)&lt;br /&gt;
** ...and their dependencies: &#039;&#039;m4&#039;&#039; and &#039;&#039;gawk&#039;&#039;, &#039;&#039;mawk&#039;&#039; or &#039;&#039;nawk&#039;&#039;,&lt;br /&gt;
** the GNU C and C++ compilers a.k.a. &#039;&#039;gcc&#039;&#039; and &#039;&#039;g++&#039;&#039;,&lt;br /&gt;
** some GNU build utilities: &#039;&#039;pkg-config&#039;&#039; and &#039;&#039;patch&#039;&#039;,&lt;br /&gt;
** the following other build utilities: &#039;&#039;Apache Ant&#039;&#039; (or &#039;&#039;Ant&#039;&#039;), &#039;&#039;cmake&#039;&#039;, &#039;&#039;protobuf&#039;&#039;, &#039;&#039;ragel&#039;&#039;,&lt;br /&gt;
** the Subversion and Git version control systems&lt;br /&gt;
** &#039;&#039;unzip&#039;&#039; and either &#039;&#039;curl&#039;&#039; or &#039;&#039;wget&#039;&#039; for retreiving sources.&lt;br /&gt;
* Very recent versions of some of those tools may be required. At the time of writing, notably gettext 0.19.3 or later is required.&lt;br /&gt;
* If any of the above is missing, expect the build to fail at some point.&lt;br /&gt;
* If targeting an Android-x86 device, &#039;&#039;yasm&#039;&#039; must be installed too.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color: #ff0000&amp;quot;&amp;gt;&#039;&#039;&#039;64-bit users&#039;&#039;&#039;&amp;lt;/span&amp;gt;: You must install these 32-bit libs as specified here: [[AndroidCompile#Can.27t_run_aapt_or_adb_on_Linux_64-bit]]&lt;br /&gt;
&lt;br /&gt;
==== Example on Ubuntu ====&lt;br /&gt;
Install the packages as follow:&lt;br /&gt;
 sudo apt-get install automake ant autopoint cmake build-essential libtool \&lt;br /&gt;
      patch pkg-config protobuf-compiler ragel subversion unzip git&lt;br /&gt;
&lt;br /&gt;
=== SDK &amp;amp; Android Studio ===&lt;br /&gt;
# Go to [http://developer.android.com/sdk/index.html Android SDK page].&lt;br /&gt;
# Follow instructions to install latest version of Android SDK.&lt;br /&gt;
# Android Studio is recommended, but not mandatory!&lt;br /&gt;
&lt;br /&gt;
You can have [http://developer.android.com/sdk/installing.html more details], if needed.&lt;br /&gt;
&lt;br /&gt;
===Android NDK===&lt;br /&gt;
# Check that the SDK installation is correct. &lt;br /&gt;
# Go to the [http://developer.android.com/sdk/ndk/index.html Android NDK page] and download the &#039;&#039;&#039;NDK r13&#039;&#039;&#039; for Linux. &lt;br /&gt;
# Decompress it to install&lt;br /&gt;
&lt;br /&gt;
== Environment setup  ==&lt;br /&gt;
Set &#039;&#039;&#039;$ANDROID_SDK&#039;&#039;&#039; to point to your Android SDK directory &lt;br /&gt;
&lt;br /&gt;
 export ANDROID_SDK=/path/to/android-sdk&lt;br /&gt;
&lt;br /&gt;
Set &#039;&#039;&#039;$ANDROID_NDK&#039;&#039;&#039; to point to your Android NDK directory &lt;br /&gt;
&lt;br /&gt;
 export ANDROID_NDK=/path/to/android-ndk&lt;br /&gt;
&lt;br /&gt;
Add some useful binaries to your &#039;&#039;&#039;$PATH&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
 export PATH=$PATH:$ANDROID_SDK/platform-tools:$ANDROID_SDK/tools&lt;br /&gt;
&lt;br /&gt;
== Building ==&lt;br /&gt;
=== Get VLC Source ===&lt;br /&gt;
Clone the source from the VLC git!&lt;br /&gt;
&lt;br /&gt;
In your &#039;&#039;android&#039;&#039; source folder, run: &lt;br /&gt;
&lt;br /&gt;
 git clone https://code.videolan.org/videolan/vlc-android.git&lt;br /&gt;
&lt;br /&gt;
==== Setup Gradle build system ====&lt;br /&gt;
&lt;br /&gt;
Before using Android studio to compile the app, you must run &#039;&#039;&#039;compile.sh&#039;&#039;&#039; once to set up gradle build system.&lt;br /&gt;
&lt;br /&gt;
It should automatically populate mandatory local.properties and gradle.properties files with:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;local.properties&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 sdk.dir=&amp;lt;SDK path from $ANDROID_SDK&amp;gt;&lt;br /&gt;
 ndk.dir=&amp;lt;NDK path from $ANDROID_NDK&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;gradle.properties&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 keyStoreFile=/home/&#039;&#039;user&#039;&#039;/.android/debug.keystore&lt;br /&gt;
 storealias=androiddebugkey&lt;br /&gt;
 storepwd=android&lt;br /&gt;
&lt;br /&gt;
This sets up gradle to build with correct SDK/NDK and sign builds with your personal debug key.&lt;br /&gt;
&lt;br /&gt;
Once this first compilation has succeeded, you can build from Android Studio with the &#039;&#039;&#039;Run&#039;&#039;&#039; command.&lt;br /&gt;
&lt;br /&gt;
=== Devices ===&lt;br /&gt;
&lt;br /&gt;
Find the ABI for the target device.&lt;br /&gt;
&lt;br /&gt;
* For a normal (2012-2015 consumer phone or tablet) device (e.g. Cortex-A8 or Cortex-A9)&lt;br /&gt;
 &amp;lt;code&amp;gt;armeabi-v7a&amp;lt;/code&amp;gt;&lt;br /&gt;
* For a Tegra2 device (no [[wikipedia:ARM_architecture#Advanced_SIMD_.28NEON.29|NEON]])&lt;br /&gt;
 &amp;lt;code&amp;gt;armeabi-v7a&amp;lt;/code&amp;gt;&lt;br /&gt;
* For an ARMv6 device&lt;br /&gt;
 &amp;lt;code&amp;gt;armeabi&amp;lt;/code&amp;gt;&lt;br /&gt;
* For an ARMv6 device that does not support FPU&lt;br /&gt;
 &amp;lt;code&amp;gt;armeabi-nofpu&amp;lt;/code&amp;gt;&lt;br /&gt;
* For an ARMv5 device or the Android Emulator&lt;br /&gt;
 &amp;lt;code&amp;gt;armeabi-v5&amp;lt;/code&amp;gt;&lt;br /&gt;
* For a x86 device (e.g. Android-x86, Google TV, Logitech TV, Android x86 smartphones, etc)&lt;br /&gt;
 &amp;lt;code&amp;gt;x86&amp;lt;/code&amp;gt;&lt;br /&gt;
* For a MIPS device (i.e. Ainol Novo tablets):&lt;br /&gt;
 &amp;lt;code&amp;gt;mips&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This value must be passed to the compile.sh script&lt;br /&gt;
&lt;br /&gt;
==== Compile ====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Read&#039;&#039;&#039; compile.sh first, as it contains some very useful and important information. Then run it:&lt;br /&gt;
 sh compile.sh -a &amp;lt;ABI&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039; At this point, you will get an auto-generated debug APK in the vlc-android/build/outputs/apk folder, signed with a debug key.&lt;br /&gt;
&lt;br /&gt;
In order to build a non-debug (release) package:&lt;br /&gt;
 sh compile.sh release&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039; At this point, you will get an release APK in the same folder.&lt;br /&gt;
&lt;br /&gt;
==== Gradle tweaks ====&lt;br /&gt;
&lt;br /&gt;
To improve gradle execution time, try these options by writing this in gradle.properties in vlc android project.&lt;br /&gt;
Or directly in your ~/.gradle/gradle.properties&lt;br /&gt;
 org.gradle.parallel=true&lt;br /&gt;
 org.gradle.configureondemand=true&lt;br /&gt;
 # If you have a BUNCH of RAM available&lt;br /&gt;
 org.gradle.daemon=true&lt;br /&gt;
 org.gradle.jvmargs=-Xmx2048M&lt;br /&gt;
&lt;br /&gt;
=== Run ===&lt;br /&gt;
Run it and enjoy!&lt;br /&gt;
&lt;br /&gt;
=== Troubleshooting ===&lt;br /&gt;
==== Compilation error on Dependencies ====&lt;br /&gt;
Sometimes, especially when gradle dependencies have been upgraded, the &#039;&#039;compile.sh&#039;&#039; will fail to refetch dependencies. Just close Android Studio and re-run the script to fix this issue.&lt;br /&gt;
&lt;br /&gt;
== Debugging ==&lt;br /&gt;
Here are some helpful links if you wish to debug VLC on Android:&lt;br /&gt;
* [http://developer.android.com/guide/developing/debugging/ddms.html DDMS] &lt;br /&gt;
* [http://developer.android.com/guide/developing/tools/logcat.html Logcat]&lt;br /&gt;
&lt;br /&gt;
===Native debugging===&lt;br /&gt;
If you run VLC Android and you get a crash that looks something like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
I/DEBUG   (  958): *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***&lt;br /&gt;
I/DEBUG   (  958): Build fingerprint: &#039;MOTO/MBTCA/sesame/XT300:2.1-update1/SESLA_U3_01.71.0/110110:user/release-keys&#039;&lt;br /&gt;
I/DEBUG   (  958): pid: 1733, tid: 1733 &amp;gt;&amp;gt;&amp;gt; org.videolan.vlc &amp;lt;&amp;lt;&amp;lt;&lt;br /&gt;
I/DEBUG   (  958): signal 11 (SIGSEGV), fault addr 4237be3c&lt;br /&gt;
I/DEBUG   (  958):  r0 423640a0  r1 7ece77ac  r2 42bccdac  r3 4237be38&lt;br /&gt;
I/DEBUG   (  958):  r4 00000000  r5 42bccdac  r6 002ed088  r7 002ed018&lt;br /&gt;
I/DEBUG   (  958):  r8 7ece78e8  r9 2bafa844  10 0000000e  fp 7ece794c&lt;br /&gt;
I/DEBUG   (  958):  ip 00002ba0  sp 7ece7784  lr 423652e4  pc 4237be3c  cpsr 60000010&lt;br /&gt;
I/DEBUG   (  958):          #00  pc 0037be3c  /data/data/org.videolan.vlc/lib/libvlcjni.so&lt;br /&gt;
I/DEBUG   (  958):          #01  lr 423652e4  /data/data/org.videolan.vlc/lib/libvlcjni.so&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You have a &#039;&#039;&#039;native crash&#039;&#039;&#039;. To debug it, you need to have compiled VLC as above and installed it on your device. Once your compiled VLC build is on your device, you can find the &#039;&#039;&#039;backtrace&#039;&#039;&#039; as follows:&lt;br /&gt;
&lt;br /&gt;
# Make sure you are in the directory that you checked out VLC-Android in.&lt;br /&gt;
# Migrate the libvlc folders. (Do this every time the code is recompiled)&lt;br /&gt;
## cp -r libvlc/jni vlc-android&lt;br /&gt;
## cp -r libvlc/libs vlc-android&lt;br /&gt;
## cp -r libvlc/obj vlc-android&lt;br /&gt;
## (This is because the libvlc and VLC for Android folders were split yet the debugger needs the object files from both.)&lt;br /&gt;
# cd vlc-android&lt;br /&gt;
# $ANDROID_NDK/ndk-gdb --verbose --force --start&lt;br /&gt;
At this point, lots of stuff will appear:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Android NDK installation path: /opt/android-ndk-r8c&lt;br /&gt;
Using default adb command: /opt/android-sdk-linux_x86/platform-tools/adb&lt;br /&gt;
ADB version found: Android Debug Bridge version 1.0.29&lt;br /&gt;
Using ADB flags: &lt;br /&gt;
Using auto-detected project path: .&lt;br /&gt;
Found package name: org.videolan.vlc&lt;br /&gt;
...bunch of stuff skipped...&lt;br /&gt;
GNU gdb (GDB) 7.3.1-gg2&lt;br /&gt;
Copyright (C) 2011 Free Software Foundation, Inc.&lt;br /&gt;
License GPLv3+: GNU GPL version 3 or later &amp;lt;http://gnu.org/licenses/gpl.html&amp;gt;&lt;br /&gt;
This is free software: you are free to change and redistribute it.&lt;br /&gt;
There is NO WARRANTY, to the extent permitted by law.  Type &amp;quot;show copying&amp;quot;&lt;br /&gt;
and &amp;quot;show warranty&amp;quot; for details.&lt;br /&gt;
This GDB was configured as &amp;quot;--host=x86_64-linux-gnu --target=arm-linux-android&amp;quot;.&lt;br /&gt;
For bug reporting instructions, please see:&lt;br /&gt;
&amp;lt;http://www.gnu.org/software/gdb/bugs/&amp;gt;.&lt;br /&gt;
Remote debugging from host 0.0.0.0&lt;br /&gt;
...bunch of stuff skipped...&lt;br /&gt;
libthread_db:td_ta_new: Victory: We can debug theads!&lt;br /&gt;
warning: Breakpoint address adjusted from 0x400deaa5 to 0x400deaa4.&lt;br /&gt;
0x40107a40 in epoll_wait () from /media/data/vlc_android/vlc-android/obj/local/armeabi/libc.so&lt;br /&gt;
(gdb)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;ol start=&amp;quot;4&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;At this point, type in &amp;quot;continue&amp;quot; and press Enter.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Perform the actions you did to make it crash. It will spit out something like this:&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Program received signal SIGSEGV, Segmentation fault.&lt;br /&gt;
0x401120ae in ?? () from /media/data/vlc_android/vlc-android/obj/local/armeabi/libc.so&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;ol start=&amp;quot;6&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Now, just type in &amp;quot;&#039;&#039;&#039;bt full&#039;&#039;&#039;&amp;quot; (excluding the quotation marks) and press Enter. That is your backtrace that you should give to the developers when they ask for it (possibly on a [http://paste.kde.org/ pastebin], too).&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
(gdb) bt full&lt;br /&gt;
#0  0x401120ae in ?? () from /media/data/vlc_android/vlc-android/obj/local/armeabi/libc.so&lt;br /&gt;
No symbol table info available.&lt;br /&gt;
#1  0x40107bd8 in abort () from /media/data/vlc_android/vlc-android/obj/local/armeabi/libc.so&lt;br /&gt;
No symbol table info available.&lt;br /&gt;
#2  0x40118e6a in __assert2 () from /media/data/vlc_android/vlc-android/obj/local/armeabi/libc.so&lt;br /&gt;
No symbol table info available.&lt;br /&gt;
#3  0x5e0cdfdc in var_SetChecked (p_this=0x40134b94, psz_name=0x5ea2fcb8 &amp;quot;rate&amp;quot;, expected_type=80, val=...) at ../../src/misc/variables.c:711&lt;br /&gt;
        i_ret = 0&lt;br /&gt;
        p_var = &amp;lt;optimized out&amp;gt;&lt;br /&gt;
        oldval = {i_int = 4742037487051810480, b_bool = 176, f_float = 2.27765068e+14, psz_string = 0x574f26b0 &amp;quot;X\270|B\001\001&amp;quot;, p_address = 0x574f26b0, &lt;br /&gt;
          p_object = 0x574f26b0, p_list = 0x574f26b0, i_time = 4742037487051810480, coords = {x = 1464805040, y = 1104091640}}&lt;br /&gt;
        __func__ = &amp;quot;var_SetChecked&amp;quot;&lt;br /&gt;
        p_priv = &amp;lt;optimized out&amp;gt;&lt;br /&gt;
#4  0x5e06dd9c in var_SetFloat (f=1.41421354, psz_name=0x5ea2fcb8 &amp;quot;rate____sample_backtrace&amp;quot;, p_obj=0x0) at ../../include/vlc_variables.h:262&lt;br /&gt;
        val = &amp;lt;optimized out&amp;gt;&lt;br /&gt;
#5  libvlc_media_player_set_rate (p_mi=0x0, rate=1.41421354) at ../../lib/media_player.c:1252&lt;br /&gt;
        p_input_thread = &amp;lt;optimized out&amp;gt;&lt;br /&gt;
#6  0x5de7bd18 in Java_org_videolan_vlc_LibVLC_setRate (env=0x41cf0470, thiz=0x8ab00021, rate=1.41421354) at jni/libvlcjni.c:678&lt;br /&gt;
        mp = 0x0&lt;br /&gt;
#7  0x4076de34 in ?? ()&lt;br /&gt;
No symbol table info available.&lt;br /&gt;
#8  0x4076de34 in ?? ()&lt;br /&gt;
No symbol table info available.&lt;br /&gt;
Backtrace stopped: previous frame identical to this frame (corrupt stack?)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Troubleshooting ==&lt;br /&gt;
=== Outdated Awk ===&lt;br /&gt;
If you receive the error message while building:&lt;br /&gt;
&lt;br /&gt;
 Android NDK: Host &#039;awk&#039; tool is outdated. Please define HOST_AWK to point to Gawk or Nawk !    &lt;br /&gt;
&lt;br /&gt;
The prebuilt version of Awk that comes with the Android NDK is outdated. Defining HOST_AWK in your environment does nothing as the system still tries to just the one that comes with the Android NDK. To get around this issue, simply rename or delete the Awk binary that comes with the Android NDK. For example to move it:&lt;br /&gt;
&lt;br /&gt;
 mv $ANDROID_NDK/prebuilt/linux-x86/bin/awk $ANDROID_NDK/prebuilt/linux-x86/bin/awk.old&lt;br /&gt;
&lt;br /&gt;
=== Can&#039;t find Ant ===&lt;br /&gt;
If you&#039;re new to Ant, please be aware that some Linux distributions don&#039;t install it in the usual spot as with other programs. Try checking to see if the directory /usr/share/java/apache-ant/bin exists and add it to your path.&lt;br /&gt;
&lt;br /&gt;
===Outdated autotools-dev===&lt;br /&gt;
If you get the following error message you may have have an outdated version of autotools-dev:&lt;br /&gt;
  Invalid configuration `arm-linux-androideabi&#039;: system `androideabi&#039; not recognized&lt;br /&gt;
You may first want to check if your distribution has any available updates for this package.  Alternatively, you can manually update your config.guess and config.sub files from here: [http://git.savannah.gnu.org/gitweb/?p=config.git;a=tree].  These files are typically located in /usr/share/misc on Debian based distributions.&lt;br /&gt;
&lt;br /&gt;
===autoreconf: automake failed with exit status: 1===&lt;br /&gt;
 automake: warnings are treated as errors&lt;br /&gt;
 configure.ac:41: warning: The &#039;AM_PROG_MKDIR_P&#039; macro is deprecated, and will soon be removed.&lt;br /&gt;
 configure.ac:41: You should use the Autoconf-provided &#039;AC_PROG_MKDIR_P&#039; macro instead,&lt;br /&gt;
 configure.ac:41: and use &#039;$(MKDIR_P)&#039; instead of &#039;$(mkdir_p)&#039;in your Makefile.am files.&lt;br /&gt;
&lt;br /&gt;
If you are using Automake 1.13 or higher, you must remove -Werror from vlc/contrib/android/gnutls/configure.ac to continue. (First reported in [http://forum.videolan.org/viewtopic.php?f=35&amp;amp;t=108927])&lt;br /&gt;
&lt;br /&gt;
===autoreconf: automake failed with exit status: 1 ===&lt;br /&gt;
 make: *** [dvdnav] Error 1&lt;br /&gt;
 ...&lt;br /&gt;
 ... error: possibly undefined macro: AM_PROG_LIBTOOL&lt;br /&gt;
&lt;br /&gt;
This error may occur when compiling with an older Linux distribution, such as Ubuntu 12.04, that doesn&#039;t meet bootstrap prerequisites. As of 2014-08-09, the master branch for vlc-ports/android.git [http://git.videolan.org/?p=vlc-ports/android.git;a=summary] lacks patch 5199 [https://patches.videolan.org/patch/5199/]. Without the patch, compile.sh builds out dated automake and autoconf that may not access libtool despite presence of a current libtool binary amongst supporting tools and a similar or more recent binary present as part of the OS.&lt;br /&gt;
&lt;br /&gt;
To work around this error, patch the master branch or update the prerequisites. For Ubuntu 12.04, upgrade autoconf, automake, and cmake as dictated by vlc/extras/tools/bootstrap.&lt;br /&gt;
&lt;br /&gt;
===Can&#039;t run aapt or adb on Linux 64-bit===&lt;br /&gt;
You must install the 32-bit libraries of the following libraries, as the precompiled Google binaries depend on them: &#039;&#039;libc6&#039;&#039;, &#039;&#039;libstdc++6&#039;&#039;, and &#039;&#039;zlib&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
New versions of Debian and/or Ubuntu require you to install i386 versions of packages:&lt;br /&gt;
 sudo dpkg --add-architecture i386&lt;br /&gt;
 sudo apt-get update&lt;br /&gt;
 sudo apt-get install zlib1g:i386 libstdc++6:i386 libc6:i386&lt;br /&gt;
&lt;br /&gt;
If you are under &#039;&#039;old versions&#039;&#039; of Ubuntu, install ia32-libs can help you solve this issue.&lt;br /&gt;
 sudo apt-get install ia32-libs&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
* [[Android Report bugs]] - Bug reporting guide for VLC-Android.&lt;br /&gt;
&lt;br /&gt;
[[Category:Building]] [[Category:Android]]&lt;/div&gt;</summary>
		<author><name>Dekans</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=AndroidCompile&amp;diff=31813</id>
		<title>AndroidCompile</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=AndroidCompile&amp;diff=31813"/>
		<updated>2017-02-01T16:47:15Z</updated>

		<summary type="html">&lt;p&gt;Dekans: Add some gradle tweaks&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page is an introduction to the compilation of &#039;&#039;&#039;VLC for Android&#039;&#039;&#039; on Linux. &lt;br /&gt;
&lt;br /&gt;
==Android Studio, SDK and NDK installation==&lt;br /&gt;
&lt;br /&gt;
=== Requirements  ===&lt;br /&gt;
* You &#039;&#039;&#039;MUST&#039;&#039;&#039; build on Linux (or OSX if you know what you are doing).&lt;br /&gt;
* The following packages &#039;&#039;&#039;MUST&#039;&#039;&#039; must be installed:&lt;br /&gt;
** the GNU autotools: &#039;&#039;autoconf&#039;&#039;, &#039;&#039;libtool&#039;&#039;, &#039;&#039;automake&#039;&#039; and &#039;&#039;make&#039;&#039; (a.k.a. &#039;&#039;gmake&#039;&#039;)&lt;br /&gt;
** ...and their dependencies: &#039;&#039;m4&#039;&#039; and &#039;&#039;gawk&#039;&#039;, &#039;&#039;mawk&#039;&#039; or &#039;&#039;nawk&#039;&#039;,&lt;br /&gt;
** the GNU C and C++ compilers a.k.a. &#039;&#039;gcc&#039;&#039; and &#039;&#039;g++&#039;&#039;,&lt;br /&gt;
** some GNU build utilities: &#039;&#039;pkg-config&#039;&#039; and &#039;&#039;patch&#039;&#039;,&lt;br /&gt;
** the following other build utilities: &#039;&#039;Apache Ant&#039;&#039; (or &#039;&#039;Ant&#039;&#039;), &#039;&#039;cmake&#039;&#039;, &#039;&#039;protobuf&#039;&#039;, &#039;&#039;ragel&#039;&#039;,&lt;br /&gt;
** the Subversion and Git version control systems&lt;br /&gt;
** &#039;&#039;unzip&#039;&#039; and either &#039;&#039;curl&#039;&#039; or &#039;&#039;wget&#039;&#039; for retreiving sources.&lt;br /&gt;
* Very recent versions of some of those tools may be required. At the time of writing, notably gettext 0.19.3 or later is required.&lt;br /&gt;
* If any of the above is missing, expect the build to fail at some point.&lt;br /&gt;
* If targeting an Android-x86 device, &#039;&#039;yasm&#039;&#039; must be installed too.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color: #ff0000&amp;quot;&amp;gt;&#039;&#039;&#039;64-bit users&#039;&#039;&#039;&amp;lt;/span&amp;gt;: You must install these 32-bit libs as specified here: [[AndroidCompile#Can.27t_run_aapt_or_adb_on_Linux_64-bit]]&lt;br /&gt;
&lt;br /&gt;
==== Example on Ubuntu ====&lt;br /&gt;
Install the packages as follow:&lt;br /&gt;
 sudo apt-get install automake ant autopoint cmake build-essential libtool \&lt;br /&gt;
      patch pkg-config protobuf-compiler ragel subversion unzip git&lt;br /&gt;
&lt;br /&gt;
=== SDK &amp;amp; Android Studio ===&lt;br /&gt;
# Go to [http://developer.android.com/sdk/index.html Android SDK page].&lt;br /&gt;
# Follow instructions to install latest version of Android SDK.&lt;br /&gt;
# Android Studio is recommended, but not mandatory!&lt;br /&gt;
&lt;br /&gt;
You can have [http://developer.android.com/sdk/installing.html more details], if needed.&lt;br /&gt;
&lt;br /&gt;
===Android NDK===&lt;br /&gt;
# Check that the SDK installation is correct. &lt;br /&gt;
# Go to the [http://developer.android.com/sdk/ndk/index.html Android NDK page] and download the &#039;&#039;&#039;NDK r13&#039;&#039;&#039; for Linux. &lt;br /&gt;
# Decompress it to install&lt;br /&gt;
&lt;br /&gt;
== Environment setup  ==&lt;br /&gt;
Set &#039;&#039;&#039;$ANDROID_SDK&#039;&#039;&#039; to point to your Android SDK directory &lt;br /&gt;
&lt;br /&gt;
 export ANDROID_SDK=/path/to/android-sdk&lt;br /&gt;
&lt;br /&gt;
Set &#039;&#039;&#039;$ANDROID_NDK&#039;&#039;&#039; to point to your Android NDK directory &lt;br /&gt;
&lt;br /&gt;
 export ANDROID_NDK=/path/to/android-ndk&lt;br /&gt;
&lt;br /&gt;
Add some useful binaries to your &#039;&#039;&#039;$PATH&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
 export PATH=$PATH:$ANDROID_SDK/platform-tools:$ANDROID_SDK/tools&lt;br /&gt;
&lt;br /&gt;
== Building ==&lt;br /&gt;
=== Get VLC Source ===&lt;br /&gt;
Clone the source from the VLC git!&lt;br /&gt;
&lt;br /&gt;
In your &#039;&#039;android&#039;&#039; source folder, run: &lt;br /&gt;
&lt;br /&gt;
 git clone https://code.videolan.org/videolan/vlc-android.git&lt;br /&gt;
&lt;br /&gt;
==== Setup Gradle build system ====&lt;br /&gt;
&lt;br /&gt;
Before using Android studio to compile the app, you must run &#039;&#039;&#039;compile.sh&#039;&#039;&#039; once to set up gradle build system.&lt;br /&gt;
&lt;br /&gt;
It should automatically populate mandatory local.properties and gradle.properties files with:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;local.properties&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 sdk.dir=&amp;lt;SDK path from $ANDROID_SDK&amp;gt;&lt;br /&gt;
 ndk.dir=&amp;lt;NDK path from $ANDROID_NDK&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;gradle.properties&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 keyStoreFile=/home/&#039;&#039;user&#039;&#039;/.android/debug.keystore&lt;br /&gt;
 storealias=androiddebugkey&lt;br /&gt;
 storepwd=android&lt;br /&gt;
&lt;br /&gt;
This sets up gradle to build with correct SDK/NDK and sign builds with your personal debug key.&lt;br /&gt;
&lt;br /&gt;
Once this first compilation has succeeded, you can build from Android Studio with the &#039;&#039;&#039;Run&#039;&#039;&#039; command.&lt;br /&gt;
&lt;br /&gt;
=== Devices ===&lt;br /&gt;
&lt;br /&gt;
Find the ABI for the target device.&lt;br /&gt;
&lt;br /&gt;
* For a normal (2012-2015 consumer phone or tablet) device (e.g. Cortex-A8 or Cortex-A9)&lt;br /&gt;
 &amp;lt;code&amp;gt;armeabi-v7a&amp;lt;/code&amp;gt;&lt;br /&gt;
* For a Tegra2 device (no [[wikipedia:ARM_architecture#Advanced_SIMD_.28NEON.29|NEON]])&lt;br /&gt;
 &amp;lt;code&amp;gt;armeabi-v7a&amp;lt;/code&amp;gt;&lt;br /&gt;
* For an ARMv6 device&lt;br /&gt;
 &amp;lt;code&amp;gt;armeabi&amp;lt;/code&amp;gt;&lt;br /&gt;
* For an ARMv6 device that does not support FPU&lt;br /&gt;
 &amp;lt;code&amp;gt;armeabi-nofpu&amp;lt;/code&amp;gt;&lt;br /&gt;
* For an ARMv5 device or the Android Emulator&lt;br /&gt;
 &amp;lt;code&amp;gt;armeabi-v5&amp;lt;/code&amp;gt;&lt;br /&gt;
* For a x86 device (e.g. Android-x86, Google TV, Logitech TV, Android x86 smartphones, etc)&lt;br /&gt;
 &amp;lt;code&amp;gt;x86&amp;lt;/code&amp;gt;&lt;br /&gt;
* For a MIPS device (i.e. Ainol Novo tablets):&lt;br /&gt;
 &amp;lt;code&amp;gt;mips&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This value must be passed to the compile.sh script&lt;br /&gt;
&lt;br /&gt;
==== Compile ====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Read&#039;&#039;&#039; compile.sh first, as it contains some very useful and important information. Then run it:&lt;br /&gt;
 sh compile.sh -a &amp;lt;ABI&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039; At this point, you will get an auto-generated debug APK in the vlc-android/build/outputs/apk folder, signed with a debug key.&lt;br /&gt;
&lt;br /&gt;
In order to build a non-debug (release) package:&lt;br /&gt;
 sh compile.sh release&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039; At this point, you will get an release APK in the same folder.&lt;br /&gt;
&lt;br /&gt;
==== Gradle tweaks ====&lt;br /&gt;
&lt;br /&gt;
 org.gradle.parallel=true&lt;br /&gt;
 org.gradle.configureondemand=true&lt;br /&gt;
 # If you have a BUNCH of RAM available&lt;br /&gt;
 org.gradle.daemon=true&lt;br /&gt;
 org.gradle.jvmargs=-Xmx2048M&lt;br /&gt;
&lt;br /&gt;
=== Run ===&lt;br /&gt;
Run it and enjoy!&lt;br /&gt;
&lt;br /&gt;
=== Troubleshooting ===&lt;br /&gt;
==== Compilation error on Dependencies ====&lt;br /&gt;
Sometimes, especially when gradle dependencies have been upgraded, the &#039;&#039;compile.sh&#039;&#039; will fail to refetch dependencies. Just close Android Studio and re-run the script to fix this issue.&lt;br /&gt;
&lt;br /&gt;
== Debugging ==&lt;br /&gt;
Here are some helpful links if you wish to debug VLC on Android:&lt;br /&gt;
* [http://developer.android.com/guide/developing/debugging/ddms.html DDMS] &lt;br /&gt;
* [http://developer.android.com/guide/developing/tools/logcat.html Logcat]&lt;br /&gt;
&lt;br /&gt;
===Native debugging===&lt;br /&gt;
If you run VLC Android and you get a crash that looks something like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
I/DEBUG   (  958): *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***&lt;br /&gt;
I/DEBUG   (  958): Build fingerprint: &#039;MOTO/MBTCA/sesame/XT300:2.1-update1/SESLA_U3_01.71.0/110110:user/release-keys&#039;&lt;br /&gt;
I/DEBUG   (  958): pid: 1733, tid: 1733 &amp;gt;&amp;gt;&amp;gt; org.videolan.vlc &amp;lt;&amp;lt;&amp;lt;&lt;br /&gt;
I/DEBUG   (  958): signal 11 (SIGSEGV), fault addr 4237be3c&lt;br /&gt;
I/DEBUG   (  958):  r0 423640a0  r1 7ece77ac  r2 42bccdac  r3 4237be38&lt;br /&gt;
I/DEBUG   (  958):  r4 00000000  r5 42bccdac  r6 002ed088  r7 002ed018&lt;br /&gt;
I/DEBUG   (  958):  r8 7ece78e8  r9 2bafa844  10 0000000e  fp 7ece794c&lt;br /&gt;
I/DEBUG   (  958):  ip 00002ba0  sp 7ece7784  lr 423652e4  pc 4237be3c  cpsr 60000010&lt;br /&gt;
I/DEBUG   (  958):          #00  pc 0037be3c  /data/data/org.videolan.vlc/lib/libvlcjni.so&lt;br /&gt;
I/DEBUG   (  958):          #01  lr 423652e4  /data/data/org.videolan.vlc/lib/libvlcjni.so&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You have a &#039;&#039;&#039;native crash&#039;&#039;&#039;. To debug it, you need to have compiled VLC as above and installed it on your device. Once your compiled VLC build is on your device, you can find the &#039;&#039;&#039;backtrace&#039;&#039;&#039; as follows:&lt;br /&gt;
&lt;br /&gt;
# Make sure you are in the directory that you checked out VLC-Android in.&lt;br /&gt;
# Migrate the libvlc folders. (Do this every time the code is recompiled)&lt;br /&gt;
## cp -r libvlc/jni vlc-android&lt;br /&gt;
## cp -r libvlc/libs vlc-android&lt;br /&gt;
## cp -r libvlc/obj vlc-android&lt;br /&gt;
## (This is because the libvlc and VLC for Android folders were split yet the debugger needs the object files from both.)&lt;br /&gt;
# cd vlc-android&lt;br /&gt;
# $ANDROID_NDK/ndk-gdb --verbose --force --start&lt;br /&gt;
At this point, lots of stuff will appear:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Android NDK installation path: /opt/android-ndk-r8c&lt;br /&gt;
Using default adb command: /opt/android-sdk-linux_x86/platform-tools/adb&lt;br /&gt;
ADB version found: Android Debug Bridge version 1.0.29&lt;br /&gt;
Using ADB flags: &lt;br /&gt;
Using auto-detected project path: .&lt;br /&gt;
Found package name: org.videolan.vlc&lt;br /&gt;
...bunch of stuff skipped...&lt;br /&gt;
GNU gdb (GDB) 7.3.1-gg2&lt;br /&gt;
Copyright (C) 2011 Free Software Foundation, Inc.&lt;br /&gt;
License GPLv3+: GNU GPL version 3 or later &amp;lt;http://gnu.org/licenses/gpl.html&amp;gt;&lt;br /&gt;
This is free software: you are free to change and redistribute it.&lt;br /&gt;
There is NO WARRANTY, to the extent permitted by law.  Type &amp;quot;show copying&amp;quot;&lt;br /&gt;
and &amp;quot;show warranty&amp;quot; for details.&lt;br /&gt;
This GDB was configured as &amp;quot;--host=x86_64-linux-gnu --target=arm-linux-android&amp;quot;.&lt;br /&gt;
For bug reporting instructions, please see:&lt;br /&gt;
&amp;lt;http://www.gnu.org/software/gdb/bugs/&amp;gt;.&lt;br /&gt;
Remote debugging from host 0.0.0.0&lt;br /&gt;
...bunch of stuff skipped...&lt;br /&gt;
libthread_db:td_ta_new: Victory: We can debug theads!&lt;br /&gt;
warning: Breakpoint address adjusted from 0x400deaa5 to 0x400deaa4.&lt;br /&gt;
0x40107a40 in epoll_wait () from /media/data/vlc_android/vlc-android/obj/local/armeabi/libc.so&lt;br /&gt;
(gdb)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;ol start=&amp;quot;4&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;At this point, type in &amp;quot;continue&amp;quot; and press Enter.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Perform the actions you did to make it crash. It will spit out something like this:&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Program received signal SIGSEGV, Segmentation fault.&lt;br /&gt;
0x401120ae in ?? () from /media/data/vlc_android/vlc-android/obj/local/armeabi/libc.so&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;ol start=&amp;quot;6&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Now, just type in &amp;quot;&#039;&#039;&#039;bt full&#039;&#039;&#039;&amp;quot; (excluding the quotation marks) and press Enter. That is your backtrace that you should give to the developers when they ask for it (possibly on a [http://paste.kde.org/ pastebin], too).&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
(gdb) bt full&lt;br /&gt;
#0  0x401120ae in ?? () from /media/data/vlc_android/vlc-android/obj/local/armeabi/libc.so&lt;br /&gt;
No symbol table info available.&lt;br /&gt;
#1  0x40107bd8 in abort () from /media/data/vlc_android/vlc-android/obj/local/armeabi/libc.so&lt;br /&gt;
No symbol table info available.&lt;br /&gt;
#2  0x40118e6a in __assert2 () from /media/data/vlc_android/vlc-android/obj/local/armeabi/libc.so&lt;br /&gt;
No symbol table info available.&lt;br /&gt;
#3  0x5e0cdfdc in var_SetChecked (p_this=0x40134b94, psz_name=0x5ea2fcb8 &amp;quot;rate&amp;quot;, expected_type=80, val=...) at ../../src/misc/variables.c:711&lt;br /&gt;
        i_ret = 0&lt;br /&gt;
        p_var = &amp;lt;optimized out&amp;gt;&lt;br /&gt;
        oldval = {i_int = 4742037487051810480, b_bool = 176, f_float = 2.27765068e+14, psz_string = 0x574f26b0 &amp;quot;X\270|B\001\001&amp;quot;, p_address = 0x574f26b0, &lt;br /&gt;
          p_object = 0x574f26b0, p_list = 0x574f26b0, i_time = 4742037487051810480, coords = {x = 1464805040, y = 1104091640}}&lt;br /&gt;
        __func__ = &amp;quot;var_SetChecked&amp;quot;&lt;br /&gt;
        p_priv = &amp;lt;optimized out&amp;gt;&lt;br /&gt;
#4  0x5e06dd9c in var_SetFloat (f=1.41421354, psz_name=0x5ea2fcb8 &amp;quot;rate____sample_backtrace&amp;quot;, p_obj=0x0) at ../../include/vlc_variables.h:262&lt;br /&gt;
        val = &amp;lt;optimized out&amp;gt;&lt;br /&gt;
#5  libvlc_media_player_set_rate (p_mi=0x0, rate=1.41421354) at ../../lib/media_player.c:1252&lt;br /&gt;
        p_input_thread = &amp;lt;optimized out&amp;gt;&lt;br /&gt;
#6  0x5de7bd18 in Java_org_videolan_vlc_LibVLC_setRate (env=0x41cf0470, thiz=0x8ab00021, rate=1.41421354) at jni/libvlcjni.c:678&lt;br /&gt;
        mp = 0x0&lt;br /&gt;
#7  0x4076de34 in ?? ()&lt;br /&gt;
No symbol table info available.&lt;br /&gt;
#8  0x4076de34 in ?? ()&lt;br /&gt;
No symbol table info available.&lt;br /&gt;
Backtrace stopped: previous frame identical to this frame (corrupt stack?)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Troubleshooting ==&lt;br /&gt;
=== Outdated Awk ===&lt;br /&gt;
If you receive the error message while building:&lt;br /&gt;
&lt;br /&gt;
 Android NDK: Host &#039;awk&#039; tool is outdated. Please define HOST_AWK to point to Gawk or Nawk !    &lt;br /&gt;
&lt;br /&gt;
The prebuilt version of Awk that comes with the Android NDK is outdated. Defining HOST_AWK in your environment does nothing as the system still tries to just the one that comes with the Android NDK. To get around this issue, simply rename or delete the Awk binary that comes with the Android NDK. For example to move it:&lt;br /&gt;
&lt;br /&gt;
 mv $ANDROID_NDK/prebuilt/linux-x86/bin/awk $ANDROID_NDK/prebuilt/linux-x86/bin/awk.old&lt;br /&gt;
&lt;br /&gt;
=== Can&#039;t find Ant ===&lt;br /&gt;
If you&#039;re new to Ant, please be aware that some Linux distributions don&#039;t install it in the usual spot as with other programs. Try checking to see if the directory /usr/share/java/apache-ant/bin exists and add it to your path.&lt;br /&gt;
&lt;br /&gt;
===Outdated autotools-dev===&lt;br /&gt;
If you get the following error message you may have have an outdated version of autotools-dev:&lt;br /&gt;
  Invalid configuration `arm-linux-androideabi&#039;: system `androideabi&#039; not recognized&lt;br /&gt;
You may first want to check if your distribution has any available updates for this package.  Alternatively, you can manually update your config.guess and config.sub files from here: [http://git.savannah.gnu.org/gitweb/?p=config.git;a=tree].  These files are typically located in /usr/share/misc on Debian based distributions.&lt;br /&gt;
&lt;br /&gt;
===autoreconf: automake failed with exit status: 1===&lt;br /&gt;
 automake: warnings are treated as errors&lt;br /&gt;
 configure.ac:41: warning: The &#039;AM_PROG_MKDIR_P&#039; macro is deprecated, and will soon be removed.&lt;br /&gt;
 configure.ac:41: You should use the Autoconf-provided &#039;AC_PROG_MKDIR_P&#039; macro instead,&lt;br /&gt;
 configure.ac:41: and use &#039;$(MKDIR_P)&#039; instead of &#039;$(mkdir_p)&#039;in your Makefile.am files.&lt;br /&gt;
&lt;br /&gt;
If you are using Automake 1.13 or higher, you must remove -Werror from vlc/contrib/android/gnutls/configure.ac to continue. (First reported in [http://forum.videolan.org/viewtopic.php?f=35&amp;amp;t=108927])&lt;br /&gt;
&lt;br /&gt;
===autoreconf: automake failed with exit status: 1 ===&lt;br /&gt;
 make: *** [dvdnav] Error 1&lt;br /&gt;
 ...&lt;br /&gt;
 ... error: possibly undefined macro: AM_PROG_LIBTOOL&lt;br /&gt;
&lt;br /&gt;
This error may occur when compiling with an older Linux distribution, such as Ubuntu 12.04, that doesn&#039;t meet bootstrap prerequisites. As of 2014-08-09, the master branch for vlc-ports/android.git [http://git.videolan.org/?p=vlc-ports/android.git;a=summary] lacks patch 5199 [https://patches.videolan.org/patch/5199/]. Without the patch, compile.sh builds out dated automake and autoconf that may not access libtool despite presence of a current libtool binary amongst supporting tools and a similar or more recent binary present as part of the OS.&lt;br /&gt;
&lt;br /&gt;
To work around this error, patch the master branch or update the prerequisites. For Ubuntu 12.04, upgrade autoconf, automake, and cmake as dictated by vlc/extras/tools/bootstrap.&lt;br /&gt;
&lt;br /&gt;
===Can&#039;t run aapt or adb on Linux 64-bit===&lt;br /&gt;
You must install the 32-bit libraries of the following libraries, as the precompiled Google binaries depend on them: &#039;&#039;libc6&#039;&#039;, &#039;&#039;libstdc++6&#039;&#039;, and &#039;&#039;zlib&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
New versions of Debian and/or Ubuntu require you to install i386 versions of packages:&lt;br /&gt;
 sudo dpkg --add-architecture i386&lt;br /&gt;
 sudo apt-get update&lt;br /&gt;
 sudo apt-get install zlib1g:i386 libstdc++6:i386 libc6:i386&lt;br /&gt;
&lt;br /&gt;
If you are under &#039;&#039;old versions&#039;&#039; of Ubuntu, install ia32-libs can help you solve this issue.&lt;br /&gt;
 sudo apt-get install ia32-libs&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
* [[Android Report bugs]] - Bug reporting guide for VLC-Android.&lt;br /&gt;
&lt;br /&gt;
[[Category:Building]] [[Category:Android]]&lt;/div&gt;</summary>
		<author><name>Dekans</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=AndroidCompile&amp;diff=31751</id>
		<title>AndroidCompile</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=AndroidCompile&amp;diff=31751"/>
		<updated>2017-01-09T14:05:51Z</updated>

		<summary type="html">&lt;p&gt;Dekans: /* Android NDK */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page is an introduction to the compilation of &#039;&#039;&#039;VLC for Android&#039;&#039;&#039; on Linux. &lt;br /&gt;
&lt;br /&gt;
==Android Studio, SDK and NDK installation==&lt;br /&gt;
&lt;br /&gt;
=== Requirements  ===&lt;br /&gt;
* You &#039;&#039;&#039;MUST&#039;&#039;&#039; build on Linux (or OSX if you know what you are doing).&lt;br /&gt;
* The following packages &#039;&#039;&#039;MUST&#039;&#039;&#039; must be installed:&lt;br /&gt;
** the GNU autotools: &#039;&#039;autoconf&#039;&#039;, &#039;&#039;libtool&#039;&#039;, &#039;&#039;automake&#039;&#039; and &#039;&#039;make&#039;&#039; (a.k.a. &#039;&#039;gmake&#039;&#039;)&lt;br /&gt;
** ...and their dependencies: &#039;&#039;m4&#039;&#039; and &#039;&#039;gawk&#039;&#039;, &#039;&#039;mawk&#039;&#039; or &#039;&#039;nawk&#039;&#039;,&lt;br /&gt;
** the GNU C and C++ compilers a.k.a. &#039;&#039;gcc&#039;&#039; and &#039;&#039;g++&#039;&#039;,&lt;br /&gt;
** some GNU build utilities: &#039;&#039;pkg-config&#039;&#039; and &#039;&#039;patch&#039;&#039;,&lt;br /&gt;
** the following other build utilities: &#039;&#039;Apache Ant&#039;&#039; (or &#039;&#039;Ant&#039;&#039;), &#039;&#039;cmake&#039;&#039;, &#039;&#039;protobuf&#039;&#039;, &#039;&#039;ragel&#039;&#039;,&lt;br /&gt;
** the Subversion and Git version control systems&lt;br /&gt;
** &#039;&#039;unzip&#039;&#039; and either &#039;&#039;curl&#039;&#039; or &#039;&#039;wget&#039;&#039; for retreiving sources.&lt;br /&gt;
* Very recent versions of some of those tools may be required. At the time of writing, notably gettext 0.19.3 or later is required.&lt;br /&gt;
* If any of the above is missing, expect the build to fail at some point.&lt;br /&gt;
* If targeting an Android-x86 device, &#039;&#039;yasm&#039;&#039; must be installed too.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color: #ff0000&amp;quot;&amp;gt;&#039;&#039;&#039;64-bit users&#039;&#039;&#039;&amp;lt;/span&amp;gt;: You must install these 32-bit libs as specified here: [[AndroidCompile#Can.27t_run_aapt_or_adb_on_Linux_64-bit]]&lt;br /&gt;
&lt;br /&gt;
==== Example on Ubuntu ====&lt;br /&gt;
Install the packages as follow:&lt;br /&gt;
 sudo apt-get install automake ant autopoint cmake build-essential libtool \&lt;br /&gt;
      patch pkg-config protobuf-compiler ragel subversion unzip git&lt;br /&gt;
&lt;br /&gt;
=== SDK &amp;amp; Android Studio ===&lt;br /&gt;
# Go to [http://developer.android.com/sdk/index.html Android SDK page].&lt;br /&gt;
# Follow instructions to install latest version of Android SDK.&lt;br /&gt;
# Android Studio is recommended, but not mandatory!&lt;br /&gt;
&lt;br /&gt;
You can have [http://developer.android.com/sdk/installing.html more details], if needed.&lt;br /&gt;
&lt;br /&gt;
===Android NDK===&lt;br /&gt;
# Check that the SDK installation is correct. &lt;br /&gt;
# Go to the [http://developer.android.com/sdk/ndk/index.html Android NDK page] and download the &#039;&#039;&#039;NDK r13&#039;&#039;&#039; for Linux. &lt;br /&gt;
# Decompress it to install&lt;br /&gt;
&lt;br /&gt;
== Environment setup  ==&lt;br /&gt;
Set &#039;&#039;&#039;$ANDROID_SDK&#039;&#039;&#039; to point to your Android SDK directory &lt;br /&gt;
&lt;br /&gt;
 export ANDROID_SDK=/path/to/android-sdk&lt;br /&gt;
&lt;br /&gt;
Set &#039;&#039;&#039;$ANDROID_NDK&#039;&#039;&#039; to point to your Android NDK directory &lt;br /&gt;
&lt;br /&gt;
 export ANDROID_NDK=/path/to/android-ndk&lt;br /&gt;
&lt;br /&gt;
Add some useful binaries to your &#039;&#039;&#039;$PATH&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
 export PATH=$PATH:$ANDROID_SDK/platform-tools:$ANDROID_SDK/tools&lt;br /&gt;
&lt;br /&gt;
== Building ==&lt;br /&gt;
=== Get VLC Source ===&lt;br /&gt;
Clone the source from the VLC git!&lt;br /&gt;
&lt;br /&gt;
In your &#039;&#039;android&#039;&#039; source folder, run: &lt;br /&gt;
&lt;br /&gt;
 git clone https://code.videolan.org/videolan/vlc-android.git&lt;br /&gt;
&lt;br /&gt;
==== Setup Gradle build system ====&lt;br /&gt;
&lt;br /&gt;
Just run &#039;&#039;&#039;compile.sh&#039;&#039;&#039; once to set up gradle build system.&lt;br /&gt;
&lt;br /&gt;
It should automatically populate mandatory local.properties and gradle.properties files with:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;local.properties&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 sdk.dir=&amp;lt;SDK path from $ANDROID_SDK&amp;gt;&lt;br /&gt;
 ndk.dir=&amp;lt;NDK path from $ANDROID_NDK&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;gradle.properties&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 keyStoreFile=/home/&#039;&#039;user&#039;&#039;/.android/debug.keystore&lt;br /&gt;
 storealias=androiddebugkey&lt;br /&gt;
 storepwd=android&lt;br /&gt;
&lt;br /&gt;
This sets up gradle to build with correct SDK/NDK and sign builds with your personal debug key.&lt;br /&gt;
&lt;br /&gt;
Now you are able to build from Android Studio with &#039;&#039;&#039;Run&#039;&#039;&#039; command&lt;br /&gt;
&lt;br /&gt;
=== Devices ===&lt;br /&gt;
&lt;br /&gt;
Find the ABI for the target device.&lt;br /&gt;
&lt;br /&gt;
* For a normal (2012-2015 consumer phone or tablet) device (e.g. Cortex-A8 or Cortex-A9)&lt;br /&gt;
 &amp;lt;code&amp;gt;armeabi-v7a&amp;lt;/code&amp;gt;&lt;br /&gt;
* For a Tegra2 device (no [[wikipedia:ARM_architecture#Advanced_SIMD_.28NEON.29|NEON]])&lt;br /&gt;
 &amp;lt;code&amp;gt;armeabi-v7a&amp;lt;/code&amp;gt;&lt;br /&gt;
* For an ARMv6 device&lt;br /&gt;
 &amp;lt;code&amp;gt;armeabi&amp;lt;/code&amp;gt;&lt;br /&gt;
* For an ARMv6 device that does not support FPU&lt;br /&gt;
 &amp;lt;code&amp;gt;armeabi-nofpu&amp;lt;/code&amp;gt;&lt;br /&gt;
* For an ARMv5 device or the Android Emulator&lt;br /&gt;
 &amp;lt;code&amp;gt;armeabi-v5&amp;lt;/code&amp;gt;&lt;br /&gt;
* For a x86 device (e.g. Android-x86, Google TV, Logitech TV, Android x86 smartphones, etc)&lt;br /&gt;
 &amp;lt;code&amp;gt;x86&amp;lt;/code&amp;gt;&lt;br /&gt;
* For a MIPS device (i.e. Ainol Novo tablets):&lt;br /&gt;
 &amp;lt;code&amp;gt;mips&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This value must be passed to the compile.sh script&lt;br /&gt;
&lt;br /&gt;
==== Compile ====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Read&#039;&#039;&#039; compile.sh first, as it contains some very useful and important information. Then run it:&lt;br /&gt;
 sh compile.sh -a &amp;lt;ABI&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039; At this point, you will get an auto-generated debug APK in the vlc-android/build/outputs/apk folder, signed with a debug key.&lt;br /&gt;
&lt;br /&gt;
In order to build a non-debug (release) package:&lt;br /&gt;
 sh compile.sh release&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039; At this point, you will get an release APK in the same folder.&lt;br /&gt;
&lt;br /&gt;
=== Run ===&lt;br /&gt;
Run it and enjoy!&lt;br /&gt;
&lt;br /&gt;
=== Troubleshooting ===&lt;br /&gt;
==== Compilation error on Dependencies ====&lt;br /&gt;
Sometimes, especially when gradle dependencies have been upgraded, the &#039;&#039;compile.sh&#039;&#039; will fail to refetch dependencies. Just close Android Studio and re-run the script to fix this issue.&lt;br /&gt;
&lt;br /&gt;
== Debugging ==&lt;br /&gt;
Here are some helpful links if you wish to debug VLC on Android:&lt;br /&gt;
* [http://developer.android.com/guide/developing/debugging/ddms.html DDMS] &lt;br /&gt;
* [http://developer.android.com/guide/developing/tools/logcat.html Logcat]&lt;br /&gt;
&lt;br /&gt;
===Native debugging===&lt;br /&gt;
If you run VLC Android and you get a crash that looks something like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
I/DEBUG   (  958): *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***&lt;br /&gt;
I/DEBUG   (  958): Build fingerprint: &#039;MOTO/MBTCA/sesame/XT300:2.1-update1/SESLA_U3_01.71.0/110110:user/release-keys&#039;&lt;br /&gt;
I/DEBUG   (  958): pid: 1733, tid: 1733 &amp;gt;&amp;gt;&amp;gt; org.videolan.vlc &amp;lt;&amp;lt;&amp;lt;&lt;br /&gt;
I/DEBUG   (  958): signal 11 (SIGSEGV), fault addr 4237be3c&lt;br /&gt;
I/DEBUG   (  958):  r0 423640a0  r1 7ece77ac  r2 42bccdac  r3 4237be38&lt;br /&gt;
I/DEBUG   (  958):  r4 00000000  r5 42bccdac  r6 002ed088  r7 002ed018&lt;br /&gt;
I/DEBUG   (  958):  r8 7ece78e8  r9 2bafa844  10 0000000e  fp 7ece794c&lt;br /&gt;
I/DEBUG   (  958):  ip 00002ba0  sp 7ece7784  lr 423652e4  pc 4237be3c  cpsr 60000010&lt;br /&gt;
I/DEBUG   (  958):          #00  pc 0037be3c  /data/data/org.videolan.vlc/lib/libvlcjni.so&lt;br /&gt;
I/DEBUG   (  958):          #01  lr 423652e4  /data/data/org.videolan.vlc/lib/libvlcjni.so&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You have a &#039;&#039;&#039;native crash&#039;&#039;&#039;. To debug it, you need to have compiled VLC as above and installed it on your device. Once your compiled VLC build is on your device, you can find the &#039;&#039;&#039;backtrace&#039;&#039;&#039; as follows:&lt;br /&gt;
&lt;br /&gt;
# Make sure you are in the directory that you checked out VLC-Android in.&lt;br /&gt;
# Migrate the libvlc folders. (Do this every time the code is recompiled)&lt;br /&gt;
## cp -r libvlc/jni vlc-android&lt;br /&gt;
## cp -r libvlc/libs vlc-android&lt;br /&gt;
## cp -r libvlc/obj vlc-android&lt;br /&gt;
## (This is because the libvlc and VLC for Android folders were split yet the debugger needs the object files from both.)&lt;br /&gt;
# cd vlc-android&lt;br /&gt;
# $ANDROID_NDK/ndk-gdb --verbose --force --start&lt;br /&gt;
At this point, lots of stuff will appear:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Android NDK installation path: /opt/android-ndk-r8c&lt;br /&gt;
Using default adb command: /opt/android-sdk-linux_x86/platform-tools/adb&lt;br /&gt;
ADB version found: Android Debug Bridge version 1.0.29&lt;br /&gt;
Using ADB flags: &lt;br /&gt;
Using auto-detected project path: .&lt;br /&gt;
Found package name: org.videolan.vlc&lt;br /&gt;
...bunch of stuff skipped...&lt;br /&gt;
GNU gdb (GDB) 7.3.1-gg2&lt;br /&gt;
Copyright (C) 2011 Free Software Foundation, Inc.&lt;br /&gt;
License GPLv3+: GNU GPL version 3 or later &amp;lt;http://gnu.org/licenses/gpl.html&amp;gt;&lt;br /&gt;
This is free software: you are free to change and redistribute it.&lt;br /&gt;
There is NO WARRANTY, to the extent permitted by law.  Type &amp;quot;show copying&amp;quot;&lt;br /&gt;
and &amp;quot;show warranty&amp;quot; for details.&lt;br /&gt;
This GDB was configured as &amp;quot;--host=x86_64-linux-gnu --target=arm-linux-android&amp;quot;.&lt;br /&gt;
For bug reporting instructions, please see:&lt;br /&gt;
&amp;lt;http://www.gnu.org/software/gdb/bugs/&amp;gt;.&lt;br /&gt;
Remote debugging from host 0.0.0.0&lt;br /&gt;
...bunch of stuff skipped...&lt;br /&gt;
libthread_db:td_ta_new: Victory: We can debug theads!&lt;br /&gt;
warning: Breakpoint address adjusted from 0x400deaa5 to 0x400deaa4.&lt;br /&gt;
0x40107a40 in epoll_wait () from /media/data/vlc_android/vlc-android/obj/local/armeabi/libc.so&lt;br /&gt;
(gdb)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;ol start=&amp;quot;4&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;At this point, type in &amp;quot;continue&amp;quot; and press Enter.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Perform the actions you did to make it crash. It will spit out something like this:&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Program received signal SIGSEGV, Segmentation fault.&lt;br /&gt;
0x401120ae in ?? () from /media/data/vlc_android/vlc-android/obj/local/armeabi/libc.so&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;ol start=&amp;quot;6&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Now, just type in &amp;quot;&#039;&#039;&#039;bt full&#039;&#039;&#039;&amp;quot; (excluding the quotation marks) and press Enter. That is your backtrace that you should give to the developers when they ask for it (possibly on a [http://paste.kde.org/ pastebin], too).&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
(gdb) bt full&lt;br /&gt;
#0  0x401120ae in ?? () from /media/data/vlc_android/vlc-android/obj/local/armeabi/libc.so&lt;br /&gt;
No symbol table info available.&lt;br /&gt;
#1  0x40107bd8 in abort () from /media/data/vlc_android/vlc-android/obj/local/armeabi/libc.so&lt;br /&gt;
No symbol table info available.&lt;br /&gt;
#2  0x40118e6a in __assert2 () from /media/data/vlc_android/vlc-android/obj/local/armeabi/libc.so&lt;br /&gt;
No symbol table info available.&lt;br /&gt;
#3  0x5e0cdfdc in var_SetChecked (p_this=0x40134b94, psz_name=0x5ea2fcb8 &amp;quot;rate&amp;quot;, expected_type=80, val=...) at ../../src/misc/variables.c:711&lt;br /&gt;
        i_ret = 0&lt;br /&gt;
        p_var = &amp;lt;optimized out&amp;gt;&lt;br /&gt;
        oldval = {i_int = 4742037487051810480, b_bool = 176, f_float = 2.27765068e+14, psz_string = 0x574f26b0 &amp;quot;X\270|B\001\001&amp;quot;, p_address = 0x574f26b0, &lt;br /&gt;
          p_object = 0x574f26b0, p_list = 0x574f26b0, i_time = 4742037487051810480, coords = {x = 1464805040, y = 1104091640}}&lt;br /&gt;
        __func__ = &amp;quot;var_SetChecked&amp;quot;&lt;br /&gt;
        p_priv = &amp;lt;optimized out&amp;gt;&lt;br /&gt;
#4  0x5e06dd9c in var_SetFloat (f=1.41421354, psz_name=0x5ea2fcb8 &amp;quot;rate____sample_backtrace&amp;quot;, p_obj=0x0) at ../../include/vlc_variables.h:262&lt;br /&gt;
        val = &amp;lt;optimized out&amp;gt;&lt;br /&gt;
#5  libvlc_media_player_set_rate (p_mi=0x0, rate=1.41421354) at ../../lib/media_player.c:1252&lt;br /&gt;
        p_input_thread = &amp;lt;optimized out&amp;gt;&lt;br /&gt;
#6  0x5de7bd18 in Java_org_videolan_vlc_LibVLC_setRate (env=0x41cf0470, thiz=0x8ab00021, rate=1.41421354) at jni/libvlcjni.c:678&lt;br /&gt;
        mp = 0x0&lt;br /&gt;
#7  0x4076de34 in ?? ()&lt;br /&gt;
No symbol table info available.&lt;br /&gt;
#8  0x4076de34 in ?? ()&lt;br /&gt;
No symbol table info available.&lt;br /&gt;
Backtrace stopped: previous frame identical to this frame (corrupt stack?)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Troubleshooting ==&lt;br /&gt;
=== Outdated Awk ===&lt;br /&gt;
If you receive the error message while building:&lt;br /&gt;
&lt;br /&gt;
 Android NDK: Host &#039;awk&#039; tool is outdated. Please define HOST_AWK to point to Gawk or Nawk !    &lt;br /&gt;
&lt;br /&gt;
The prebuilt version of Awk that comes with the Android NDK is outdated. Defining HOST_AWK in your environment does nothing as the system still tries to just the one that comes with the Android NDK. To get around this issue, simply rename or delete the Awk binary that comes with the Android NDK. For example to move it:&lt;br /&gt;
&lt;br /&gt;
 mv $ANDROID_NDK/prebuilt/linux-x86/bin/awk $ANDROID_NDK/prebuilt/linux-x86/bin/awk.old&lt;br /&gt;
&lt;br /&gt;
=== Can&#039;t find Ant ===&lt;br /&gt;
If you&#039;re new to Ant, please be aware that some Linux distributions don&#039;t install it in the usual spot as with other programs. Try checking to see if the directory /usr/share/java/apache-ant/bin exists and add it to your path.&lt;br /&gt;
&lt;br /&gt;
===Outdated autotools-dev===&lt;br /&gt;
If you get the following error message you may have have an outdated version of autotools-dev:&lt;br /&gt;
  Invalid configuration `arm-linux-androideabi&#039;: system `androideabi&#039; not recognized&lt;br /&gt;
You may first want to check if your distribution has any available updates for this package.  Alternatively, you can manually update your config.guess and config.sub files from here: [http://git.savannah.gnu.org/gitweb/?p=config.git;a=tree].  These files are typically located in /usr/share/misc on Debian based distributions.&lt;br /&gt;
&lt;br /&gt;
===autoreconf: automake failed with exit status: 1===&lt;br /&gt;
 automake: warnings are treated as errors&lt;br /&gt;
 configure.ac:41: warning: The &#039;AM_PROG_MKDIR_P&#039; macro is deprecated, and will soon be removed.&lt;br /&gt;
 configure.ac:41: You should use the Autoconf-provided &#039;AC_PROG_MKDIR_P&#039; macro instead,&lt;br /&gt;
 configure.ac:41: and use &#039;$(MKDIR_P)&#039; instead of &#039;$(mkdir_p)&#039;in your Makefile.am files.&lt;br /&gt;
&lt;br /&gt;
If you are using Automake 1.13 or higher, you must remove -Werror from vlc/contrib/android/gnutls/configure.ac to continue. (First reported in [http://forum.videolan.org/viewtopic.php?f=35&amp;amp;t=108927])&lt;br /&gt;
&lt;br /&gt;
===autoreconf: automake failed with exit status: 1 ===&lt;br /&gt;
 make: *** [dvdnav] Error 1&lt;br /&gt;
 ...&lt;br /&gt;
 ... error: possibly undefined macro: AM_PROG_LIBTOOL&lt;br /&gt;
&lt;br /&gt;
This error may occur when compiling with an older Linux distribution, such as Ubuntu 12.04, that doesn&#039;t meet bootstrap prerequisites. As of 2014-08-09, the master branch for vlc-ports/android.git [http://git.videolan.org/?p=vlc-ports/android.git;a=summary] lacks patch 5199 [https://patches.videolan.org/patch/5199/]. Without the patch, compile.sh builds out dated automake and autoconf that may not access libtool despite presence of a current libtool binary amongst supporting tools and a similar or more recent binary present as part of the OS.&lt;br /&gt;
&lt;br /&gt;
To work around this error, patch the master branch or update the prerequisites. For Ubuntu 12.04, upgrade autoconf, automake, and cmake as dictated by vlc/extras/tools/bootstrap.&lt;br /&gt;
&lt;br /&gt;
===Can&#039;t run aapt or adb on Linux 64-bit===&lt;br /&gt;
You must install the 32-bit libraries of the following libraries, as the precompiled Google binaries depend on them: &#039;&#039;libc6&#039;&#039;, &#039;&#039;libstdc++6&#039;&#039;, and &#039;&#039;zlib&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
New versions of Debian and/or Ubuntu require you to install i386 versions of packages:&lt;br /&gt;
 sudo dpkg --add-architecture i386&lt;br /&gt;
 sudo apt-get update&lt;br /&gt;
 sudo apt-get install zlib1g:i386 libstdc++6:i386 libc6:i386&lt;br /&gt;
&lt;br /&gt;
If you are under &#039;&#039;old versions&#039;&#039; of Ubuntu, install ia32-libs can help you solve this issue.&lt;br /&gt;
 sudo apt-get install ia32-libs&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
* [[Android Report bugs]] - Bug reporting guide for VLC-Android.&lt;br /&gt;
&lt;br /&gt;
[[Category:Building]] [[Category:Android]]&lt;/div&gt;</summary>
		<author><name>Dekans</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=AndroidCompile&amp;diff=31237</id>
		<title>AndroidCompile</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=AndroidCompile&amp;diff=31237"/>
		<updated>2016-09-30T16:14:34Z</updated>

		<summary type="html">&lt;p&gt;Dekans: Note for Ubuntu 15.04 is outdated&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page is an introduction to the compilation of &#039;&#039;&#039;VLC for Android&#039;&#039;&#039; on Linux. &lt;br /&gt;
&lt;br /&gt;
==Android Studio, SDK and NDK installation==&lt;br /&gt;
&lt;br /&gt;
=== Requirements  ===&lt;br /&gt;
* You &#039;&#039;&#039;MUST&#039;&#039;&#039; build on Linux (or OSX if you know what you are doing).&lt;br /&gt;
* The following packages &#039;&#039;&#039;MUST&#039;&#039;&#039; must be installed:&lt;br /&gt;
** the GNU autotools: &#039;&#039;autoconf&#039;&#039;, &#039;&#039;libtool&#039;&#039;, &#039;&#039;automake&#039;&#039; and &#039;&#039;make&#039;&#039; (a.k.a. &#039;&#039;gmake&#039;&#039;)&lt;br /&gt;
** ...and their dependencies: &#039;&#039;m4&#039;&#039; and &#039;&#039;gawk&#039;&#039;, &#039;&#039;mawk&#039;&#039; or &#039;&#039;nawk&#039;&#039;,&lt;br /&gt;
** the GNU C and C++ compilers a.k.a. &#039;&#039;gcc&#039;&#039; and &#039;&#039;g++&#039;&#039;,&lt;br /&gt;
** some GNU build utilities: &#039;&#039;pkg-config&#039;&#039; and &#039;&#039;patch&#039;&#039;,&lt;br /&gt;
** the following other build utilities: &#039;&#039;Apache Ant&#039;&#039; (or &#039;&#039;Ant&#039;&#039;), &#039;&#039;cmake&#039;&#039;, &#039;&#039;protobuf&#039;&#039;, &#039;&#039;ragel&#039;&#039;,&lt;br /&gt;
** the Subversion and Git version control systems&lt;br /&gt;
** &#039;&#039;unzip&#039;&#039; and either &#039;&#039;curl&#039;&#039; or &#039;&#039;wget&#039;&#039; for retreiving sources.&lt;br /&gt;
* Very recent versions of some of those tools may be required. At the time of writing, notably gettext 0.19.3 or later is required.&lt;br /&gt;
* If any of the above is missing, expect the build to fail at some point.&lt;br /&gt;
* If targeting an Android-x86 device, &#039;&#039;yasm&#039;&#039; must be installed too.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color: #ff0000&amp;quot;&amp;gt;&#039;&#039;&#039;64-bit users&#039;&#039;&#039;&amp;lt;/span&amp;gt;: You must install these 32-bit libs as specified here: [[AndroidCompile#Can.27t_run_aapt_or_adb_on_Linux_64-bit]]&lt;br /&gt;
&lt;br /&gt;
==== Example on Ubuntu ====&lt;br /&gt;
Install the packages as follow:&lt;br /&gt;
 sudo apt-get install automake ant autopoint cmake build-essential libtool \&lt;br /&gt;
      patch pkg-config protobuf-compiler ragel subversion unzip git&lt;br /&gt;
&lt;br /&gt;
=== SDK &amp;amp; Android Studio ===&lt;br /&gt;
# Go to [http://developer.android.com/sdk/index.html Android SDK page].&lt;br /&gt;
# Follow instructions to install latest version of Android SDK.&lt;br /&gt;
# Android Studio is recommended, but not mandatory!&lt;br /&gt;
&lt;br /&gt;
You can have [http://developer.android.com/sdk/installing.html more details], if needed.&lt;br /&gt;
&lt;br /&gt;
===Android NDK===&lt;br /&gt;
# Check that the SDK installation is correct. &lt;br /&gt;
# Go to the [http://developer.android.com/sdk/ndk/index.html Android NDK page] and download the &#039;&#039;&#039;NDK r12&#039;&#039;&#039; for Linux. &lt;br /&gt;
# Decompress it to install&lt;br /&gt;
&lt;br /&gt;
== Environment setup  ==&lt;br /&gt;
Set &#039;&#039;&#039;$ANDROID_SDK&#039;&#039;&#039; to point to your Android SDK directory &lt;br /&gt;
&lt;br /&gt;
 export ANDROID_SDK=/path/to/android-sdk&lt;br /&gt;
&lt;br /&gt;
Set &#039;&#039;&#039;$ANDROID_NDK&#039;&#039;&#039; to point to your Android NDK directory &lt;br /&gt;
&lt;br /&gt;
 export ANDROID_NDK=/path/to/android-ndk&lt;br /&gt;
&lt;br /&gt;
Add some useful binaries to your &#039;&#039;&#039;$PATH&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
 export PATH=$PATH:$ANDROID_SDK/platform-tools:$ANDROID_SDK/tools&lt;br /&gt;
&lt;br /&gt;
== Building ==&lt;br /&gt;
=== Get VLC Source ===&lt;br /&gt;
Clone the source from the VLC git!&lt;br /&gt;
&lt;br /&gt;
In your &#039;&#039;android&#039;&#039; source folder, run: &lt;br /&gt;
&lt;br /&gt;
 git clone https://code.videolan.org/videolan/vlc-android.git&lt;br /&gt;
&lt;br /&gt;
==== Setup Gradle build system ====&lt;br /&gt;
&lt;br /&gt;
Just run &#039;&#039;&#039;compile.sh&#039;&#039;&#039; once to set up gradle build system.&lt;br /&gt;
&lt;br /&gt;
It should automatically populate mandatory local.properties and gradle.properties files with:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;local.properties&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 sdk.dir=&amp;lt;SDK path from $ANDROID_SDK&amp;gt;&lt;br /&gt;
 ndk.dir=&amp;lt;NDK path from $ANDROID_NDK&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;gradle.properties&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 keyStoreFile=/home/&#039;&#039;user&#039;&#039;/.android/debug.keystore&lt;br /&gt;
 storealias=androiddebugkey&lt;br /&gt;
 storepwd=android&lt;br /&gt;
&lt;br /&gt;
This sets up gradle to build with correct SDK/NDK and sign builds with your personal debug key.&lt;br /&gt;
&lt;br /&gt;
Now you are able to build from Android Studio with &#039;&#039;&#039;Run&#039;&#039;&#039; command&lt;br /&gt;
&lt;br /&gt;
=== Devices ===&lt;br /&gt;
&lt;br /&gt;
Find the ABI for the target device.&lt;br /&gt;
&lt;br /&gt;
* For a normal (2012-2015 consumer phone or tablet) device (e.g. Cortex-A8 or Cortex-A9)&lt;br /&gt;
 &amp;lt;code&amp;gt;armeabi-v7a&amp;lt;/code&amp;gt;&lt;br /&gt;
* For a Tegra2 device (no [[wikipedia:ARM_architecture#Advanced_SIMD_.28NEON.29|NEON]])&lt;br /&gt;
 &amp;lt;code&amp;gt;armeabi-v7a&amp;lt;/code&amp;gt;&lt;br /&gt;
* For an ARMv6 device&lt;br /&gt;
 &amp;lt;code&amp;gt;armeabi&amp;lt;/code&amp;gt;&lt;br /&gt;
* For an ARMv6 device that does not support FPU&lt;br /&gt;
 &amp;lt;code&amp;gt;armeabi-nofpu&amp;lt;/code&amp;gt;&lt;br /&gt;
* For an ARMv5 device or the Android Emulator&lt;br /&gt;
 &amp;lt;code&amp;gt;armeabi-v5&amp;lt;/code&amp;gt;&lt;br /&gt;
* For a x86 device (e.g. Android-x86, Google TV, Logitech TV, Android x86 smartphones, etc)&lt;br /&gt;
 &amp;lt;code&amp;gt;x86&amp;lt;/code&amp;gt;&lt;br /&gt;
* For a MIPS device (i.e. Ainol Novo tablets):&lt;br /&gt;
 &amp;lt;code&amp;gt;mips&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This value must be passed to the compile.sh script&lt;br /&gt;
&lt;br /&gt;
==== Compile ====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Read&#039;&#039;&#039; compile.sh first, as it contains some very useful and important information. Then run it:&lt;br /&gt;
 sh compile.sh -a &amp;lt;ABI&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039; At this point, you will get an auto-generated debug APK in the vlc-android/build/outputs/apk folder, signed with a debug key.&lt;br /&gt;
&lt;br /&gt;
In order to build a non-debug (release) package:&lt;br /&gt;
 sh compile.sh release&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039; At this point, you will get an release APK in the same folder.&lt;br /&gt;
&lt;br /&gt;
=== Run ===&lt;br /&gt;
Run it and enjoy!&lt;br /&gt;
&lt;br /&gt;
=== Troubleshooting ===&lt;br /&gt;
==== Compilation error on Dependencies ====&lt;br /&gt;
Sometimes, especially when gradle dependencies have been upgraded, the &#039;&#039;compile.sh&#039;&#039; will fail to refetch dependencies. Just close Android Studio and re-run the script to fix this issue.&lt;br /&gt;
&lt;br /&gt;
== Debugging ==&lt;br /&gt;
Here are some helpful links if you wish to debug VLC on Android:&lt;br /&gt;
* [http://developer.android.com/guide/developing/debugging/ddms.html DDMS] &lt;br /&gt;
* [http://developer.android.com/guide/developing/tools/logcat.html Logcat]&lt;br /&gt;
&lt;br /&gt;
===Native debugging===&lt;br /&gt;
If you run VLC Android and you get a crash that looks something like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
I/DEBUG   (  958): *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***&lt;br /&gt;
I/DEBUG   (  958): Build fingerprint: &#039;MOTO/MBTCA/sesame/XT300:2.1-update1/SESLA_U3_01.71.0/110110:user/release-keys&#039;&lt;br /&gt;
I/DEBUG   (  958): pid: 1733, tid: 1733 &amp;gt;&amp;gt;&amp;gt; org.videolan.vlc &amp;lt;&amp;lt;&amp;lt;&lt;br /&gt;
I/DEBUG   (  958): signal 11 (SIGSEGV), fault addr 4237be3c&lt;br /&gt;
I/DEBUG   (  958):  r0 423640a0  r1 7ece77ac  r2 42bccdac  r3 4237be38&lt;br /&gt;
I/DEBUG   (  958):  r4 00000000  r5 42bccdac  r6 002ed088  r7 002ed018&lt;br /&gt;
I/DEBUG   (  958):  r8 7ece78e8  r9 2bafa844  10 0000000e  fp 7ece794c&lt;br /&gt;
I/DEBUG   (  958):  ip 00002ba0  sp 7ece7784  lr 423652e4  pc 4237be3c  cpsr 60000010&lt;br /&gt;
I/DEBUG   (  958):          #00  pc 0037be3c  /data/data/org.videolan.vlc/lib/libvlcjni.so&lt;br /&gt;
I/DEBUG   (  958):          #01  lr 423652e4  /data/data/org.videolan.vlc/lib/libvlcjni.so&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You have a &#039;&#039;&#039;native crash&#039;&#039;&#039;. To debug it, you need to have compiled VLC as above and installed it on your device. Once your compiled VLC build is on your device, you can find the &#039;&#039;&#039;backtrace&#039;&#039;&#039; as follows:&lt;br /&gt;
&lt;br /&gt;
# Make sure you are in the directory that you checked out VLC-Android in.&lt;br /&gt;
# Migrate the libvlc folders. (Do this every time the code is recompiled)&lt;br /&gt;
## cp -r libvlc/jni vlc-android&lt;br /&gt;
## cp -r libvlc/libs vlc-android&lt;br /&gt;
## cp -r libvlc/obj vlc-android&lt;br /&gt;
## (This is because the libvlc and VLC for Android folders were split yet the debugger needs the object files from both.)&lt;br /&gt;
# cd vlc-android&lt;br /&gt;
# $ANDROID_NDK/ndk-gdb --verbose --force --start&lt;br /&gt;
At this point, lots of stuff will appear:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Android NDK installation path: /opt/android-ndk-r8c&lt;br /&gt;
Using default adb command: /opt/android-sdk-linux_x86/platform-tools/adb&lt;br /&gt;
ADB version found: Android Debug Bridge version 1.0.29&lt;br /&gt;
Using ADB flags: &lt;br /&gt;
Using auto-detected project path: .&lt;br /&gt;
Found package name: org.videolan.vlc&lt;br /&gt;
...bunch of stuff skipped...&lt;br /&gt;
GNU gdb (GDB) 7.3.1-gg2&lt;br /&gt;
Copyright (C) 2011 Free Software Foundation, Inc.&lt;br /&gt;
License GPLv3+: GNU GPL version 3 or later &amp;lt;http://gnu.org/licenses/gpl.html&amp;gt;&lt;br /&gt;
This is free software: you are free to change and redistribute it.&lt;br /&gt;
There is NO WARRANTY, to the extent permitted by law.  Type &amp;quot;show copying&amp;quot;&lt;br /&gt;
and &amp;quot;show warranty&amp;quot; for details.&lt;br /&gt;
This GDB was configured as &amp;quot;--host=x86_64-linux-gnu --target=arm-linux-android&amp;quot;.&lt;br /&gt;
For bug reporting instructions, please see:&lt;br /&gt;
&amp;lt;http://www.gnu.org/software/gdb/bugs/&amp;gt;.&lt;br /&gt;
Remote debugging from host 0.0.0.0&lt;br /&gt;
...bunch of stuff skipped...&lt;br /&gt;
libthread_db:td_ta_new: Victory: We can debug theads!&lt;br /&gt;
warning: Breakpoint address adjusted from 0x400deaa5 to 0x400deaa4.&lt;br /&gt;
0x40107a40 in epoll_wait () from /media/data/vlc_android/vlc-android/obj/local/armeabi/libc.so&lt;br /&gt;
(gdb)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;ol start=&amp;quot;4&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;At this point, type in &amp;quot;continue&amp;quot; and press Enter.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Perform the actions you did to make it crash. It will spit out something like this:&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Program received signal SIGSEGV, Segmentation fault.&lt;br /&gt;
0x401120ae in ?? () from /media/data/vlc_android/vlc-android/obj/local/armeabi/libc.so&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;ol start=&amp;quot;6&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Now, just type in &amp;quot;&#039;&#039;&#039;bt full&#039;&#039;&#039;&amp;quot; (excluding the quotation marks) and press Enter. That is your backtrace that you should give to the developers when they ask for it (possibly on a [http://paste.kde.org/ pastebin], too).&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
(gdb) bt full&lt;br /&gt;
#0  0x401120ae in ?? () from /media/data/vlc_android/vlc-android/obj/local/armeabi/libc.so&lt;br /&gt;
No symbol table info available.&lt;br /&gt;
#1  0x40107bd8 in abort () from /media/data/vlc_android/vlc-android/obj/local/armeabi/libc.so&lt;br /&gt;
No symbol table info available.&lt;br /&gt;
#2  0x40118e6a in __assert2 () from /media/data/vlc_android/vlc-android/obj/local/armeabi/libc.so&lt;br /&gt;
No symbol table info available.&lt;br /&gt;
#3  0x5e0cdfdc in var_SetChecked (p_this=0x40134b94, psz_name=0x5ea2fcb8 &amp;quot;rate&amp;quot;, expected_type=80, val=...) at ../../src/misc/variables.c:711&lt;br /&gt;
        i_ret = 0&lt;br /&gt;
        p_var = &amp;lt;optimized out&amp;gt;&lt;br /&gt;
        oldval = {i_int = 4742037487051810480, b_bool = 176, f_float = 2.27765068e+14, psz_string = 0x574f26b0 &amp;quot;X\270|B\001\001&amp;quot;, p_address = 0x574f26b0, &lt;br /&gt;
          p_object = 0x574f26b0, p_list = 0x574f26b0, i_time = 4742037487051810480, coords = {x = 1464805040, y = 1104091640}}&lt;br /&gt;
        __func__ = &amp;quot;var_SetChecked&amp;quot;&lt;br /&gt;
        p_priv = &amp;lt;optimized out&amp;gt;&lt;br /&gt;
#4  0x5e06dd9c in var_SetFloat (f=1.41421354, psz_name=0x5ea2fcb8 &amp;quot;rate____sample_backtrace&amp;quot;, p_obj=0x0) at ../../include/vlc_variables.h:262&lt;br /&gt;
        val = &amp;lt;optimized out&amp;gt;&lt;br /&gt;
#5  libvlc_media_player_set_rate (p_mi=0x0, rate=1.41421354) at ../../lib/media_player.c:1252&lt;br /&gt;
        p_input_thread = &amp;lt;optimized out&amp;gt;&lt;br /&gt;
#6  0x5de7bd18 in Java_org_videolan_vlc_LibVLC_setRate (env=0x41cf0470, thiz=0x8ab00021, rate=1.41421354) at jni/libvlcjni.c:678&lt;br /&gt;
        mp = 0x0&lt;br /&gt;
#7  0x4076de34 in ?? ()&lt;br /&gt;
No symbol table info available.&lt;br /&gt;
#8  0x4076de34 in ?? ()&lt;br /&gt;
No symbol table info available.&lt;br /&gt;
Backtrace stopped: previous frame identical to this frame (corrupt stack?)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Troubleshooting ==&lt;br /&gt;
=== Outdated Awk ===&lt;br /&gt;
If you receive the error message while building:&lt;br /&gt;
&lt;br /&gt;
 Android NDK: Host &#039;awk&#039; tool is outdated. Please define HOST_AWK to point to Gawk or Nawk !    &lt;br /&gt;
&lt;br /&gt;
The prebuilt version of Awk that comes with the Android NDK is outdated. Defining HOST_AWK in your environment does nothing as the system still tries to just the one that comes with the Android NDK. To get around this issue, simply rename or delete the Awk binary that comes with the Android NDK. For example to move it:&lt;br /&gt;
&lt;br /&gt;
 mv $ANDROID_NDK/prebuilt/linux-x86/bin/awk $ANDROID_NDK/prebuilt/linux-x86/bin/awk.old&lt;br /&gt;
&lt;br /&gt;
=== Can&#039;t find Ant ===&lt;br /&gt;
If you&#039;re new to Ant, please be aware that some Linux distributions don&#039;t install it in the usual spot as with other programs. Try checking to see if the directory /usr/share/java/apache-ant/bin exists and add it to your path.&lt;br /&gt;
&lt;br /&gt;
===Outdated autotools-dev===&lt;br /&gt;
If you get the following error message you may have have an outdated version of autotools-dev:&lt;br /&gt;
  Invalid configuration `arm-linux-androideabi&#039;: system `androideabi&#039; not recognized&lt;br /&gt;
You may first want to check if your distribution has any available updates for this package.  Alternatively, you can manually update your config.guess and config.sub files from here: [http://git.savannah.gnu.org/gitweb/?p=config.git;a=tree].  These files are typically located in /usr/share/misc on Debian based distributions.&lt;br /&gt;
&lt;br /&gt;
===autoreconf: automake failed with exit status: 1===&lt;br /&gt;
 automake: warnings are treated as errors&lt;br /&gt;
 configure.ac:41: warning: The &#039;AM_PROG_MKDIR_P&#039; macro is deprecated, and will soon be removed.&lt;br /&gt;
 configure.ac:41: You should use the Autoconf-provided &#039;AC_PROG_MKDIR_P&#039; macro instead,&lt;br /&gt;
 configure.ac:41: and use &#039;$(MKDIR_P)&#039; instead of &#039;$(mkdir_p)&#039;in your Makefile.am files.&lt;br /&gt;
&lt;br /&gt;
If you are using Automake 1.13 or higher, you must remove -Werror from vlc/contrib/android/gnutls/configure.ac to continue. (First reported in [http://forum.videolan.org/viewtopic.php?f=35&amp;amp;t=108927])&lt;br /&gt;
&lt;br /&gt;
===autoreconf: automake failed with exit status: 1 ===&lt;br /&gt;
 make: *** [dvdnav] Error 1&lt;br /&gt;
 ...&lt;br /&gt;
 ... error: possibly undefined macro: AM_PROG_LIBTOOL&lt;br /&gt;
&lt;br /&gt;
This error may occur when compiling with an older Linux distribution, such as Ubuntu 12.04, that doesn&#039;t meet bootstrap prerequisites. As of 2014-08-09, the master branch for vlc-ports/android.git [http://git.videolan.org/?p=vlc-ports/android.git;a=summary] lacks patch 5199 [https://patches.videolan.org/patch/5199/]. Without the patch, compile.sh builds out dated automake and autoconf that may not access libtool despite presence of a current libtool binary amongst supporting tools and a similar or more recent binary present as part of the OS.&lt;br /&gt;
&lt;br /&gt;
To work around this error, patch the master branch or update the prerequisites. For Ubuntu 12.04, upgrade autoconf, automake, and cmake as dictated by vlc/extras/tools/bootstrap.&lt;br /&gt;
&lt;br /&gt;
===Can&#039;t run aapt or adb on Linux 64-bit===&lt;br /&gt;
You must install the 32-bit libraries of the following libraries, as the precompiled Google binaries depend on them: &#039;&#039;libc6&#039;&#039;, &#039;&#039;libstdc++6&#039;&#039;, and &#039;&#039;zlib&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
New versions of Debian and/or Ubuntu require you to install i386 versions of packages:&lt;br /&gt;
 sudo dpkg --add-architecture i386&lt;br /&gt;
 sudo apt-get update&lt;br /&gt;
 sudo apt-get install zlib1g:i386 libstdc++6:i386 libc6:i386&lt;br /&gt;
&lt;br /&gt;
If you are under &#039;&#039;old versions&#039;&#039; of Ubuntu, install ia32-libs can help you solve this issue.&lt;br /&gt;
 sudo apt-get install ia32-libs&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
* [[Android Report bugs]] - Bug reporting guide for VLC-Android.&lt;br /&gt;
&lt;br /&gt;
[[Category:Building]] [[Category:Android]]&lt;/div&gt;</summary>
		<author><name>Dekans</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=Android_Player_Intents&amp;diff=31129</id>
		<title>Android Player Intents</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=Android_Player_Intents&amp;diff=31129"/>
		<updated>2016-06-29T10:24:41Z</updated>

		<summary type="html">&lt;p&gt;Dekans: Add position description&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Open a media with VLC Player=&lt;br /&gt;
To play a media with VLC player, use an intent with the following settings&lt;br /&gt;
&lt;br /&gt;
== action ==&lt;br /&gt;
 Intent.ACTION_VIEW (&amp;quot;android.intent.action.VIEW&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
== Package name ==&lt;br /&gt;
 &amp;quot;org.videolan.vlc&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== data ==&lt;br /&gt;
The media Uri&lt;br /&gt;
&lt;br /&gt;
== type ==&lt;br /&gt;
one of:&lt;br /&gt;
&lt;br /&gt;
* video/*&lt;br /&gt;
* audio/*&lt;br /&gt;
* */rmvb&lt;br /&gt;
* */avi&lt;br /&gt;
* */mkv&lt;br /&gt;
* application/3gpp*&lt;br /&gt;
* application/mp4&lt;br /&gt;
* application/mpeg*&lt;br /&gt;
* application/ogg&lt;br /&gt;
* application/sdp&lt;br /&gt;
* application/vnd.3gp*&lt;br /&gt;
* application/vnd.apple.mpegurl&lt;br /&gt;
* application/vnd.dvd*&lt;br /&gt;
* application/vnd.dolby*&lt;br /&gt;
* application/vnd.rn-realmedia*&lt;br /&gt;
* application/x-iso9660-image&lt;br /&gt;
* application/x-extension-mp4&lt;br /&gt;
* application/x-flac&lt;br /&gt;
* application/x-matroska&lt;br /&gt;
* application/x-mpegURL&lt;br /&gt;
* application/x-ogg&lt;br /&gt;
* application/x-quicktimeplayer&lt;br /&gt;
* application/x-shockwave-flash&lt;br /&gt;
* application/xspf+xml&lt;br /&gt;
* misc/ultravox&lt;br /&gt;
&lt;br /&gt;
== Extras (optional) ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Value !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| &amp;quot;subtitles_location&amp;quot; || String || Path of a subtitles file&lt;br /&gt;
|-&lt;br /&gt;
| &amp;quot;title&amp;quot; || String || Title you want to display&lt;br /&gt;
|-&lt;br /&gt;
| &amp;quot;from_start&amp;quot; || boolean || Force playback from the beginning&lt;br /&gt;
|-&lt;br /&gt;
| &amp;quot;position&amp;quot; || int/long || Set position to start playback, in milliseconds&lt;br /&gt;
|-&lt;br /&gt;
| &amp;quot;extra_duration&amp;quot; || long || Media duration&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Sample code ==&lt;br /&gt;
For a simple media playback:&lt;br /&gt;
  int vlcRequestCode = 42;&lt;br /&gt;
  Uri uri = Uri.parse(&amp;quot;file:///storage/emulated/0/Movies/KUNG FURY Official Movie.mp4&amp;quot;);&lt;br /&gt;
  Intent vlcIntent = new Intent(Intent.ACTION_VIEW);&lt;br /&gt;
  vlcIntent.setPackage(&amp;quot;org.videolan.vlc&amp;quot;);&lt;br /&gt;
  vlcIntent.setDataAndTypeAndNormalize(uri, &amp;quot;video/*&amp;quot;);&lt;br /&gt;
  vlcIntent.putExtra(&amp;quot;title&amp;quot;, &amp;quot;Kung Fury&amp;quot;);&lt;br /&gt;
  vlcIntent.putExtra(&amp;quot;from_start&amp;quot;, false);&lt;br /&gt;
  vlcIntent.putExtra(&amp;quot;position&amp;quot;, 90000l);&lt;br /&gt;
  vlcIntent.putExtra(&amp;quot;subtitles_location&amp;quot;, &amp;quot;/sdcard/Movies/Fifty-Fifty.srt&amp;quot;);&lt;br /&gt;
  startActivityForResult(vlcIntent, vlcRequestCode);&lt;br /&gt;
&lt;br /&gt;
If you specifically want start VideoPlayerActivity, you can set&lt;br /&gt;
  vlcIntent.setComponent(new ComponentName(&amp;quot;org.videolan.vlc&amp;quot;, &amp;quot;org.videolan.vlc.gui.video.VideoPlayerActivity&amp;quot;));&lt;br /&gt;
&lt;br /&gt;
=Get result code from VLC=&lt;br /&gt;
Since version 1.4.1, Android VLC application returns an intent when closing.&lt;br /&gt;
&lt;br /&gt;
Here is the description of this intent:&lt;br /&gt;
&lt;br /&gt;
==Intent action==&lt;br /&gt;
 &amp;quot;org.videolan.vlc.player.result&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==Result code==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Result !! Value (int) !! Description&lt;br /&gt;
|-&lt;br /&gt;
| RESULT_OK || -1 || Video finished or user ended playback&lt;br /&gt;
|-&lt;br /&gt;
| RESULT_CANCELED || 0 || No compatible cpu, incorrect VLC abi variant installed&lt;br /&gt;
|-&lt;br /&gt;
| RESULT_CONNECTION_FAILED || 2 || Connection failed to audio service&lt;br /&gt;
|-&lt;br /&gt;
| RESULT_PLAYBACK_ERROR || 3 || VLC is not able to play this file, it could be incorrect path/uri, not supported codec or broken file&lt;br /&gt;
|-&lt;br /&gt;
| RESULT_HARDWARE_ACCELERATION_ERROR || 4 || Error with hardware acceleration, user refused to switch to software decoding&lt;br /&gt;
|-&lt;br /&gt;
| RESULT_VIDEO_TRACK_LOST || 5 || VLC continues playback, but for audio track only. (Audio file detected or user chose to)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Data==&lt;br /&gt;
Media Uri&lt;br /&gt;
&lt;br /&gt;
You can check the source [http://git.videolan.org/?p=vlc-ports/android.git;a=blob;f=vlc-android/src/org/videolan/vlc/gui/video/VideoPlayerActivity.java;hb=HEAD here].&lt;br /&gt;
&lt;br /&gt;
==Extras==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Value !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| &amp;quot;extra_position&amp;quot; || long || Last position in media when player exited&lt;br /&gt;
|-&lt;br /&gt;
| &amp;quot;extra_duration&amp;quot; || long || Total duration of the media&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
* [[Android Report bugs]] - Bug reporting guide for VLC-Android.&lt;br /&gt;
&lt;br /&gt;
[[Category:Building]] [[Category:Android]]&lt;/div&gt;</summary>
		<author><name>Dekans</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=Android_Player_Intents&amp;diff=31128</id>
		<title>Android Player Intents</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=Android_Player_Intents&amp;diff=31128"/>
		<updated>2016-06-29T10:23:46Z</updated>

		<summary type="html">&lt;p&gt;Dekans: add &amp;#039;position&amp;#039; intent&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Open a media with VLC Player=&lt;br /&gt;
To play a media with VLC player, use an intent with the following settings&lt;br /&gt;
&lt;br /&gt;
== action ==&lt;br /&gt;
 Intent.ACTION_VIEW (&amp;quot;android.intent.action.VIEW&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
== Package name ==&lt;br /&gt;
 &amp;quot;org.videolan.vlc&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== data ==&lt;br /&gt;
The media Uri&lt;br /&gt;
&lt;br /&gt;
== type ==&lt;br /&gt;
one of:&lt;br /&gt;
&lt;br /&gt;
* video/*&lt;br /&gt;
* audio/*&lt;br /&gt;
* */rmvb&lt;br /&gt;
* */avi&lt;br /&gt;
* */mkv&lt;br /&gt;
* application/3gpp*&lt;br /&gt;
* application/mp4&lt;br /&gt;
* application/mpeg*&lt;br /&gt;
* application/ogg&lt;br /&gt;
* application/sdp&lt;br /&gt;
* application/vnd.3gp*&lt;br /&gt;
* application/vnd.apple.mpegurl&lt;br /&gt;
* application/vnd.dvd*&lt;br /&gt;
* application/vnd.dolby*&lt;br /&gt;
* application/vnd.rn-realmedia*&lt;br /&gt;
* application/x-iso9660-image&lt;br /&gt;
* application/x-extension-mp4&lt;br /&gt;
* application/x-flac&lt;br /&gt;
* application/x-matroska&lt;br /&gt;
* application/x-mpegURL&lt;br /&gt;
* application/x-ogg&lt;br /&gt;
* application/x-quicktimeplayer&lt;br /&gt;
* application/x-shockwave-flash&lt;br /&gt;
* application/xspf+xml&lt;br /&gt;
* misc/ultravox&lt;br /&gt;
&lt;br /&gt;
== Extras (optional) ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Value !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| &amp;quot;subtitles_location&amp;quot; || String || Path of a subtitles file&lt;br /&gt;
|-&lt;br /&gt;
| &amp;quot;title&amp;quot; || String || Title you want to display&lt;br /&gt;
|-&lt;br /&gt;
| &amp;quot;from_start&amp;quot; || boolean || Force playback from the beginning&lt;br /&gt;
|-&lt;br /&gt;
| &amp;quot;extra_duration&amp;quot; || long || Media duration&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Sample code ==&lt;br /&gt;
For a simple media playback:&lt;br /&gt;
  int vlcRequestCode = 42;&lt;br /&gt;
  Uri uri = Uri.parse(&amp;quot;file:///storage/emulated/0/Movies/KUNG FURY Official Movie.mp4&amp;quot;);&lt;br /&gt;
  Intent vlcIntent = new Intent(Intent.ACTION_VIEW);&lt;br /&gt;
  vlcIntent.setPackage(&amp;quot;org.videolan.vlc&amp;quot;);&lt;br /&gt;
  vlcIntent.setDataAndTypeAndNormalize(uri, &amp;quot;video/*&amp;quot;);&lt;br /&gt;
  vlcIntent.putExtra(&amp;quot;title&amp;quot;, &amp;quot;Kung Fury&amp;quot;);&lt;br /&gt;
  vlcIntent.putExtra(&amp;quot;from_start&amp;quot;, false);&lt;br /&gt;
  vlcIntent.putExtra(&amp;quot;position&amp;quot;, 90000l);&lt;br /&gt;
  vlcIntent.putExtra(&amp;quot;subtitles_location&amp;quot;, &amp;quot;/sdcard/Movies/Fifty-Fifty.srt&amp;quot;);&lt;br /&gt;
  startActivityForResult(vlcIntent, vlcRequestCode);&lt;br /&gt;
&lt;br /&gt;
If you specifically want start VideoPlayerActivity, you can set&lt;br /&gt;
  vlcIntent.setComponent(new ComponentName(&amp;quot;org.videolan.vlc&amp;quot;, &amp;quot;org.videolan.vlc.gui.video.VideoPlayerActivity&amp;quot;));&lt;br /&gt;
&lt;br /&gt;
=Get result code from VLC=&lt;br /&gt;
Since version 1.4.1, Android VLC application returns an intent when closing.&lt;br /&gt;
&lt;br /&gt;
Here is the description of this intent:&lt;br /&gt;
&lt;br /&gt;
==Intent action==&lt;br /&gt;
 &amp;quot;org.videolan.vlc.player.result&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==Result code==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Result !! Value (int) !! Description&lt;br /&gt;
|-&lt;br /&gt;
| RESULT_OK || -1 || Video finished or user ended playback&lt;br /&gt;
|-&lt;br /&gt;
| RESULT_CANCELED || 0 || No compatible cpu, incorrect VLC abi variant installed&lt;br /&gt;
|-&lt;br /&gt;
| RESULT_CONNECTION_FAILED || 2 || Connection failed to audio service&lt;br /&gt;
|-&lt;br /&gt;
| RESULT_PLAYBACK_ERROR || 3 || VLC is not able to play this file, it could be incorrect path/uri, not supported codec or broken file&lt;br /&gt;
|-&lt;br /&gt;
| RESULT_HARDWARE_ACCELERATION_ERROR || 4 || Error with hardware acceleration, user refused to switch to software decoding&lt;br /&gt;
|-&lt;br /&gt;
| RESULT_VIDEO_TRACK_LOST || 5 || VLC continues playback, but for audio track only. (Audio file detected or user chose to)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Data==&lt;br /&gt;
Media Uri&lt;br /&gt;
&lt;br /&gt;
You can check the source [http://git.videolan.org/?p=vlc-ports/android.git;a=blob;f=vlc-android/src/org/videolan/vlc/gui/video/VideoPlayerActivity.java;hb=HEAD here].&lt;br /&gt;
&lt;br /&gt;
==Extras==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Value !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| &amp;quot;extra_position&amp;quot; || long || Last position in media when player exited&lt;br /&gt;
|-&lt;br /&gt;
| &amp;quot;extra_duration&amp;quot; || long || Total duration of the media&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
* [[Android Report bugs]] - Bug reporting guide for VLC-Android.&lt;br /&gt;
&lt;br /&gt;
[[Category:Building]] [[Category:Android]]&lt;/div&gt;</summary>
		<author><name>Dekans</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=Android_Checklist&amp;diff=31100</id>
		<title>Android Checklist</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=Android_Checklist&amp;diff=31100"/>
		<updated>2016-04-01T16:42:48Z</updated>

		<summary type="html">&lt;p&gt;Dekans: /* This page is intended to list all VLC Android app features we have to set before every release. */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== VLC for Android features checklist ==&lt;br /&gt;
&lt;br /&gt;
==== This page is intended to list all VLC Android app features we have to set before every release. ====&lt;br /&gt;
&lt;br /&gt;
General&lt;br /&gt;
* Black Theme&lt;br /&gt;
* General display with system fonts set to large&lt;br /&gt;
* Search&lt;br /&gt;
&lt;br /&gt;
Video&lt;br /&gt;
* Second screen mode in video player&lt;br /&gt;
* Background video playback&lt;br /&gt;
* Restore video playback after pressing HOME&lt;br /&gt;
* Video playlist&lt;br /&gt;
* Subtitles picker&lt;br /&gt;
* video popup&lt;br /&gt;
* Audio/Video transition&lt;br /&gt;
&lt;br /&gt;
Audio&lt;br /&gt;
* Audio playback&lt;br /&gt;
* Remote controls&lt;br /&gt;
* Audio playlists&lt;br /&gt;
&lt;br /&gt;
Browsing&lt;br /&gt;
* Local browsing&lt;br /&gt;
* Network browsing&lt;br /&gt;
* Network favorites&lt;br /&gt;
* Network playback&lt;br /&gt;
* Network login&lt;br /&gt;
&lt;br /&gt;
Other&lt;br /&gt;
* Compatibility with Android 2.x&lt;br /&gt;
* Playback history&lt;br /&gt;
* Open media from 3rd party Apps&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
* [[Android Report bugs]] - Bug reporting guide for VLC-Android.&lt;br /&gt;
&lt;br /&gt;
[[Category:Android]]&lt;/div&gt;</summary>
		<author><name>Dekans</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=Android_Checklist&amp;diff=31099</id>
		<title>Android Checklist</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=Android_Checklist&amp;diff=31099"/>
		<updated>2016-04-01T16:41:33Z</updated>

		<summary type="html">&lt;p&gt;Dekans: First commit&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;== VLC for Android features checklist ==&lt;br /&gt;
&lt;br /&gt;
==== This page is intended to list all VLC Android app features we have to set before every release. ====&lt;br /&gt;
&lt;br /&gt;
General&lt;br /&gt;
* Black Theme&lt;br /&gt;
* General display with system fonts set to large&lt;br /&gt;
* Search&lt;br /&gt;
&lt;br /&gt;
Video&lt;br /&gt;
* Second screen mode in video player&lt;br /&gt;
* Background video playback&lt;br /&gt;
* Restore video playback after pressing HOME&lt;br /&gt;
* Video playlist&lt;br /&gt;
* Subtitles picker&lt;br /&gt;
* video popup&lt;br /&gt;
* Audio/Video transition&lt;br /&gt;
&lt;br /&gt;
Audio&lt;br /&gt;
* Audio playback&lt;br /&gt;
* Remote controls&lt;br /&gt;
* Audio playlists&lt;br /&gt;
&lt;br /&gt;
Browsing&lt;br /&gt;
* Local browsing&lt;br /&gt;
* Network browsing&lt;br /&gt;
* Network favorites&lt;br /&gt;
* Network playback&lt;br /&gt;
* Network login&lt;br /&gt;
&lt;br /&gt;
Other&lt;br /&gt;
* Playback history&lt;br /&gt;
* Open media from 3rd party Apps&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
* [[Android Report bugs]] - Bug reporting guide for VLC-Android.&lt;br /&gt;
&lt;br /&gt;
[[Category:Android]]&lt;/div&gt;</summary>
		<author><name>Dekans</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=Android_Player_Intents&amp;diff=31097</id>
		<title>Android Player Intents</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=Android_Player_Intents&amp;diff=31097"/>
		<updated>2016-03-24T09:32:59Z</updated>

		<summary type="html">&lt;p&gt;Dekans: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Open a media with VLC Player=&lt;br /&gt;
To play a media with VLC player, use an intent with the following settings&lt;br /&gt;
&lt;br /&gt;
== action ==&lt;br /&gt;
 Intent.ACTION_VIEW (&amp;quot;android.intent.action.VIEW&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
== Package name ==&lt;br /&gt;
 &amp;quot;org.videolan.vlc&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== data ==&lt;br /&gt;
The media Uri&lt;br /&gt;
&lt;br /&gt;
== type ==&lt;br /&gt;
one of:&lt;br /&gt;
&lt;br /&gt;
* video/*&lt;br /&gt;
* audio/*&lt;br /&gt;
* */rmvb&lt;br /&gt;
* */avi&lt;br /&gt;
* */mkv&lt;br /&gt;
* application/3gpp*&lt;br /&gt;
* application/mp4&lt;br /&gt;
* application/mpeg*&lt;br /&gt;
* application/ogg&lt;br /&gt;
* application/sdp&lt;br /&gt;
* application/vnd.3gp*&lt;br /&gt;
* application/vnd.apple.mpegurl&lt;br /&gt;
* application/vnd.dvd*&lt;br /&gt;
* application/vnd.dolby*&lt;br /&gt;
* application/vnd.rn-realmedia*&lt;br /&gt;
* application/x-iso9660-image&lt;br /&gt;
* application/x-extension-mp4&lt;br /&gt;
* application/x-flac&lt;br /&gt;
* application/x-matroska&lt;br /&gt;
* application/x-mpegURL&lt;br /&gt;
* application/x-ogg&lt;br /&gt;
* application/x-quicktimeplayer&lt;br /&gt;
* application/x-shockwave-flash&lt;br /&gt;
* application/xspf+xml&lt;br /&gt;
* misc/ultravox&lt;br /&gt;
&lt;br /&gt;
== Extras (optional) ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Value !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| &amp;quot;subtitles_location&amp;quot; || String || Path of a subtitles file&lt;br /&gt;
|-&lt;br /&gt;
| &amp;quot;title&amp;quot; || String || Title you want to display&lt;br /&gt;
|-&lt;br /&gt;
| &amp;quot;from_start&amp;quot; || boolean || Force playback from the beginning&lt;br /&gt;
|-&lt;br /&gt;
| &amp;quot;extra_duration&amp;quot; || long || Media duration&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Sample code ==&lt;br /&gt;
For a simple media playback:&lt;br /&gt;
  int vlcRequestCode = 42;&lt;br /&gt;
  Uri uri = Uri.parse(&amp;quot;file:///storage/emulated/0/Movies/KUNG FURY Official Movie.mp4&amp;quot;);&lt;br /&gt;
  Intent vlcIntent = new Intent(Intent.ACTION_VIEW);&lt;br /&gt;
  vlcIntent.setPackage(&amp;quot;org.videolan.vlc&amp;quot;);&lt;br /&gt;
  vlcIntent.setDataAndType(uri, &amp;quot;video/*&amp;quot;);&lt;br /&gt;
  vlcIntent.putExtra(&amp;quot;title&amp;quot;, &amp;quot;Kung Fury&amp;quot;);&lt;br /&gt;
  vlcIntent.putExtra(&amp;quot;from_start&amp;quot;, false);&lt;br /&gt;
  vlcIntent.putExtra(&amp;quot;subtitles_location&amp;quot;, &amp;quot;/sdcard/Movies/Fifty-Fifty.srt&amp;quot;);&lt;br /&gt;
  startActivityForResult(vlcIntent, vlcRequestCode);&lt;br /&gt;
&lt;br /&gt;
If you specifically want start VideoPlayerActivity, you can set&lt;br /&gt;
  vlcIntent.setComponent(new ComponentName(&amp;quot;org.videolan.vlc&amp;quot;, &amp;quot;org.videolan.vlc.gui.video.VideoPlayerActivity&amp;quot;));&lt;br /&gt;
&lt;br /&gt;
=Get result code from VLC=&lt;br /&gt;
Since version 1.4.1, Android VLC application returns an intent when closing.&lt;br /&gt;
&lt;br /&gt;
Here is the description of this intent:&lt;br /&gt;
&lt;br /&gt;
==Intent action==&lt;br /&gt;
 &amp;quot;org.videolan.vlc.player.result&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==Result code==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Result !! Value (int) !! Description&lt;br /&gt;
|-&lt;br /&gt;
| RESULT_OK || -1 || Video finished or user ended playback&lt;br /&gt;
|-&lt;br /&gt;
| RESULT_CANCELED || 0 || No compatible cpu, incorrect VLC abi variant installed&lt;br /&gt;
|-&lt;br /&gt;
| RESULT_CONNECTION_FAILED || 2 || Connection failed to audio service&lt;br /&gt;
|-&lt;br /&gt;
| RESULT_PLAYBACK_ERROR || 3 || VLC is not able to play this file, it could be incorrect path/uri, not supported codec or broken file&lt;br /&gt;
|-&lt;br /&gt;
| RESULT_HARDWARE_ACCELERATION_ERROR || 4 || Error with hardware acceleration, user refused to switch to software decoding&lt;br /&gt;
|-&lt;br /&gt;
| RESULT_VIDEO_TRACK_LOST || 5 || VLC continues playback, but for audio track only. (Audio file detected or user chose to)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Data==&lt;br /&gt;
Media Uri&lt;br /&gt;
&lt;br /&gt;
You can check the source [http://git.videolan.org/?p=vlc-ports/android.git;a=blob;f=vlc-android/src/org/videolan/vlc/gui/video/VideoPlayerActivity.java;hb=HEAD here].&lt;br /&gt;
&lt;br /&gt;
==Extras==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Value !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| &amp;quot;extra_position&amp;quot; || long || Last position in media when player exited&lt;br /&gt;
|-&lt;br /&gt;
| &amp;quot;extra_duration&amp;quot; || long || Total duration of the media&lt;br /&gt;
&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
* [[Android Report bugs]] - Bug reporting guide for VLC-Android.&lt;br /&gt;
&lt;br /&gt;
[[Category:Building]] [[Category:Android]]&lt;/div&gt;</summary>
		<author><name>Dekans</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=Android_Player_Intents&amp;diff=31096</id>
		<title>Android Player Intents</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=Android_Player_Intents&amp;diff=31096"/>
		<updated>2016-03-24T09:30:06Z</updated>

		<summary type="html">&lt;p&gt;Dekans: /* Extras (optional) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Open a media with VLC Player=&lt;br /&gt;
To play a media with VLC player, use an intent with the following settings&lt;br /&gt;
&lt;br /&gt;
== action ==&lt;br /&gt;
 Intent.ACTION_VIEW (&amp;quot;android.intent.action.VIEW&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
== Package name ==&lt;br /&gt;
 &amp;quot;org.videolan.vlc&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== data ==&lt;br /&gt;
The media Uri&lt;br /&gt;
&lt;br /&gt;
== type ==&lt;br /&gt;
one of:&lt;br /&gt;
&lt;br /&gt;
* video/*&lt;br /&gt;
* audio/*&lt;br /&gt;
* */rmvb&lt;br /&gt;
* */avi&lt;br /&gt;
* */mkv&lt;br /&gt;
* application/3gpp*&lt;br /&gt;
* application/mp4&lt;br /&gt;
* application/mpeg*&lt;br /&gt;
* application/ogg&lt;br /&gt;
* application/sdp&lt;br /&gt;
* application/vnd.3gp*&lt;br /&gt;
* application/vnd.apple.mpegurl&lt;br /&gt;
* application/vnd.dvd*&lt;br /&gt;
* application/vnd.dolby*&lt;br /&gt;
* application/vnd.rn-realmedia*&lt;br /&gt;
* application/x-iso9660-image&lt;br /&gt;
* application/x-extension-mp4&lt;br /&gt;
* application/x-flac&lt;br /&gt;
* application/x-matroska&lt;br /&gt;
* application/x-mpegURL&lt;br /&gt;
* application/x-ogg&lt;br /&gt;
* application/x-quicktimeplayer&lt;br /&gt;
* application/x-shockwave-flash&lt;br /&gt;
* application/xspf+xml&lt;br /&gt;
* misc/ultravox&lt;br /&gt;
&lt;br /&gt;
== Extras (optional) ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Value !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| &amp;quot;subtitles_location&amp;quot; || String || Path of a subtitles file&lt;br /&gt;
|-&lt;br /&gt;
| &amp;quot;title&amp;quot; || String || Title you want to display&lt;br /&gt;
|-&lt;br /&gt;
| &amp;quot;from_start&amp;quot; || boolean || Force playback from the beginning&lt;br /&gt;
|-&lt;br /&gt;
| &amp;quot;extra_duration&amp;quot; || long || Media duration&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Sample code ==&lt;br /&gt;
For a simple media playback:&lt;br /&gt;
  int vlcRequestCode = 42;&lt;br /&gt;
  Uri uri = Uri.parse(&amp;quot;file:///storage/emulated/0/Movies/KUNG FURY Official Movie.mp4&amp;quot;);&lt;br /&gt;
  Intent vlcIntent = new Intent(Intent.ACTION_VIEW);&lt;br /&gt;
  vlcIntent.setPackage(&amp;quot;org.videolan.vlc&amp;quot;);&lt;br /&gt;
  vlcIntent.setDataAndType(uri, &amp;quot;video/*&amp;quot;);&lt;br /&gt;
  vlcIntent.putExtra(&amp;quot;title&amp;quot;, &amp;quot;Kung Fury&amp;quot;);&lt;br /&gt;
  vlcIntent.putExtra(&amp;quot;from_start&amp;quot;, false);&lt;br /&gt;
  vlcIntent.putExtra(&amp;quot;subtitles_location&amp;quot;, &amp;quot;/sdcard/Movies/Fifty-Fifty.srt&amp;quot;);&lt;br /&gt;
  startActivityForResult(vlcIntent, vlcRequestCode);&lt;br /&gt;
&lt;br /&gt;
If you specifically want start VideoPlayerActivity, you can set&lt;br /&gt;
  vlcIntent.setComponent(new ComponentName(&amp;quot;org.videolan.vlc&amp;quot;, &amp;quot;org.videolan.vlc.gui.video.VideoPlayerActivity&amp;quot;));&lt;br /&gt;
&lt;br /&gt;
=Get result code from VLC=&lt;br /&gt;
Since version 1.4.1, Android VLC application returns an intent when closing.&lt;br /&gt;
&lt;br /&gt;
Here is the description of this intent:&lt;br /&gt;
&lt;br /&gt;
==Intent action==&lt;br /&gt;
 &amp;quot;org.videolan.vlc.player.result&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==Result code==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Result !! Value (int) !! Description&lt;br /&gt;
|-&lt;br /&gt;
| RESULT_OK || -1 || Video finished or user ended playback&lt;br /&gt;
|-&lt;br /&gt;
| RESULT_CANCELED || 0 || No compatible cpu, incorrect VLC abi variant installed&lt;br /&gt;
|-&lt;br /&gt;
| RESULT_CONNECTION_FAILED || 2 || Connection failed to audio service&lt;br /&gt;
|-&lt;br /&gt;
| RESULT_PLAYBACK_ERROR || 3 || VLC is not able to play this file, it could be incorrect path/uri, not supported codec or broken file&lt;br /&gt;
|-&lt;br /&gt;
| RESULT_HARDWARE_ACCELERATION_ERROR || 4 || Error with hardware acceleration, user refused to switch to software decoding&lt;br /&gt;
|-&lt;br /&gt;
| RESULT_VIDEO_TRACK_LOST || 5 || VLC continues playback, but for audio track only. (Audio file detected or user chose to)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Data==&lt;br /&gt;
Media Uri&lt;br /&gt;
&lt;br /&gt;
You can check the source [http://git.videolan.org/?p=vlc-ports/android.git;a=blob;f=vlc-android/src/org/videolan/vlc/gui/video/VideoPlayerActivity.java;hb=HEAD here].&lt;br /&gt;
&lt;br /&gt;
==Extras==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Value !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| &amp;quot;extra_position&amp;quot; || long || Last position in media when player exited&lt;br /&gt;
|-&lt;br /&gt;
| &amp;quot;extra_duration&amp;quot; || long || Total duration of the media&lt;br /&gt;
&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Dekans</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=Android_Player_Intents&amp;diff=31095</id>
		<title>Android Player Intents</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=Android_Player_Intents&amp;diff=31095"/>
		<updated>2016-03-24T09:29:50Z</updated>

		<summary type="html">&lt;p&gt;Dekans: &lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Open a media with VLC Player=&lt;br /&gt;
To play a media with VLC player, use an intent with the following settings&lt;br /&gt;
&lt;br /&gt;
== action ==&lt;br /&gt;
 Intent.ACTION_VIEW (&amp;quot;android.intent.action.VIEW&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
== Package name ==&lt;br /&gt;
 &amp;quot;org.videolan.vlc&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== data ==&lt;br /&gt;
The media Uri&lt;br /&gt;
&lt;br /&gt;
== type ==&lt;br /&gt;
one of:&lt;br /&gt;
&lt;br /&gt;
* video/*&lt;br /&gt;
* audio/*&lt;br /&gt;
* */rmvb&lt;br /&gt;
* */avi&lt;br /&gt;
* */mkv&lt;br /&gt;
* application/3gpp*&lt;br /&gt;
* application/mp4&lt;br /&gt;
* application/mpeg*&lt;br /&gt;
* application/ogg&lt;br /&gt;
* application/sdp&lt;br /&gt;
* application/vnd.3gp*&lt;br /&gt;
* application/vnd.apple.mpegurl&lt;br /&gt;
* application/vnd.dvd*&lt;br /&gt;
* application/vnd.dolby*&lt;br /&gt;
* application/vnd.rn-realmedia*&lt;br /&gt;
* application/x-iso9660-image&lt;br /&gt;
* application/x-extension-mp4&lt;br /&gt;
* application/x-flac&lt;br /&gt;
* application/x-matroska&lt;br /&gt;
* application/x-mpegURL&lt;br /&gt;
* application/x-ogg&lt;br /&gt;
* application/x-quicktimeplayer&lt;br /&gt;
* application/x-shockwave-flash&lt;br /&gt;
* application/xspf+xml&lt;br /&gt;
* misc/ultravox&lt;br /&gt;
&lt;br /&gt;
== Extras (optional) ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Value !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| &amp;quot;subtitles_location&amp;quot; || String || Path of a subtitles file&lt;br /&gt;
|-&lt;br /&gt;
| &amp;quot;title&amp;quot; || String || Title you want to display&lt;br /&gt;
|-&lt;br /&gt;
| &amp;quot;from_start&amp;quot; || boolean || Force playback from the beginning&lt;br /&gt;
|-&lt;br /&gt;
| &amp;quot;extra_duration&amp;quot; || long || media duration&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Sample code ==&lt;br /&gt;
For a simple media playback:&lt;br /&gt;
  int vlcRequestCode = 42;&lt;br /&gt;
  Uri uri = Uri.parse(&amp;quot;file:///storage/emulated/0/Movies/KUNG FURY Official Movie.mp4&amp;quot;);&lt;br /&gt;
  Intent vlcIntent = new Intent(Intent.ACTION_VIEW);&lt;br /&gt;
  vlcIntent.setPackage(&amp;quot;org.videolan.vlc&amp;quot;);&lt;br /&gt;
  vlcIntent.setDataAndType(uri, &amp;quot;video/*&amp;quot;);&lt;br /&gt;
  vlcIntent.putExtra(&amp;quot;title&amp;quot;, &amp;quot;Kung Fury&amp;quot;);&lt;br /&gt;
  vlcIntent.putExtra(&amp;quot;from_start&amp;quot;, false);&lt;br /&gt;
  vlcIntent.putExtra(&amp;quot;subtitles_location&amp;quot;, &amp;quot;/sdcard/Movies/Fifty-Fifty.srt&amp;quot;);&lt;br /&gt;
  startActivityForResult(vlcIntent, vlcRequestCode);&lt;br /&gt;
&lt;br /&gt;
If you specifically want start VideoPlayerActivity, you can set&lt;br /&gt;
  vlcIntent.setComponent(new ComponentName(&amp;quot;org.videolan.vlc&amp;quot;, &amp;quot;org.videolan.vlc.gui.video.VideoPlayerActivity&amp;quot;));&lt;br /&gt;
&lt;br /&gt;
=Get result code from VLC=&lt;br /&gt;
Since version 1.4.1, Android VLC application returns an intent when closing.&lt;br /&gt;
&lt;br /&gt;
Here is the description of this intent:&lt;br /&gt;
&lt;br /&gt;
==Intent action==&lt;br /&gt;
 &amp;quot;org.videolan.vlc.player.result&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==Result code==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Result !! Value (int) !! Description&lt;br /&gt;
|-&lt;br /&gt;
| RESULT_OK || -1 || Video finished or user ended playback&lt;br /&gt;
|-&lt;br /&gt;
| RESULT_CANCELED || 0 || No compatible cpu, incorrect VLC abi variant installed&lt;br /&gt;
|-&lt;br /&gt;
| RESULT_CONNECTION_FAILED || 2 || Connection failed to audio service&lt;br /&gt;
|-&lt;br /&gt;
| RESULT_PLAYBACK_ERROR || 3 || VLC is not able to play this file, it could be incorrect path/uri, not supported codec or broken file&lt;br /&gt;
|-&lt;br /&gt;
| RESULT_HARDWARE_ACCELERATION_ERROR || 4 || Error with hardware acceleration, user refused to switch to software decoding&lt;br /&gt;
|-&lt;br /&gt;
| RESULT_VIDEO_TRACK_LOST || 5 || VLC continues playback, but for audio track only. (Audio file detected or user chose to)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Data==&lt;br /&gt;
Media Uri&lt;br /&gt;
&lt;br /&gt;
You can check the source [http://git.videolan.org/?p=vlc-ports/android.git;a=blob;f=vlc-android/src/org/videolan/vlc/gui/video/VideoPlayerActivity.java;hb=HEAD here].&lt;br /&gt;
&lt;br /&gt;
==Extras==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Value !! Type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| &amp;quot;extra_position&amp;quot; || long || Last position in media when player exited&lt;br /&gt;
|-&lt;br /&gt;
| &amp;quot;extra_duration&amp;quot; || long || Total duration of the media&lt;br /&gt;
&lt;br /&gt;
|}&lt;/div&gt;</summary>
		<author><name>Dekans</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=Android_Player_Intents&amp;diff=31094</id>
		<title>Android Player Intents</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=Android_Player_Intents&amp;diff=31094"/>
		<updated>2016-03-24T09:26:43Z</updated>

		<summary type="html">&lt;p&gt;Dekans: /* Extras (optional) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Open a media with VLC Player=&lt;br /&gt;
To play a media with VLC player, use an intent with the following settings&lt;br /&gt;
&lt;br /&gt;
== action ==&lt;br /&gt;
 Intent.ACTION_VIEW (&amp;quot;android.intent.action.VIEW&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
== Package name ==&lt;br /&gt;
 &amp;quot;org.videolan.vlc&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== data ==&lt;br /&gt;
The media Uri&lt;br /&gt;
&lt;br /&gt;
== type ==&lt;br /&gt;
one of:&lt;br /&gt;
&lt;br /&gt;
* video/*&lt;br /&gt;
* audio/*&lt;br /&gt;
* */rmvb&lt;br /&gt;
* */avi&lt;br /&gt;
* */mkv&lt;br /&gt;
* application/3gpp*&lt;br /&gt;
* application/mp4&lt;br /&gt;
* application/mpeg*&lt;br /&gt;
* application/ogg&lt;br /&gt;
* application/sdp&lt;br /&gt;
* application/vnd.3gp*&lt;br /&gt;
* application/vnd.apple.mpegurl&lt;br /&gt;
* application/vnd.dvd*&lt;br /&gt;
* application/vnd.dolby*&lt;br /&gt;
* application/vnd.rn-realmedia*&lt;br /&gt;
* application/x-iso9660-image&lt;br /&gt;
* application/x-extension-mp4&lt;br /&gt;
* application/x-flac&lt;br /&gt;
* application/x-matroska&lt;br /&gt;
* application/x-mpegURL&lt;br /&gt;
* application/x-ogg&lt;br /&gt;
* application/x-quicktimeplayer&lt;br /&gt;
* application/x-shockwave-flash&lt;br /&gt;
* application/xspf+xml&lt;br /&gt;
* misc/ultravox&lt;br /&gt;
&lt;br /&gt;
== Extras (optional) ==&lt;br /&gt;
&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! value !! type !! Description&lt;br /&gt;
|-&lt;br /&gt;
| &amp;quot;subtitles_location&amp;quot; || String || Path of a subtitles file&lt;br /&gt;
|-&lt;br /&gt;
| &amp;quot;title&amp;quot; || String || Title you want to display&lt;br /&gt;
|-&lt;br /&gt;
| &amp;quot;from_start&amp;quot; || boolean || Force playback from the beginning&lt;br /&gt;
|-&lt;br /&gt;
| &amp;quot;extra_duration&amp;quot; || long || media duration&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
== Sample code ==&lt;br /&gt;
For a simple media playback:&lt;br /&gt;
  int vlcRequestCode = 42;&lt;br /&gt;
  Uri uri = Uri.parse(&amp;quot;file:///storage/emulated/0/Movies/KUNG FURY Official Movie.mp4&amp;quot;);&lt;br /&gt;
  Intent vlcIntent = new Intent(Intent.ACTION_VIEW);&lt;br /&gt;
  vlcIntent.setPackage(&amp;quot;org.videolan.vlc&amp;quot;);&lt;br /&gt;
  vlcIntent.setDataAndType(uri, &amp;quot;video/*&amp;quot;);&lt;br /&gt;
  vlcIntent.putExtra(&amp;quot;title&amp;quot;, &amp;quot;Kung Fury&amp;quot;);&lt;br /&gt;
  vlcIntent.putExtra(&amp;quot;from_start&amp;quot;, false);&lt;br /&gt;
  vlcIntent.putExtra(&amp;quot;subtitles_location&amp;quot;, &amp;quot;/sdcard/Movies/Fifty-Fifty.srt&amp;quot;);&lt;br /&gt;
  startActivityForResult(vlcIntent, vlcRequestCode);&lt;br /&gt;
&lt;br /&gt;
If you specifically want start VideoPlayerActivity, you can set&lt;br /&gt;
  vlcIntent.setComponent(new ComponentName(&amp;quot;org.videolan.vlc&amp;quot;, &amp;quot;org.videolan.vlc.gui.video.VideoPlayerActivity&amp;quot;));&lt;br /&gt;
&lt;br /&gt;
=Get result code from VLC=&lt;br /&gt;
Since version 1.4.1, Android VLC application returns an intent when closing.&lt;br /&gt;
&lt;br /&gt;
Here is the description of this intent:&lt;br /&gt;
&lt;br /&gt;
==Intent action==&lt;br /&gt;
 &amp;quot;org.videolan.vlc.player.result&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==Result code==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Result !! Value (int) !! Description&lt;br /&gt;
|-&lt;br /&gt;
| RESULT_OK || -1 || Video finished or user ended playback&lt;br /&gt;
|-&lt;br /&gt;
| RESULT_CANCELED || 0 || No compatible cpu, incorrect VLC abi variant installed&lt;br /&gt;
|-&lt;br /&gt;
| RESULT_CONNECTION_FAILED || 2 || Connection failed to audio service&lt;br /&gt;
|-&lt;br /&gt;
| RESULT_PLAYBACK_ERROR || 3 || VLC is not able to play this file, it could be incorrect path/uri, not supported codec or broken file&lt;br /&gt;
|-&lt;br /&gt;
| RESULT_HARDWARE_ACCELERATION_ERROR || 4 || Error with hardware acceleration, user refused to switch to software decoding&lt;br /&gt;
|-&lt;br /&gt;
| RESULT_VIDEO_TRACK_LOST || 5 || VLC continues playback, but for audio track only. (Audio file detected or user chose to)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Data==&lt;br /&gt;
Media Uri&lt;br /&gt;
&lt;br /&gt;
You can check the source [http://git.videolan.org/?p=vlc-ports/android.git;a=blob;f=vlc-android/src/org/videolan/vlc/gui/video/VideoPlayerActivity.java;hb=HEAD here].&lt;/div&gt;</summary>
		<author><name>Dekans</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=Android_Player_Intents&amp;diff=31093</id>
		<title>Android Player Intents</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=Android_Player_Intents&amp;diff=31093"/>
		<updated>2016-03-24T09:22:15Z</updated>

		<summary type="html">&lt;p&gt;Dekans: /* Sample code */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Open a media with VLC Player=&lt;br /&gt;
To play a media with VLC player, use an intent with the following settings&lt;br /&gt;
&lt;br /&gt;
== action ==&lt;br /&gt;
 Intent.ACTION_VIEW (&amp;quot;android.intent.action.VIEW&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
== Package name ==&lt;br /&gt;
 &amp;quot;org.videolan.vlc&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== data ==&lt;br /&gt;
The media Uri&lt;br /&gt;
&lt;br /&gt;
== type ==&lt;br /&gt;
one of:&lt;br /&gt;
&lt;br /&gt;
* video/*&lt;br /&gt;
* audio/*&lt;br /&gt;
* */rmvb&lt;br /&gt;
* */avi&lt;br /&gt;
* */mkv&lt;br /&gt;
* application/3gpp*&lt;br /&gt;
* application/mp4&lt;br /&gt;
* application/mpeg*&lt;br /&gt;
* application/ogg&lt;br /&gt;
* application/sdp&lt;br /&gt;
* application/vnd.3gp*&lt;br /&gt;
* application/vnd.apple.mpegurl&lt;br /&gt;
* application/vnd.dvd*&lt;br /&gt;
* application/vnd.dolby*&lt;br /&gt;
* application/vnd.rn-realmedia*&lt;br /&gt;
* application/x-iso9660-image&lt;br /&gt;
* application/x-extension-mp4&lt;br /&gt;
* application/x-flac&lt;br /&gt;
* application/x-matroska&lt;br /&gt;
* application/x-mpegURL&lt;br /&gt;
* application/x-ogg&lt;br /&gt;
* application/x-quicktimeplayer&lt;br /&gt;
* application/x-shockwave-flash&lt;br /&gt;
* application/xspf+xml&lt;br /&gt;
* misc/ultravox&lt;br /&gt;
&lt;br /&gt;
== Extras (optional) ==&lt;br /&gt;
* &amp;quot;position&amp;quot;: position in the media, in ms (type long)&lt;br /&gt;
* &amp;quot;subtitles_location&amp;quot;: path of a subtitles file (type String)&lt;br /&gt;
* &amp;quot;title&amp;quot;: title you want to display (type String)&lt;br /&gt;
* &amp;quot;from_start&amp;quot;: Force playback from the beginning (type boolean)&lt;br /&gt;
* &amp;quot;extra_duration&amp;quot;: media duration (type long)&lt;br /&gt;
&lt;br /&gt;
== Sample code ==&lt;br /&gt;
For a simple media playback:&lt;br /&gt;
  int vlcRequestCode = 42;&lt;br /&gt;
  Uri uri = Uri.parse(&amp;quot;file:///storage/emulated/0/Movies/KUNG FURY Official Movie.mp4&amp;quot;);&lt;br /&gt;
  Intent vlcIntent = new Intent(Intent.ACTION_VIEW);&lt;br /&gt;
  vlcIntent.setPackage(&amp;quot;org.videolan.vlc&amp;quot;);&lt;br /&gt;
  vlcIntent.setDataAndType(uri, &amp;quot;video/*&amp;quot;);&lt;br /&gt;
  vlcIntent.putExtra(&amp;quot;title&amp;quot;, &amp;quot;Kung Fury&amp;quot;);&lt;br /&gt;
  vlcIntent.putExtra(&amp;quot;from_start&amp;quot;, false);&lt;br /&gt;
  vlcIntent.putExtra(&amp;quot;subtitles_location&amp;quot;, &amp;quot;/sdcard/Movies/Fifty-Fifty.srt&amp;quot;);&lt;br /&gt;
  startActivityForResult(vlcIntent, vlcRequestCode);&lt;br /&gt;
&lt;br /&gt;
If you specifically want start VideoPlayerActivity, you can set&lt;br /&gt;
  vlcIntent.setComponent(new ComponentName(&amp;quot;org.videolan.vlc&amp;quot;, &amp;quot;org.videolan.vlc.gui.video.VideoPlayerActivity&amp;quot;));&lt;br /&gt;
&lt;br /&gt;
=Get result code from VLC=&lt;br /&gt;
Since version 1.4.1, Android VLC application returns an intent when closing.&lt;br /&gt;
&lt;br /&gt;
Here is the description of this intent:&lt;br /&gt;
&lt;br /&gt;
==Intent action==&lt;br /&gt;
 &amp;quot;org.videolan.vlc.player.result&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==Result code==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Result !! Value (int) !! Description&lt;br /&gt;
|-&lt;br /&gt;
| RESULT_OK || -1 || Video finished or user ended playback&lt;br /&gt;
|-&lt;br /&gt;
| RESULT_CANCELED || 0 || No compatible cpu, incorrect VLC abi variant installed&lt;br /&gt;
|-&lt;br /&gt;
| RESULT_CONNECTION_FAILED || 2 || Connection failed to audio service&lt;br /&gt;
|-&lt;br /&gt;
| RESULT_PLAYBACK_ERROR || 3 || VLC is not able to play this file, it could be incorrect path/uri, not supported codec or broken file&lt;br /&gt;
|-&lt;br /&gt;
| RESULT_HARDWARE_ACCELERATION_ERROR || 4 || Error with hardware acceleration, user refused to switch to software decoding&lt;br /&gt;
|-&lt;br /&gt;
| RESULT_VIDEO_TRACK_LOST || 5 || VLC continues playback, but for audio track only. (Audio file detected or user chose to)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Data==&lt;br /&gt;
Media Uri&lt;br /&gt;
&lt;br /&gt;
You can check the source [http://git.videolan.org/?p=vlc-ports/android.git;a=blob;f=vlc-android/src/org/videolan/vlc/gui/video/VideoPlayerActivity.java;hb=HEAD here].&lt;/div&gt;</summary>
		<author><name>Dekans</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=Android_Player_Intents&amp;diff=31092</id>
		<title>Android Player Intents</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=Android_Player_Intents&amp;diff=31092"/>
		<updated>2016-03-24T09:21:58Z</updated>

		<summary type="html">&lt;p&gt;Dekans: /* Extras (optional) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Open a media with VLC Player=&lt;br /&gt;
To play a media with VLC player, use an intent with the following settings&lt;br /&gt;
&lt;br /&gt;
== action ==&lt;br /&gt;
 Intent.ACTION_VIEW (&amp;quot;android.intent.action.VIEW&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
== Package name ==&lt;br /&gt;
 &amp;quot;org.videolan.vlc&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== data ==&lt;br /&gt;
The media Uri&lt;br /&gt;
&lt;br /&gt;
== type ==&lt;br /&gt;
one of:&lt;br /&gt;
&lt;br /&gt;
* video/*&lt;br /&gt;
* audio/*&lt;br /&gt;
* */rmvb&lt;br /&gt;
* */avi&lt;br /&gt;
* */mkv&lt;br /&gt;
* application/3gpp*&lt;br /&gt;
* application/mp4&lt;br /&gt;
* application/mpeg*&lt;br /&gt;
* application/ogg&lt;br /&gt;
* application/sdp&lt;br /&gt;
* application/vnd.3gp*&lt;br /&gt;
* application/vnd.apple.mpegurl&lt;br /&gt;
* application/vnd.dvd*&lt;br /&gt;
* application/vnd.dolby*&lt;br /&gt;
* application/vnd.rn-realmedia*&lt;br /&gt;
* application/x-iso9660-image&lt;br /&gt;
* application/x-extension-mp4&lt;br /&gt;
* application/x-flac&lt;br /&gt;
* application/x-matroska&lt;br /&gt;
* application/x-mpegURL&lt;br /&gt;
* application/x-ogg&lt;br /&gt;
* application/x-quicktimeplayer&lt;br /&gt;
* application/x-shockwave-flash&lt;br /&gt;
* application/xspf+xml&lt;br /&gt;
* misc/ultravox&lt;br /&gt;
&lt;br /&gt;
== Extras (optional) ==&lt;br /&gt;
* &amp;quot;position&amp;quot;: position in the media, in ms (type long)&lt;br /&gt;
* &amp;quot;subtitles_location&amp;quot;: path of a subtitles file (type String)&lt;br /&gt;
* &amp;quot;title&amp;quot;: title you want to display (type String)&lt;br /&gt;
* &amp;quot;from_start&amp;quot;: Force playback from the beginning (type boolean)&lt;br /&gt;
* &amp;quot;extra_duration&amp;quot;: media duration (type long)&lt;br /&gt;
&lt;br /&gt;
== Sample code ==&lt;br /&gt;
For a simple media playback:&lt;br /&gt;
  int vlcRequestCode = 42;&lt;br /&gt;
  Uri uri = Uri.parse(&amp;quot;file:///storage/emulated/0/Movies/KUNG FURY Official Movie.mp4&amp;quot;);&lt;br /&gt;
  Intent vlcIntent = new Intent(Intent.ACTION_VIEW);&lt;br /&gt;
  vlcIntent.setPackage(&amp;quot;org.videolan.vlc&amp;quot;);&lt;br /&gt;
  vlcIntent.setDataAndType(uri, &amp;quot;video/*&amp;quot;);&lt;br /&gt;
  vlcIntent.putExtra(&amp;quot;title&amp;quot;, &amp;quot;Kung Fury&amp;quot;);&lt;br /&gt;
  vlcIntent.putExtra(&amp;quot;from_start&amp;quot;, false);&lt;br /&gt;
  vlcIntent.putExtra(&amp;quot;opened_position&amp;quot;, 270000l);&lt;br /&gt;
  vlcIntent.putExtra(&amp;quot;subtitles_location&amp;quot;, &amp;quot;/sdcard/Movies/Fifty-Fifty.srt&amp;quot;);&lt;br /&gt;
  startActivityForResult(vlcIntent, vlcRequestCode);&lt;br /&gt;
&lt;br /&gt;
If you specifically want start VideoPlayerActivity, you can set&lt;br /&gt;
  vlcIntent.setComponent(new ComponentName(&amp;quot;org.videolan.vlc&amp;quot;, &amp;quot;org.videolan.vlc.gui.video.VideoPlayerActivity&amp;quot;));&lt;br /&gt;
&lt;br /&gt;
=Get result code from VLC=&lt;br /&gt;
Since version 1.4.1, Android VLC application returns an intent when closing.&lt;br /&gt;
&lt;br /&gt;
Here is the description of this intent:&lt;br /&gt;
&lt;br /&gt;
==Intent action==&lt;br /&gt;
 &amp;quot;org.videolan.vlc.player.result&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==Result code==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Result !! Value (int) !! Description&lt;br /&gt;
|-&lt;br /&gt;
| RESULT_OK || -1 || Video finished or user ended playback&lt;br /&gt;
|-&lt;br /&gt;
| RESULT_CANCELED || 0 || No compatible cpu, incorrect VLC abi variant installed&lt;br /&gt;
|-&lt;br /&gt;
| RESULT_CONNECTION_FAILED || 2 || Connection failed to audio service&lt;br /&gt;
|-&lt;br /&gt;
| RESULT_PLAYBACK_ERROR || 3 || VLC is not able to play this file, it could be incorrect path/uri, not supported codec or broken file&lt;br /&gt;
|-&lt;br /&gt;
| RESULT_HARDWARE_ACCELERATION_ERROR || 4 || Error with hardware acceleration, user refused to switch to software decoding&lt;br /&gt;
|-&lt;br /&gt;
| RESULT_VIDEO_TRACK_LOST || 5 || VLC continues playback, but for audio track only. (Audio file detected or user chose to)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Data==&lt;br /&gt;
Media Uri&lt;br /&gt;
&lt;br /&gt;
You can check the source [http://git.videolan.org/?p=vlc-ports/android.git;a=blob;f=vlc-android/src/org/videolan/vlc/gui/video/VideoPlayerActivity.java;hb=HEAD here].&lt;/div&gt;</summary>
		<author><name>Dekans</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=Android_Player_Intents&amp;diff=31089</id>
		<title>Android Player Intents</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=Android_Player_Intents&amp;diff=31089"/>
		<updated>2016-03-11T18:29:43Z</updated>

		<summary type="html">&lt;p&gt;Dekans: /* Extras (optional) */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Open a media with VLC Player=&lt;br /&gt;
To play a media with VLC player, use an intent with the following settings&lt;br /&gt;
&lt;br /&gt;
== action ==&lt;br /&gt;
 Intent.ACTION_VIEW (&amp;quot;android.intent.action.VIEW&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
== Package name ==&lt;br /&gt;
 &amp;quot;org.videolan.vlc&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== data ==&lt;br /&gt;
The media Uri&lt;br /&gt;
&lt;br /&gt;
== type ==&lt;br /&gt;
one of:&lt;br /&gt;
&lt;br /&gt;
* video/*&lt;br /&gt;
* audio/*&lt;br /&gt;
* */rmvb&lt;br /&gt;
* */avi&lt;br /&gt;
* */mkv&lt;br /&gt;
* application/3gpp*&lt;br /&gt;
* application/mp4&lt;br /&gt;
* application/mpeg*&lt;br /&gt;
* application/ogg&lt;br /&gt;
* application/sdp&lt;br /&gt;
* application/vnd.3gp*&lt;br /&gt;
* application/vnd.apple.mpegurl&lt;br /&gt;
* application/vnd.dvd*&lt;br /&gt;
* application/vnd.dolby*&lt;br /&gt;
* application/vnd.rn-realmedia*&lt;br /&gt;
* application/x-iso9660-image&lt;br /&gt;
* application/x-extension-mp4&lt;br /&gt;
* application/x-flac&lt;br /&gt;
* application/x-matroska&lt;br /&gt;
* application/x-mpegURL&lt;br /&gt;
* application/x-ogg&lt;br /&gt;
* application/x-quicktimeplayer&lt;br /&gt;
* application/x-shockwave-flash&lt;br /&gt;
* application/xspf+xml&lt;br /&gt;
* misc/ultravox&lt;br /&gt;
&lt;br /&gt;
== Extras (optional) ==&lt;br /&gt;
* &amp;quot;position&amp;quot;: position in the media, in ms (type long)&lt;br /&gt;
* &amp;quot;subtitles_location&amp;quot;: path of a subtitles file (type String)&lt;br /&gt;
* &amp;quot;title&amp;quot;: title you want to display (type String)&lt;br /&gt;
* &amp;quot;from_start&amp;quot;: Force playback from the beginning (type boolean)&lt;br /&gt;
* &amp;quot;opened_position&amp;quot;: position in the media, in ms (type long)&lt;br /&gt;
* &amp;quot;extra_duration&amp;quot;: media duration (type long)&lt;br /&gt;
&lt;br /&gt;
== Sample code ==&lt;br /&gt;
For a simple media playback:&lt;br /&gt;
  int vlcRequestCode = 42;&lt;br /&gt;
  Uri uri = Uri.parse(&amp;quot;file:///storage/emulated/0/Movies/KUNG FURY Official Movie.mp4&amp;quot;);&lt;br /&gt;
  Intent vlcIntent = new Intent(Intent.ACTION_VIEW);&lt;br /&gt;
  vlcIntent.setPackage(&amp;quot;org.videolan.vlc&amp;quot;);&lt;br /&gt;
  vlcIntent.setDataAndType(uri, &amp;quot;video/*&amp;quot;);&lt;br /&gt;
  vlcIntent.putExtra(&amp;quot;title&amp;quot;, &amp;quot;Kung Fury&amp;quot;);&lt;br /&gt;
  vlcIntent.putExtra(&amp;quot;from_start&amp;quot;, false);&lt;br /&gt;
  vlcIntent.putExtra(&amp;quot;opened_position&amp;quot;, 270000l);&lt;br /&gt;
  vlcIntent.putExtra(&amp;quot;subtitles_location&amp;quot;, &amp;quot;/sdcard/Movies/Fifty-Fifty.srt&amp;quot;);&lt;br /&gt;
  startActivityForResult(vlcIntent, vlcRequestCode);&lt;br /&gt;
&lt;br /&gt;
If you specifically want start VideoPlayerActivity, you can set&lt;br /&gt;
  vlcIntent.setComponent(new ComponentName(&amp;quot;org.videolan.vlc&amp;quot;, &amp;quot;org.videolan.vlc.gui.video.VideoPlayerActivity&amp;quot;));&lt;br /&gt;
&lt;br /&gt;
=Get result code from VLC=&lt;br /&gt;
Since version 1.4.1, Android VLC application returns an intent when closing.&lt;br /&gt;
&lt;br /&gt;
Here is the description of this intent:&lt;br /&gt;
&lt;br /&gt;
==Intent action==&lt;br /&gt;
 &amp;quot;org.videolan.vlc.player.result&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==Result code==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Result !! Value (int) !! Description&lt;br /&gt;
|-&lt;br /&gt;
| RESULT_OK || -1 || Video finished or user ended playback&lt;br /&gt;
|-&lt;br /&gt;
| RESULT_CANCELED || 0 || No compatible cpu, incorrect VLC abi variant installed&lt;br /&gt;
|-&lt;br /&gt;
| RESULT_CONNECTION_FAILED || 2 || Connection failed to audio service&lt;br /&gt;
|-&lt;br /&gt;
| RESULT_PLAYBACK_ERROR || 3 || VLC is not able to play this file, it could be incorrect path/uri, not supported codec or broken file&lt;br /&gt;
|-&lt;br /&gt;
| RESULT_HARDWARE_ACCELERATION_ERROR || 4 || Error with hardware acceleration, user refused to switch to software decoding&lt;br /&gt;
|-&lt;br /&gt;
| RESULT_VIDEO_TRACK_LOST || 5 || VLC continues playback, but for audio track only. (Audio file detected or user chose to)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Data==&lt;br /&gt;
Media Uri&lt;br /&gt;
&lt;br /&gt;
You can check the source [http://git.videolan.org/?p=vlc-ports/android.git;a=blob;f=vlc-android/src/org/videolan/vlc/gui/video/VideoPlayerActivity.java;hb=HEAD here].&lt;/div&gt;</summary>
		<author><name>Dekans</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=Android_Player_Intents&amp;diff=31088</id>
		<title>Android Player Intents</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=Android_Player_Intents&amp;diff=31088"/>
		<updated>2016-03-11T18:28:04Z</updated>

		<summary type="html">&lt;p&gt;Dekans: /* Extras */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Open a media with VLC Player=&lt;br /&gt;
To play a media with VLC player, use an intent with the following settings&lt;br /&gt;
&lt;br /&gt;
== action ==&lt;br /&gt;
 Intent.ACTION_VIEW (&amp;quot;android.intent.action.VIEW&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
== Package name ==&lt;br /&gt;
 &amp;quot;org.videolan.vlc&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== data ==&lt;br /&gt;
The media Uri&lt;br /&gt;
&lt;br /&gt;
== type ==&lt;br /&gt;
one of:&lt;br /&gt;
&lt;br /&gt;
* video/*&lt;br /&gt;
* audio/*&lt;br /&gt;
* */rmvb&lt;br /&gt;
* */avi&lt;br /&gt;
* */mkv&lt;br /&gt;
* application/3gpp*&lt;br /&gt;
* application/mp4&lt;br /&gt;
* application/mpeg*&lt;br /&gt;
* application/ogg&lt;br /&gt;
* application/sdp&lt;br /&gt;
* application/vnd.3gp*&lt;br /&gt;
* application/vnd.apple.mpegurl&lt;br /&gt;
* application/vnd.dvd*&lt;br /&gt;
* application/vnd.dolby*&lt;br /&gt;
* application/vnd.rn-realmedia*&lt;br /&gt;
* application/x-iso9660-image&lt;br /&gt;
* application/x-extension-mp4&lt;br /&gt;
* application/x-flac&lt;br /&gt;
* application/x-matroska&lt;br /&gt;
* application/x-mpegURL&lt;br /&gt;
* application/x-ogg&lt;br /&gt;
* application/x-quicktimeplayer&lt;br /&gt;
* application/x-shockwave-flash&lt;br /&gt;
* application/xspf+xml&lt;br /&gt;
* misc/ultravox&lt;br /&gt;
&lt;br /&gt;
== Extras (optional) ==&lt;br /&gt;
* &amp;quot;position&amp;quot;: position in the media, in ms (type long)&lt;br /&gt;
* &amp;quot;subtitles_location&amp;quot;: path of a subtitles file (type String)&lt;br /&gt;
* &amp;quot;title&amp;quot;: title you want to display (type String)&lt;br /&gt;
&lt;br /&gt;
== Sample code ==&lt;br /&gt;
For a simple media playback:&lt;br /&gt;
  int vlcRequestCode = 42;&lt;br /&gt;
  Uri uri = Uri.parse(&amp;quot;file:///storage/emulated/0/Movies/KUNG FURY Official Movie.mp4&amp;quot;);&lt;br /&gt;
  Intent vlcIntent = new Intent(Intent.ACTION_VIEW);&lt;br /&gt;
  vlcIntent.setPackage(&amp;quot;org.videolan.vlc&amp;quot;);&lt;br /&gt;
  vlcIntent.setDataAndType(uri, &amp;quot;video/*&amp;quot;);&lt;br /&gt;
  vlcIntent.putExtra(&amp;quot;title&amp;quot;, &amp;quot;Kung Fury&amp;quot;);&lt;br /&gt;
  vlcIntent.putExtra(&amp;quot;from_start&amp;quot;, false);&lt;br /&gt;
  vlcIntent.putExtra(&amp;quot;opened_position&amp;quot;, 270000l);&lt;br /&gt;
  vlcIntent.putExtra(&amp;quot;subtitles_location&amp;quot;, &amp;quot;/sdcard/Movies/Fifty-Fifty.srt&amp;quot;);&lt;br /&gt;
  startActivityForResult(vlcIntent, vlcRequestCode);&lt;br /&gt;
&lt;br /&gt;
If you specifically want start VideoPlayerActivity, you can set&lt;br /&gt;
  vlcIntent.setComponent(new ComponentName(&amp;quot;org.videolan.vlc&amp;quot;, &amp;quot;org.videolan.vlc.gui.video.VideoPlayerActivity&amp;quot;));&lt;br /&gt;
&lt;br /&gt;
=Get result code from VLC=&lt;br /&gt;
Since version 1.4.1, Android VLC application returns an intent when closing.&lt;br /&gt;
&lt;br /&gt;
Here is the description of this intent:&lt;br /&gt;
&lt;br /&gt;
==Intent action==&lt;br /&gt;
 &amp;quot;org.videolan.vlc.player.result&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==Result code==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Result !! Value (int) !! Description&lt;br /&gt;
|-&lt;br /&gt;
| RESULT_OK || -1 || Video finished or user ended playback&lt;br /&gt;
|-&lt;br /&gt;
| RESULT_CANCELED || 0 || No compatible cpu, incorrect VLC abi variant installed&lt;br /&gt;
|-&lt;br /&gt;
| RESULT_CONNECTION_FAILED || 2 || Connection failed to audio service&lt;br /&gt;
|-&lt;br /&gt;
| RESULT_PLAYBACK_ERROR || 3 || VLC is not able to play this file, it could be incorrect path/uri, not supported codec or broken file&lt;br /&gt;
|-&lt;br /&gt;
| RESULT_HARDWARE_ACCELERATION_ERROR || 4 || Error with hardware acceleration, user refused to switch to software decoding&lt;br /&gt;
|-&lt;br /&gt;
| RESULT_VIDEO_TRACK_LOST || 5 || VLC continues playback, but for audio track only. (Audio file detected or user chose to)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Data==&lt;br /&gt;
Media Uri&lt;br /&gt;
&lt;br /&gt;
You can check the source [http://git.videolan.org/?p=vlc-ports/android.git;a=blob;f=vlc-android/src/org/videolan/vlc/gui/video/VideoPlayerActivity.java;hb=HEAD here].&lt;/div&gt;</summary>
		<author><name>Dekans</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=Android_Player_Intents&amp;diff=31087</id>
		<title>Android Player Intents</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=Android_Player_Intents&amp;diff=31087"/>
		<updated>2016-03-11T18:27:44Z</updated>

		<summary type="html">&lt;p&gt;Dekans: /* Sample code */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Open a media with VLC Player=&lt;br /&gt;
To play a media with VLC player, use an intent with the following settings&lt;br /&gt;
&lt;br /&gt;
== action ==&lt;br /&gt;
 Intent.ACTION_VIEW (&amp;quot;android.intent.action.VIEW&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
== Package name ==&lt;br /&gt;
 &amp;quot;org.videolan.vlc&amp;quot;&lt;br /&gt;
&lt;br /&gt;
== data ==&lt;br /&gt;
The media Uri&lt;br /&gt;
&lt;br /&gt;
== type ==&lt;br /&gt;
one of:&lt;br /&gt;
&lt;br /&gt;
* video/*&lt;br /&gt;
* audio/*&lt;br /&gt;
* */rmvb&lt;br /&gt;
* */avi&lt;br /&gt;
* */mkv&lt;br /&gt;
* application/3gpp*&lt;br /&gt;
* application/mp4&lt;br /&gt;
* application/mpeg*&lt;br /&gt;
* application/ogg&lt;br /&gt;
* application/sdp&lt;br /&gt;
* application/vnd.3gp*&lt;br /&gt;
* application/vnd.apple.mpegurl&lt;br /&gt;
* application/vnd.dvd*&lt;br /&gt;
* application/vnd.dolby*&lt;br /&gt;
* application/vnd.rn-realmedia*&lt;br /&gt;
* application/x-iso9660-image&lt;br /&gt;
* application/x-extension-mp4&lt;br /&gt;
* application/x-flac&lt;br /&gt;
* application/x-matroska&lt;br /&gt;
* application/x-mpegURL&lt;br /&gt;
* application/x-ogg&lt;br /&gt;
* application/x-quicktimeplayer&lt;br /&gt;
* application/x-shockwave-flash&lt;br /&gt;
* application/xspf+xml&lt;br /&gt;
* misc/ultravox&lt;br /&gt;
&lt;br /&gt;
== Extras (optional) ==&lt;br /&gt;
* &amp;quot;position&amp;quot;: position in the media, in ms (type long)&lt;br /&gt;
* &amp;quot;subtitles_location&amp;quot;: path of a subtitles file (type String)&lt;br /&gt;
* &amp;quot;title&amp;quot;: title you want to display (type String)&lt;br /&gt;
&lt;br /&gt;
== Sample code ==&lt;br /&gt;
For a simple media playback:&lt;br /&gt;
  int vlcRequestCode = 42;&lt;br /&gt;
  Uri uri = Uri.parse(&amp;quot;file:///storage/emulated/0/Movies/KUNG FURY Official Movie.mp4&amp;quot;);&lt;br /&gt;
  Intent vlcIntent = new Intent(Intent.ACTION_VIEW);&lt;br /&gt;
  vlcIntent.setPackage(&amp;quot;org.videolan.vlc&amp;quot;);&lt;br /&gt;
  vlcIntent.setDataAndType(uri, &amp;quot;video/*&amp;quot;);&lt;br /&gt;
  vlcIntent.putExtra(&amp;quot;title&amp;quot;, &amp;quot;Kung Fury&amp;quot;);&lt;br /&gt;
  vlcIntent.putExtra(&amp;quot;from_start&amp;quot;, false);&lt;br /&gt;
  vlcIntent.putExtra(&amp;quot;opened_position&amp;quot;, 270000l);&lt;br /&gt;
  vlcIntent.putExtra(&amp;quot;subtitles_location&amp;quot;, &amp;quot;/sdcard/Movies/Fifty-Fifty.srt&amp;quot;);&lt;br /&gt;
  startActivityForResult(vlcIntent, vlcRequestCode);&lt;br /&gt;
&lt;br /&gt;
If you specifically want start VideoPlayerActivity, you can set&lt;br /&gt;
  vlcIntent.setComponent(new ComponentName(&amp;quot;org.videolan.vlc&amp;quot;, &amp;quot;org.videolan.vlc.gui.video.VideoPlayerActivity&amp;quot;));&lt;br /&gt;
&lt;br /&gt;
=Get result code from VLC=&lt;br /&gt;
Since version 1.4.1, Android VLC application returns an intent when closing.&lt;br /&gt;
&lt;br /&gt;
Here is the description of this intent:&lt;br /&gt;
&lt;br /&gt;
==Intent action==&lt;br /&gt;
 &amp;quot;org.videolan.vlc.player.result&amp;quot;&lt;br /&gt;
&lt;br /&gt;
==Result code==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Result !! Value (int) !! Description&lt;br /&gt;
|-&lt;br /&gt;
| RESULT_OK || -1 || Video finished or user ended playback&lt;br /&gt;
|-&lt;br /&gt;
| RESULT_CANCELED || 0 || No compatible cpu, incorrect VLC abi variant installed&lt;br /&gt;
|-&lt;br /&gt;
| RESULT_CONNECTION_FAILED || 2 || Connection failed to audio service&lt;br /&gt;
|-&lt;br /&gt;
| RESULT_PLAYBACK_ERROR || 3 || VLC is not able to play this file, it could be incorrect path/uri, not supported codec or broken file&lt;br /&gt;
|-&lt;br /&gt;
| RESULT_HARDWARE_ACCELERATION_ERROR || 4 || Error with hardware acceleration, user refused to switch to software decoding&lt;br /&gt;
|-&lt;br /&gt;
| RESULT_VIDEO_TRACK_LOST || 5 || VLC continues playback, but for audio track only. (Audio file detected or user chose to)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Data==&lt;br /&gt;
Media Uri&lt;br /&gt;
&lt;br /&gt;
==Extras==&lt;br /&gt;
* &amp;quot;extra_position&amp;quot;: position in the media, in ms (type long)&lt;br /&gt;
* &amp;quot;extra_duration&amp;quot;: media duration (type long)&lt;br /&gt;
&lt;br /&gt;
You can check the source [http://git.videolan.org/?p=vlc-ports/android.git;a=blob;f=vlc-android/src/org/videolan/vlc/gui/video/VideoPlayerActivity.java;hb=HEAD here].&lt;/div&gt;</summary>
		<author><name>Dekans</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=Android_Report_bugs&amp;diff=30646</id>
		<title>Android Report bugs</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=Android_Report_bugs&amp;diff=30646"/>
		<updated>2016-01-27T11:11:37Z</updated>

		<summary type="html">&lt;p&gt;Dekans: /* What you have to do */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:VLC Android Crash.png|thumb|right|VLC for Android has crashed]]&lt;br /&gt;
&lt;br /&gt;
{{howto|report Android bugs}}&lt;br /&gt;
&lt;br /&gt;
=Are you sure it&#039;s a &#039;&#039;true&#039;&#039; bug?=&lt;br /&gt;
Well, you know the old adage: &#039;&#039;&amp;quot;Have you tried turning it off and on again?&amp;quot;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Don&#039;t be mistaken - we believe you but sometimes, it is truly not our fault... So before becoming grumpy, try these steps:&lt;br /&gt;
* Restart your Android device, then relaunch VLC.&lt;br /&gt;
* Still getting the bug? Try to uninstall and re-install VLC.&lt;br /&gt;
&lt;br /&gt;
The bug is definitely still there? Now you can keep reading this page...&lt;br /&gt;
&lt;br /&gt;
=What you have to do=&lt;br /&gt;
If you want to help us solve an issue you experience on VLC for Android, we need to know a few things:&lt;br /&gt;
* your exact device name (go to &#039;&#039;&#039;Settings &amp;gt; About Phone &amp;gt; Model Number&#039;&#039;&#039;)&lt;br /&gt;
* your Android version (go to &#039;&#039;&#039;Settings &amp;gt; About Phone &amp;gt; Android Version&#039;&#039;&#039;)&lt;br /&gt;
* your VLC version (go to &#039;&#039;&#039;VLC &amp;gt; Options &amp;gt; About&#039;&#039;&#039;)&lt;br /&gt;
* a log file (see below)&lt;br /&gt;
* whether the issue occurs only on one media (video or music) or all of them&lt;br /&gt;
* location to a sample, a screenshot, etc...&lt;br /&gt;
&lt;br /&gt;
If you were asked to do this by a developer from [https://forum.videolan.org/ the VideoLAN forum], then please respond with this information in the same thread.&lt;br /&gt;
&lt;br /&gt;
If not, send us this information at &#039;&#039;&#039;[mailto:videolan.android@gmail.com videolan.android@gmail.com]&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
However, if you are competent enough, feel free to create a report on the [https://trac.videolan.org/vlc/ VLC bug tracker]. Please note that any tickets which do not follow the standards for bug reporting &#039;&#039;will be closed&#039;&#039; systematically.&lt;br /&gt;
&lt;br /&gt;
=How to find the log file?=&lt;br /&gt;
==If VLC for Android crashes==&lt;br /&gt;
Normally, when VLC for Android crashes it will leave behind a &#039;&#039;&#039;vlc_logcat_&#039;&#039;&#039;&#039;&#039;&amp;lt;date and some numbers&amp;gt;&#039;&#039;&#039;&#039;&#039;.log&#039;&#039;&#039; file in your &#039;&#039;&#039;SD card&#039;s root&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
You can then retrieve this to your computer using the file transfer mechanism offered by your device (e.g. Mass storage, etc). Or, you can use [http://www.openintents.org/en/filemanager OI File Manager] (open source file browser) to view and manipulate the file (e.g. move it to a folder where it&#039;s uploadable to PC).&lt;br /&gt;
&lt;br /&gt;
Then, send us this &#039;&#039;vlc_logcat_&amp;lt;...&amp;gt;.log&#039;&#039; file.&lt;br /&gt;
&lt;br /&gt;
If you do not find any log in the form of &#039;&#039;vlc_logcat_&amp;lt;...&amp;gt;.log&#039;&#039;, then you probably have a native crash. See below for details on native crashes.&lt;br /&gt;
[[File:VLC_Android_Logcat_File.png|thumb|center|200px|Log files in your SD card&#039;s root]]&lt;br /&gt;
&lt;br /&gt;
==Playback issues where VLC does not crash==&lt;br /&gt;
If VLC does not crash, you have to manually create a log file.&lt;br /&gt;
&lt;br /&gt;
# Ensure VLC is completely closed by force-stopping it in Android settings.&lt;br /&gt;
# Start VLC.&lt;br /&gt;
# Go to &#039;&#039;&#039;Settings → Developer&#039;&#039;&#039; (at the very bottom) &#039;&#039;&#039;→ Debug logs&#039;&#039;&#039;, and tap &#039;&#039;&#039;Start logging&#039;&#039;&#039;.&lt;br /&gt;
# Play the media file in question and/or try to reproduce the issue.&lt;br /&gt;
# Once you are done playing the file, go back to the &#039;&#039;&#039;Debug logs&#039;&#039;&#039; screen. You can find the log in this screen. To retrieve it, copy it to the Android clipboard and paste it on a mail for example.&lt;br /&gt;
# Or dump this log by pressing &#039;&#039;&#039;Dump Logcat Log&#039;&#039;&#039; and send the generated file by mail.&lt;br /&gt;
# You can also paste it on any [http://pastebin.com/ pastebin] site or however you wish and send us the link.&lt;br /&gt;
# Press &#039;&#039;&#039;Stop logging&#039;&#039;&#039; to end the debugging session and return to normal usage.&lt;br /&gt;
&lt;br /&gt;
And that&#039;s it.&lt;br /&gt;
&lt;br /&gt;
==User interface issues==&lt;br /&gt;
Go to &#039;&#039;&#039;Preferences&#039;&#039;&#039; → &#039;&#039;&#039;Advanced debugging&#039;&#039;&#039; → &#039;&#039;&#039;dump logcat&#039;&#039;&#039; and upload the provided file.&lt;br /&gt;
&lt;br /&gt;
==Advanced users or developers==&lt;br /&gt;
However, in some cases (such as on certain Huawei phones who use a non-standard implementation of Logcat) you will need access to a computer and enable adb debugging. To do this, first ADB debugging must be enabled - &#039;&#039;&#039;Settings → Developer options → USB debugging&#039;&#039;&#039;, or on older phones, &#039;&#039;&#039;Settings → Applications → Development → USB debugging&#039;&#039;&#039;. In both cases, ensure that the option is checked. &lt;br /&gt;
&lt;br /&gt;
An easier approach might be to install [https://github.com/jackpal/Android-Terminal-Emulator/wiki Terminal (a.k.a. Term.apk)] if you haven&#039;t already. Open Terminal and clear the logcat buffer with &amp;lt;code&amp;gt;logcat -c&amp;lt;/code&amp;gt;. Then, re-open VLC and try to make it crash. Once it crashes, then re-open Terminal and type in letter-for-letter, case sensitive: &amp;lt;code&amp;gt;cd /sdcard &amp;amp;&amp;amp; logcat -d &amp;gt; log.txt&amp;lt;/code&amp;gt; into the terminal, and hit Enter. Pull the file &amp;quot;log.txt&amp;quot; under the SD card to your PC and pastebin.&lt;br /&gt;
&lt;br /&gt;
The normal developers&#039; approach is to [http://developer.android.com/sdk/installing/index.html install the Android SDK] and run &amp;lt;code&amp;gt;adb logcat -d &amp;gt; log.txt&amp;lt;/code&amp;gt;, then pastebin the log.txt.&lt;br /&gt;
&lt;br /&gt;
==Native crashes (advanced stuff)==&lt;br /&gt;
Sometimes, you might asked by one of the developers for a &#039;&#039;&#039;backtrace&#039;&#039;&#039;, or &#039;&#039;&#039;native trace&#039;&#039;&#039;. If so, then please see [[AndroidCompile#Native debugging]].&lt;br /&gt;
&lt;br /&gt;
[[Category:Android]]&lt;/div&gt;</summary>
		<author><name>Dekans</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=Android_Report_bugs&amp;diff=30645</id>
		<title>Android Report bugs</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=Android_Report_bugs&amp;diff=30645"/>
		<updated>2016-01-27T11:11:12Z</updated>

		<summary type="html">&lt;p&gt;Dekans: email address update&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;[[File:VLC Android Crash.png|thumb|right|VLC for Android has crashed]]&lt;br /&gt;
&lt;br /&gt;
{{howto|report Android bugs}}&lt;br /&gt;
&lt;br /&gt;
=Are you sure it&#039;s a &#039;&#039;true&#039;&#039; bug?=&lt;br /&gt;
Well, you know the old adage: &#039;&#039;&amp;quot;Have you tried turning it off and on again?&amp;quot;&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
Don&#039;t be mistaken - we believe you but sometimes, it is truly not our fault... So before becoming grumpy, try these steps:&lt;br /&gt;
* Restart your Android device, then relaunch VLC.&lt;br /&gt;
* Still getting the bug? Try to uninstall and re-install VLC.&lt;br /&gt;
&lt;br /&gt;
The bug is definitely still there? Now you can keep reading this page...&lt;br /&gt;
&lt;br /&gt;
=What you have to do=&lt;br /&gt;
If you want to help us solve an issue you experience on VLC for Android, we need to know a few things:&lt;br /&gt;
* your exact device name (go to &#039;&#039;&#039;Settings &amp;gt; About Phone &amp;gt; Model Number&#039;&#039;&#039;)&lt;br /&gt;
* your Android version (go to &#039;&#039;&#039;Settings &amp;gt; About Phone &amp;gt; Android Version&#039;&#039;&#039;)&lt;br /&gt;
* your VLC version (go to &#039;&#039;&#039;VLC &amp;gt; Options &amp;gt; About&#039;&#039;&#039;)&lt;br /&gt;
* a log file (see below)&lt;br /&gt;
* whether the issue occurs only on one media (video or music) or all of them&lt;br /&gt;
* location to a sample, a screenshot, etc...&lt;br /&gt;
&lt;br /&gt;
If you were asked to do this by a developer from [https://forum.videolan.org/ the VideoLAN forum], then please respond with this information in the same thread.&lt;br /&gt;
&lt;br /&gt;
If not, send us this information at &#039;&#039;&#039;[mailto:videolan.android@gmail.com videolan.mobile@gmail.com]&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
However, if you are competent enough, feel free to create a report on the [https://trac.videolan.org/vlc/ VLC bug tracker]. Please note that any tickets which do not follow the standards for bug reporting &#039;&#039;will be closed&#039;&#039; systematically.&lt;br /&gt;
&lt;br /&gt;
=How to find the log file?=&lt;br /&gt;
==If VLC for Android crashes==&lt;br /&gt;
Normally, when VLC for Android crashes it will leave behind a &#039;&#039;&#039;vlc_logcat_&#039;&#039;&#039;&#039;&#039;&amp;lt;date and some numbers&amp;gt;&#039;&#039;&#039;&#039;&#039;.log&#039;&#039;&#039; file in your &#039;&#039;&#039;SD card&#039;s root&#039;&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
You can then retrieve this to your computer using the file transfer mechanism offered by your device (e.g. Mass storage, etc). Or, you can use [http://www.openintents.org/en/filemanager OI File Manager] (open source file browser) to view and manipulate the file (e.g. move it to a folder where it&#039;s uploadable to PC).&lt;br /&gt;
&lt;br /&gt;
Then, send us this &#039;&#039;vlc_logcat_&amp;lt;...&amp;gt;.log&#039;&#039; file.&lt;br /&gt;
&lt;br /&gt;
If you do not find any log in the form of &#039;&#039;vlc_logcat_&amp;lt;...&amp;gt;.log&#039;&#039;, then you probably have a native crash. See below for details on native crashes.&lt;br /&gt;
[[File:VLC_Android_Logcat_File.png|thumb|center|200px|Log files in your SD card&#039;s root]]&lt;br /&gt;
&lt;br /&gt;
==Playback issues where VLC does not crash==&lt;br /&gt;
If VLC does not crash, you have to manually create a log file.&lt;br /&gt;
&lt;br /&gt;
# Ensure VLC is completely closed by force-stopping it in Android settings.&lt;br /&gt;
# Start VLC.&lt;br /&gt;
# Go to &#039;&#039;&#039;Settings → Developer&#039;&#039;&#039; (at the very bottom) &#039;&#039;&#039;→ Debug logs&#039;&#039;&#039;, and tap &#039;&#039;&#039;Start logging&#039;&#039;&#039;.&lt;br /&gt;
# Play the media file in question and/or try to reproduce the issue.&lt;br /&gt;
# Once you are done playing the file, go back to the &#039;&#039;&#039;Debug logs&#039;&#039;&#039; screen. You can find the log in this screen. To retrieve it, copy it to the Android clipboard and paste it on a mail for example.&lt;br /&gt;
# Or dump this log by pressing &#039;&#039;&#039;Dump Logcat Log&#039;&#039;&#039; and send the generated file by mail.&lt;br /&gt;
# You can also paste it on any [http://pastebin.com/ pastebin] site or however you wish and send us the link.&lt;br /&gt;
# Press &#039;&#039;&#039;Stop logging&#039;&#039;&#039; to end the debugging session and return to normal usage.&lt;br /&gt;
&lt;br /&gt;
And that&#039;s it.&lt;br /&gt;
&lt;br /&gt;
==User interface issues==&lt;br /&gt;
Go to &#039;&#039;&#039;Preferences&#039;&#039;&#039; → &#039;&#039;&#039;Advanced debugging&#039;&#039;&#039; → &#039;&#039;&#039;dump logcat&#039;&#039;&#039; and upload the provided file.&lt;br /&gt;
&lt;br /&gt;
==Advanced users or developers==&lt;br /&gt;
However, in some cases (such as on certain Huawei phones who use a non-standard implementation of Logcat) you will need access to a computer and enable adb debugging. To do this, first ADB debugging must be enabled - &#039;&#039;&#039;Settings → Developer options → USB debugging&#039;&#039;&#039;, or on older phones, &#039;&#039;&#039;Settings → Applications → Development → USB debugging&#039;&#039;&#039;. In both cases, ensure that the option is checked. &lt;br /&gt;
&lt;br /&gt;
An easier approach might be to install [https://github.com/jackpal/Android-Terminal-Emulator/wiki Terminal (a.k.a. Term.apk)] if you haven&#039;t already. Open Terminal and clear the logcat buffer with &amp;lt;code&amp;gt;logcat -c&amp;lt;/code&amp;gt;. Then, re-open VLC and try to make it crash. Once it crashes, then re-open Terminal and type in letter-for-letter, case sensitive: &amp;lt;code&amp;gt;cd /sdcard &amp;amp;&amp;amp; logcat -d &amp;gt; log.txt&amp;lt;/code&amp;gt; into the terminal, and hit Enter. Pull the file &amp;quot;log.txt&amp;quot; under the SD card to your PC and pastebin.&lt;br /&gt;
&lt;br /&gt;
The normal developers&#039; approach is to [http://developer.android.com/sdk/installing/index.html install the Android SDK] and run &amp;lt;code&amp;gt;adb logcat -d &amp;gt; log.txt&amp;lt;/code&amp;gt;, then pastebin the log.txt.&lt;br /&gt;
&lt;br /&gt;
==Native crashes (advanced stuff)==&lt;br /&gt;
Sometimes, you might asked by one of the developers for a &#039;&#039;&#039;backtrace&#039;&#039;&#039;, or &#039;&#039;&#039;native trace&#039;&#039;&#039;. If so, then please see [[AndroidCompile#Native debugging]].&lt;br /&gt;
&lt;br /&gt;
[[Category:Android]]&lt;/div&gt;</summary>
		<author><name>Dekans</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=AndroidCompile&amp;diff=30548</id>
		<title>AndroidCompile</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=AndroidCompile&amp;diff=30548"/>
		<updated>2015-12-23T14:53:06Z</updated>

		<summary type="html">&lt;p&gt;Dekans: /* Example on Ubuntu */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page is an introduction to the compilation of &#039;&#039;&#039;VLC for Android&#039;&#039;&#039; on Linux. &lt;br /&gt;
&lt;br /&gt;
==Android Studio, SDK and NDK installation==&lt;br /&gt;
&lt;br /&gt;
=== Requirements  ===&lt;br /&gt;
* You &#039;&#039;&#039;MUST&#039;&#039;&#039; build on Linux (or OSX if you know what you are doing).&lt;br /&gt;
* The following packages &#039;&#039;&#039;MUST&#039;&#039;&#039; must be installed:&lt;br /&gt;
** the GNU autotools: &#039;&#039;autoconf&#039;&#039;, &#039;&#039;libtool&#039;&#039;, &#039;&#039;automake&#039;&#039; and &#039;&#039;make&#039;&#039; (a.k.a. &#039;&#039;gmake&#039;&#039;)&lt;br /&gt;
** ...and their dependencies: &#039;&#039;m4&#039;&#039; and &#039;&#039;gawk&#039;&#039;, &#039;&#039;mawk&#039;&#039; or &#039;&#039;nawk&#039;&#039;,&lt;br /&gt;
** the GNU C and C++ compilers a.k.a. &#039;&#039;gcc&#039;&#039; and &#039;&#039;g++&#039;&#039;,&lt;br /&gt;
** some GNU build utilities: &#039;&#039;pkg-config&#039;&#039; and &#039;&#039;patch&#039;&#039;,&lt;br /&gt;
** the following other build utilities: &#039;&#039;Apache Ant&#039;&#039; (or &#039;&#039;Ant&#039;&#039;), &#039;&#039;cmake&#039;&#039;, &#039;&#039;protobuf&#039;&#039;, &#039;&#039;ragel&#039;&#039;,&lt;br /&gt;
** the Subversion and Git version control systems&lt;br /&gt;
** &#039;&#039;unzip&#039;&#039; and either &#039;&#039;curl&#039;&#039; or &#039;&#039;wget&#039;&#039; for retreiving sources.&lt;br /&gt;
* Very recent versions of some of those tools may be required. At the time of writing, notably gettext 0.19.3 or later is required.&lt;br /&gt;
* If any of the above is missing, expect the build to fail at some point.&lt;br /&gt;
* If targeting an Android-x86 device, &#039;&#039;yasm&#039;&#039; must be installed too.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color: #ff0000&amp;quot;&amp;gt;&#039;&#039;&#039;64-bit users&#039;&#039;&#039;&amp;lt;/span&amp;gt;: You must install these 32-bit libs as specified here: [[AndroidCompile#Can.27t_run_aapt_or_adb_on_Linux_64-bit]]&lt;br /&gt;
&lt;br /&gt;
==== Example on Ubuntu ====&lt;br /&gt;
Install the packages as follow:&lt;br /&gt;
 sudo apt-get install automake ant autopoint cmake build-essential libtool \&lt;br /&gt;
      patch pkg-config protobuf-compiler ragel subversion unzip git&lt;br /&gt;
&lt;br /&gt;
Note : VLC requires gettext version 0.19.3, but Ubuntu version &#039;&#039;&#039;15.04 (Vivid Vervet)&#039;&#039;&#039; provides version 0.19.2&lt;br /&gt;
&lt;br /&gt;
To build VLC with this release, either build your own gettext from sources, or &lt;br /&gt;
edit vlc/contrib/contrib-tizen-arm-linux-gnueabi/libgpg-error/configure.ac, line 158 and change version 0.19.3 to version 0.19.2&lt;br /&gt;
&lt;br /&gt;
=== SDK &amp;amp; Android Studio ===&lt;br /&gt;
# Go to [http://developer.android.com/sdk/index.html Android SDK page].&lt;br /&gt;
# Follow instructions to install latest version of Android SDK.&lt;br /&gt;
# Android Studio is recommended, but not mandatory!&lt;br /&gt;
&lt;br /&gt;
You can have [http://developer.android.com/sdk/installing.html more details], if needed.&lt;br /&gt;
&lt;br /&gt;
===Android NDK===&lt;br /&gt;
# Check that the SDK installation is correct. &lt;br /&gt;
# Go to the [http://developer.android.com/sdk/ndk/index.html Android NDK page] and download the &#039;&#039;&#039;NDK r10e&#039;&#039;&#039; for Linux. &lt;br /&gt;
# Decompress it to install&lt;br /&gt;
&lt;br /&gt;
== Environment setup  ==&lt;br /&gt;
Set &#039;&#039;&#039;$ANDROID_SDK&#039;&#039;&#039; to point to your Android SDK directory &lt;br /&gt;
&lt;br /&gt;
 export ANDROID_SDK=/path/to/android-sdk&lt;br /&gt;
&lt;br /&gt;
Set &#039;&#039;&#039;$ANDROID_NDK&#039;&#039;&#039; to point to your Android NDK directory &lt;br /&gt;
&lt;br /&gt;
 export ANDROID_NDK=/path/to/android-ndk&lt;br /&gt;
&lt;br /&gt;
Add some useful binaries to your &#039;&#039;&#039;$PATH&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
 export PATH=$PATH:$ANDROID_SDK/platform-tools:$ANDROID_SDK/tools&lt;br /&gt;
&lt;br /&gt;
== Building ==&lt;br /&gt;
=== Get VLC Source ===&lt;br /&gt;
Clone the source from the VLC git!&lt;br /&gt;
&lt;br /&gt;
In your &#039;&#039;android&#039;&#039; source folder, run: &lt;br /&gt;
&lt;br /&gt;
 git clone https://code.videolan.org/videolan/vlc-android.git&lt;br /&gt;
&lt;br /&gt;
==== Setup Gradle build system ====&lt;br /&gt;
&lt;br /&gt;
Just run &#039;&#039;&#039;compile.sh&#039;&#039;&#039; once to set up gradle build system.&lt;br /&gt;
&lt;br /&gt;
It should automatically populate mandatory local.properties and gradle.properties files with:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;local.properties&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 sdk.dir=&amp;lt;SDK path from $ANDROID_SDK&amp;gt;&lt;br /&gt;
 ndk.dir=&amp;lt;NDK path from $ANDROID_NDK&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;gradle.properties&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 keyStoreFile=/home/&#039;&#039;user&#039;&#039;/.android/debug.keystore&lt;br /&gt;
 storealias=androiddebugkey&lt;br /&gt;
 storepwd=android&lt;br /&gt;
&lt;br /&gt;
This sets up gradle to build with correct SDK/NDK and sign builds with your personal debug key.&lt;br /&gt;
&lt;br /&gt;
Now you are able to build from Android Studio with &#039;&#039;&#039;Run&#039;&#039;&#039; command&lt;br /&gt;
&lt;br /&gt;
=== Devices ===&lt;br /&gt;
&lt;br /&gt;
Find the ABI for the target device.&lt;br /&gt;
&lt;br /&gt;
* For a normal (2012-2015 consumer phone or tablet) device (e.g. Cortex-A8 or Cortex-A9)&lt;br /&gt;
 &amp;lt;code&amp;gt;armeabi-v7a&amp;lt;/code&amp;gt;&lt;br /&gt;
* For a Tegra2 device (no [[wikipedia:ARM_architecture#Advanced_SIMD_.28NEON.29|NEON]])&lt;br /&gt;
 &amp;lt;code&amp;gt;armeabi-v7a&amp;lt;/code&amp;gt;&lt;br /&gt;
* For an ARMv6 device&lt;br /&gt;
 &amp;lt;code&amp;gt;armeabi&amp;lt;/code&amp;gt;&lt;br /&gt;
* For an ARMv6 device that does not support FPU&lt;br /&gt;
 &amp;lt;code&amp;gt;armeabi-nofpu&amp;lt;/code&amp;gt;&lt;br /&gt;
* For an ARMv5 device or the Android Emulator&lt;br /&gt;
 &amp;lt;code&amp;gt;armeabi-v5&amp;lt;/code&amp;gt;&lt;br /&gt;
* For a x86 device (e.g. Android-x86, Google TV, Logitech TV, Android x86 smartphones, etc)&lt;br /&gt;
 &amp;lt;code&amp;gt;x86&amp;lt;/code&amp;gt;&lt;br /&gt;
* For a MIPS device (i.e. Ainol Novo tablets):&lt;br /&gt;
 &amp;lt;code&amp;gt;mips&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This value must be passed to the compile.sh script&lt;br /&gt;
&lt;br /&gt;
==== Compile ====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Read&#039;&#039;&#039; compile.sh first, as it contains some very useful and important information. Then run it:&lt;br /&gt;
 sh compile.sh -a &amp;lt;ABI&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039; At this point, you will get an auto-generated debug APK in the vlc-android/build/outputs/apk folder, signed with a debug key.&lt;br /&gt;
&lt;br /&gt;
In order to build a non-debug (release) package:&lt;br /&gt;
 sh compile.sh release&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039; At this point, you will get an release APK in the same folder.&lt;br /&gt;
&lt;br /&gt;
=== Run ===&lt;br /&gt;
Run it and enjoy!&lt;br /&gt;
&lt;br /&gt;
=== Troubleshooting ===&lt;br /&gt;
==== Compilation error on Dependencies ====&lt;br /&gt;
Sometimes, especially when gradle dependencies have been upgraded, the &#039;&#039;compile.sh&#039;&#039; will fail to refetch dependencies. Just close Android Studio and re-run the script to fix this issue.&lt;br /&gt;
&lt;br /&gt;
== Debugging ==&lt;br /&gt;
Here are some helpful links if you wish to debug VLC on Android:&lt;br /&gt;
* [http://developer.android.com/guide/developing/debugging/ddms.html DDMS] &lt;br /&gt;
* [http://developer.android.com/guide/developing/tools/logcat.html Logcat]&lt;br /&gt;
&lt;br /&gt;
===Native debugging===&lt;br /&gt;
If you run VLC Android and you get a crash that looks something like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
I/DEBUG   (  958): *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***&lt;br /&gt;
I/DEBUG   (  958): Build fingerprint: &#039;MOTO/MBTCA/sesame/XT300:2.1-update1/SESLA_U3_01.71.0/110110:user/release-keys&#039;&lt;br /&gt;
I/DEBUG   (  958): pid: 1733, tid: 1733 &amp;gt;&amp;gt;&amp;gt; org.videolan.vlc &amp;lt;&amp;lt;&amp;lt;&lt;br /&gt;
I/DEBUG   (  958): signal 11 (SIGSEGV), fault addr 4237be3c&lt;br /&gt;
I/DEBUG   (  958):  r0 423640a0  r1 7ece77ac  r2 42bccdac  r3 4237be38&lt;br /&gt;
I/DEBUG   (  958):  r4 00000000  r5 42bccdac  r6 002ed088  r7 002ed018&lt;br /&gt;
I/DEBUG   (  958):  r8 7ece78e8  r9 2bafa844  10 0000000e  fp 7ece794c&lt;br /&gt;
I/DEBUG   (  958):  ip 00002ba0  sp 7ece7784  lr 423652e4  pc 4237be3c  cpsr 60000010&lt;br /&gt;
I/DEBUG   (  958):          #00  pc 0037be3c  /data/data/org.videolan.vlc/lib/libvlcjni.so&lt;br /&gt;
I/DEBUG   (  958):          #01  lr 423652e4  /data/data/org.videolan.vlc/lib/libvlcjni.so&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You have a &#039;&#039;&#039;native crash&#039;&#039;&#039;. To debug it, you need to have compiled VLC as above and installed it on your device. Once your compiled VLC build is on your device, you can find the &#039;&#039;&#039;backtrace&#039;&#039;&#039; as follows:&lt;br /&gt;
&lt;br /&gt;
# Make sure you are in the directory that you checked out VLC-Android in.&lt;br /&gt;
# Migrate the libvlc folders. (Do this every time the code is recompiled)&lt;br /&gt;
## cp -r libvlc/jni vlc-android&lt;br /&gt;
## cp -r libvlc/libs vlc-android&lt;br /&gt;
## cp -r libvlc/obj vlc-android&lt;br /&gt;
## (This is because the libvlc and VLC for Android folders were split yet the debugger needs the object files from both.)&lt;br /&gt;
# cd vlc-android&lt;br /&gt;
# $ANDROID_NDK/ndk-gdb --verbose --force --start&lt;br /&gt;
At this point, lots of stuff will appear:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Android NDK installation path: /opt/android-ndk-r8c&lt;br /&gt;
Using default adb command: /opt/android-sdk-linux_x86/platform-tools/adb&lt;br /&gt;
ADB version found: Android Debug Bridge version 1.0.29&lt;br /&gt;
Using ADB flags: &lt;br /&gt;
Using auto-detected project path: .&lt;br /&gt;
Found package name: org.videolan.vlc&lt;br /&gt;
...bunch of stuff skipped...&lt;br /&gt;
GNU gdb (GDB) 7.3.1-gg2&lt;br /&gt;
Copyright (C) 2011 Free Software Foundation, Inc.&lt;br /&gt;
License GPLv3+: GNU GPL version 3 or later &amp;lt;http://gnu.org/licenses/gpl.html&amp;gt;&lt;br /&gt;
This is free software: you are free to change and redistribute it.&lt;br /&gt;
There is NO WARRANTY, to the extent permitted by law.  Type &amp;quot;show copying&amp;quot;&lt;br /&gt;
and &amp;quot;show warranty&amp;quot; for details.&lt;br /&gt;
This GDB was configured as &amp;quot;--host=x86_64-linux-gnu --target=arm-linux-android&amp;quot;.&lt;br /&gt;
For bug reporting instructions, please see:&lt;br /&gt;
&amp;lt;http://www.gnu.org/software/gdb/bugs/&amp;gt;.&lt;br /&gt;
Remote debugging from host 0.0.0.0&lt;br /&gt;
...bunch of stuff skipped...&lt;br /&gt;
libthread_db:td_ta_new: Victory: We can debug theads!&lt;br /&gt;
warning: Breakpoint address adjusted from 0x400deaa5 to 0x400deaa4.&lt;br /&gt;
0x40107a40 in epoll_wait () from /media/data/vlc_android/vlc-android/obj/local/armeabi/libc.so&lt;br /&gt;
(gdb)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;ol start=&amp;quot;4&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;At this point, type in &amp;quot;continue&amp;quot; and press Enter.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Perform the actions you did to make it crash. It will spit out something like this:&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Program received signal SIGSEGV, Segmentation fault.&lt;br /&gt;
0x401120ae in ?? () from /media/data/vlc_android/vlc-android/obj/local/armeabi/libc.so&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;ol start=&amp;quot;6&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Now, just type in &amp;quot;&#039;&#039;&#039;bt full&#039;&#039;&#039;&amp;quot; (excluding the quotation marks) and press Enter. That is your backtrace that you should give to the developers when they ask for it (possibly on a [http://paste.kde.org/ pastebin], too).&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
(gdb) bt full&lt;br /&gt;
#0  0x401120ae in ?? () from /media/data/vlc_android/vlc-android/obj/local/armeabi/libc.so&lt;br /&gt;
No symbol table info available.&lt;br /&gt;
#1  0x40107bd8 in abort () from /media/data/vlc_android/vlc-android/obj/local/armeabi/libc.so&lt;br /&gt;
No symbol table info available.&lt;br /&gt;
#2  0x40118e6a in __assert2 () from /media/data/vlc_android/vlc-android/obj/local/armeabi/libc.so&lt;br /&gt;
No symbol table info available.&lt;br /&gt;
#3  0x5e0cdfdc in var_SetChecked (p_this=0x40134b94, psz_name=0x5ea2fcb8 &amp;quot;rate&amp;quot;, expected_type=80, val=...) at ../../src/misc/variables.c:711&lt;br /&gt;
        i_ret = 0&lt;br /&gt;
        p_var = &amp;lt;optimized out&amp;gt;&lt;br /&gt;
        oldval = {i_int = 4742037487051810480, b_bool = 176, f_float = 2.27765068e+14, psz_string = 0x574f26b0 &amp;quot;X\270|B\001\001&amp;quot;, p_address = 0x574f26b0, &lt;br /&gt;
          p_object = 0x574f26b0, p_list = 0x574f26b0, i_time = 4742037487051810480, coords = {x = 1464805040, y = 1104091640}}&lt;br /&gt;
        __func__ = &amp;quot;var_SetChecked&amp;quot;&lt;br /&gt;
        p_priv = &amp;lt;optimized out&amp;gt;&lt;br /&gt;
#4  0x5e06dd9c in var_SetFloat (f=1.41421354, psz_name=0x5ea2fcb8 &amp;quot;rate____sample_backtrace&amp;quot;, p_obj=0x0) at ../../include/vlc_variables.h:262&lt;br /&gt;
        val = &amp;lt;optimized out&amp;gt;&lt;br /&gt;
#5  libvlc_media_player_set_rate (p_mi=0x0, rate=1.41421354) at ../../lib/media_player.c:1252&lt;br /&gt;
        p_input_thread = &amp;lt;optimized out&amp;gt;&lt;br /&gt;
#6  0x5de7bd18 in Java_org_videolan_vlc_LibVLC_setRate (env=0x41cf0470, thiz=0x8ab00021, rate=1.41421354) at jni/libvlcjni.c:678&lt;br /&gt;
        mp = 0x0&lt;br /&gt;
#7  0x4076de34 in ?? ()&lt;br /&gt;
No symbol table info available.&lt;br /&gt;
#8  0x4076de34 in ?? ()&lt;br /&gt;
No symbol table info available.&lt;br /&gt;
Backtrace stopped: previous frame identical to this frame (corrupt stack?)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Troubleshooting ==&lt;br /&gt;
=== Outdated Awk ===&lt;br /&gt;
If you receive the error message while building:&lt;br /&gt;
&lt;br /&gt;
 Android NDK: Host &#039;awk&#039; tool is outdated. Please define HOST_AWK to point to Gawk or Nawk !    &lt;br /&gt;
&lt;br /&gt;
The prebuilt version of Awk that comes with the Android NDK is outdated. Defining HOST_AWK in your environment does nothing as the system still tries to just the one that comes with the Android NDK. To get around this issue, simply rename or delete the Awk binary that comes with the Android NDK. For example to move it:&lt;br /&gt;
&lt;br /&gt;
 mv $ANDROID_NDK/prebuilt/linux-x86/bin/awk $ANDROID_NDK/prebuilt/linux-x86/bin/awk.old&lt;br /&gt;
&lt;br /&gt;
=== Can&#039;t find Ant ===&lt;br /&gt;
If you&#039;re new to Ant, please be aware that some Linux distributions don&#039;t install it in the usual spot as with other programs. Try checking to see if the directory /usr/share/java/apache-ant/bin exists and add it to your path.&lt;br /&gt;
&lt;br /&gt;
===Outdated autotools-dev===&lt;br /&gt;
If you get the following error message you may have have an outdated version of autotools-dev:&lt;br /&gt;
  Invalid configuration `arm-linux-androideabi&#039;: system `androideabi&#039; not recognized&lt;br /&gt;
You may first want to check if your distribution has any available updates for this package.  Alternatively, you can manually update your config.guess and config.sub files from here: [http://git.savannah.gnu.org/gitweb/?p=config.git;a=tree].  These files are typically located in /usr/share/misc on Debian based distributions.&lt;br /&gt;
&lt;br /&gt;
===autoreconf: automake failed with exit status: 1===&lt;br /&gt;
 automake: warnings are treated as errors&lt;br /&gt;
 configure.ac:41: warning: The &#039;AM_PROG_MKDIR_P&#039; macro is deprecated, and will soon be removed.&lt;br /&gt;
 configure.ac:41: You should use the Autoconf-provided &#039;AC_PROG_MKDIR_P&#039; macro instead,&lt;br /&gt;
 configure.ac:41: and use &#039;$(MKDIR_P)&#039; instead of &#039;$(mkdir_p)&#039;in your Makefile.am files.&lt;br /&gt;
&lt;br /&gt;
If you are using Automake 1.13 or higher, you must remove -Werror from vlc/contrib/android/gnutls/configure.ac to continue. (First reported in [http://forum.videolan.org/viewtopic.php?f=35&amp;amp;t=108927])&lt;br /&gt;
&lt;br /&gt;
===autoreconf: automake failed with exit status: 1 ===&lt;br /&gt;
 make: *** [dvdnav] Error 1&lt;br /&gt;
 ...&lt;br /&gt;
 ... error: possibly undefined macro: AM_PROG_LIBTOOL&lt;br /&gt;
&lt;br /&gt;
This error may occur when compiling with an older Linux distribution, such as Ubuntu 12.04, that doesn&#039;t meet bootstrap prerequisites. As of 2014-08-09, the master branch for vlc-ports/android.git [http://git.videolan.org/?p=vlc-ports/android.git;a=summary] lacks patch 5199 [https://patches.videolan.org/patch/5199/]. Without the patch, compile.sh builds out dated automake and autoconf that may not access libtool despite presence of a current libtool binary amongst supporting tools and a similar or more recent binary present as part of the OS.&lt;br /&gt;
&lt;br /&gt;
To work around this error, patch the master branch or update the prerequisites. For Ubuntu 12.04, upgrade autoconf, automake, and cmake as dictated by vlc/extras/tools/bootstrap.&lt;br /&gt;
&lt;br /&gt;
===Can&#039;t run aapt or adb on Linux 64-bit===&lt;br /&gt;
You must install the 32-bit libraries of the following libraries, as the precompiled Google binaries depend on them: &#039;&#039;libc6&#039;&#039;, &#039;&#039;libstdc++6&#039;&#039;, and &#039;&#039;zlib&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
New versions of Debian and/or Ubuntu require you to install i386 versions of packages:&lt;br /&gt;
 sudo dpkg --add-architecture i386&lt;br /&gt;
 sudo apt-get update&lt;br /&gt;
 sudo apt-get install zlib1g:i386 libstdc++6:i386 libc6:i386&lt;br /&gt;
&lt;br /&gt;
If you are under &#039;&#039;old versions&#039;&#039; of Ubuntu, install ia32-libs can help you solve this issue.&lt;br /&gt;
 sudo apt-get install ia32-libs&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
* [[Android Report bugs]] - Bug reporting guide for VLC-Android.&lt;br /&gt;
&lt;br /&gt;
[[Category:Building]] [[Category:Android]]&lt;/div&gt;</summary>
		<author><name>Dekans</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=AndroidCompile&amp;diff=30531</id>
		<title>AndroidCompile</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=AndroidCompile&amp;diff=30531"/>
		<updated>2015-12-07T12:48:18Z</updated>

		<summary type="html">&lt;p&gt;Dekans: Update git repo url&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page is an introduction to the compilation of &#039;&#039;&#039;VLC for Android&#039;&#039;&#039; on Linux. &lt;br /&gt;
&lt;br /&gt;
==Android Studio, SDK and NDK installation==&lt;br /&gt;
&lt;br /&gt;
=== Requirements  ===&lt;br /&gt;
* You &#039;&#039;&#039;MUST&#039;&#039;&#039; build on Linux (or OSX if you know what you are doing).&lt;br /&gt;
* The following packages &#039;&#039;&#039;MUST&#039;&#039;&#039; must be installed:&lt;br /&gt;
** the GNU autotools: &#039;&#039;autoconf&#039;&#039;, &#039;&#039;libtool&#039;&#039;, &#039;&#039;automake&#039;&#039; and &#039;&#039;make&#039;&#039; (a.k.a. &#039;&#039;gmake&#039;&#039;)&lt;br /&gt;
** ...and their dependencies: &#039;&#039;m4&#039;&#039; and &#039;&#039;gawk&#039;&#039;, &#039;&#039;mawk&#039;&#039; or &#039;&#039;nawk&#039;&#039;,&lt;br /&gt;
** the GNU C and C++ compilers a.k.a. &#039;&#039;gcc&#039;&#039; and &#039;&#039;g++&#039;&#039;,&lt;br /&gt;
** some GNU build utilities: &#039;&#039;pkg-config&#039;&#039; and &#039;&#039;patch&#039;&#039;,&lt;br /&gt;
** the following other build utilities: &#039;&#039;Apache Ant&#039;&#039; (or &#039;&#039;Ant&#039;&#039;), &#039;&#039;cmake&#039;&#039;, &#039;&#039;protobuf&#039;&#039;, &#039;&#039;ragel&#039;&#039;,&lt;br /&gt;
** the Subversion and Git version control systems&lt;br /&gt;
** &#039;&#039;unzip&#039;&#039; and either &#039;&#039;curl&#039;&#039; or &#039;&#039;wget&#039;&#039; for retreiving sources.&lt;br /&gt;
* Very recent versions of some of those tools may be required. At the time of writing, notably gettext 0.19.3 or later is required.&lt;br /&gt;
* If any of the above is missing, expect the build to fail at some point.&lt;br /&gt;
* If targeting an Android-x86 device, &#039;&#039;yasm&#039;&#039; must be installed too.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color: #ff0000&amp;quot;&amp;gt;&#039;&#039;&#039;64-bit users&#039;&#039;&#039;&amp;lt;/span&amp;gt;: You must install these 32-bit libs as specified here: [[AndroidCompile#Can.27t_run_aapt_or_adb_on_Linux_64-bit]]&lt;br /&gt;
&lt;br /&gt;
==== Example on Ubuntu ====&lt;br /&gt;
Install the packages as follow:&lt;br /&gt;
 sudo apt-get install automake ant autopoint cmake build-essential libtool \&lt;br /&gt;
      patch pkg-config protobuf-compiler ragel subversion unzip git&lt;br /&gt;
&lt;br /&gt;
Note : VLC requires gettext version 0.19.3, but Ubuntu version &#039;&#039;&#039;15.10 (Wily Werewolf)&#039;&#039;&#039; provides version 0.19.2&lt;br /&gt;
&lt;br /&gt;
To build VLC with this release, either build your own gettext from sources, or &lt;br /&gt;
edit vlc/contrib/contrib-tizen-arm-linux-gnueabi/libgpg-error/configure.ac, line 158 and change version 0.19.3 to version 0.19.2&lt;br /&gt;
&lt;br /&gt;
=== SDK &amp;amp; Android Studio ===&lt;br /&gt;
# Go to [http://developer.android.com/sdk/index.html Android SDK page].&lt;br /&gt;
# Follow instructions to install latest version of Android SDK.&lt;br /&gt;
# Android Studio is recommended, but not mandatory!&lt;br /&gt;
&lt;br /&gt;
You can have [http://developer.android.com/sdk/installing.html more details], if needed.&lt;br /&gt;
&lt;br /&gt;
===Android NDK===&lt;br /&gt;
# Check that the SDK installation is correct. &lt;br /&gt;
# Go to the [http://developer.android.com/sdk/ndk/index.html Android NDK page] and download the &#039;&#039;&#039;NDK r10e&#039;&#039;&#039; for Linux. &lt;br /&gt;
# Decompress it to install&lt;br /&gt;
&lt;br /&gt;
== Environment setup  ==&lt;br /&gt;
Set &#039;&#039;&#039;$ANDROID_SDK&#039;&#039;&#039; to point to your Android SDK directory &lt;br /&gt;
&lt;br /&gt;
 export ANDROID_SDK=/path/to/android-sdk&lt;br /&gt;
&lt;br /&gt;
Set &#039;&#039;&#039;$ANDROID_NDK&#039;&#039;&#039; to point to your Android NDK directory &lt;br /&gt;
&lt;br /&gt;
 export ANDROID_NDK=/path/to/android-ndk&lt;br /&gt;
&lt;br /&gt;
Add some useful binaries to your &#039;&#039;&#039;$PATH&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
 export PATH=$PATH:$ANDROID_SDK/platform-tools:$ANDROID_SDK/tools&lt;br /&gt;
&lt;br /&gt;
== Building ==&lt;br /&gt;
=== Get VLC Source ===&lt;br /&gt;
Clone the source from the VLC git!&lt;br /&gt;
&lt;br /&gt;
In your &#039;&#039;android&#039;&#039; source folder, run: &lt;br /&gt;
&lt;br /&gt;
 git clone git://code.videolan.org/videolan/vlc-android.git&lt;br /&gt;
&lt;br /&gt;
==== Setup Gradle build system ====&lt;br /&gt;
&lt;br /&gt;
Just run &#039;&#039;&#039;compile.sh&#039;&#039;&#039; once to set up gradle build system.&lt;br /&gt;
&lt;br /&gt;
It should automatically populate mandatory local.properties and gradle.properties files with:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;local.properties&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 sdk.dir=&amp;lt;SDK path from $ANDROID_SDK&amp;gt;&lt;br /&gt;
 ndk.dir=&amp;lt;NDK path from $ANDROID_NDK&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;gradle.properties&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 keyStoreFile=/home/&#039;&#039;user&#039;&#039;/.android/debug.keystore&lt;br /&gt;
 storealias=androiddebugkey&lt;br /&gt;
 storepwd=android&lt;br /&gt;
&lt;br /&gt;
This sets up gradle to build with correct SDK/NDK and sign builds with your personal debug key.&lt;br /&gt;
&lt;br /&gt;
Now you are able to build from Android Studio with &#039;&#039;&#039;Run&#039;&#039;&#039; command&lt;br /&gt;
&lt;br /&gt;
=== Devices ===&lt;br /&gt;
&lt;br /&gt;
Find the ABI for the target device.&lt;br /&gt;
&lt;br /&gt;
* For a normal (2012-2015 consumer phone or tablet) device (e.g. Cortex-A8 or Cortex-A9)&lt;br /&gt;
 &amp;lt;code&amp;gt;armeabi-v7a&amp;lt;/code&amp;gt;&lt;br /&gt;
* For a Tegra2 device (no [[wikipedia:ARM_architecture#Advanced_SIMD_.28NEON.29|NEON]])&lt;br /&gt;
 &amp;lt;code&amp;gt;armeabi-v7a&amp;lt;/code&amp;gt;&lt;br /&gt;
* For an ARMv6 device&lt;br /&gt;
 &amp;lt;code&amp;gt;armeabi&amp;lt;/code&amp;gt;&lt;br /&gt;
* For an ARMv6 device that does not support FPU&lt;br /&gt;
 &amp;lt;code&amp;gt;armeabi-nofpu&amp;lt;/code&amp;gt;&lt;br /&gt;
* For an ARMv5 device or the Android Emulator&lt;br /&gt;
 &amp;lt;code&amp;gt;armeabi-v5&amp;lt;/code&amp;gt;&lt;br /&gt;
* For a x86 device (e.g. Android-x86, Google TV, Logitech TV, Android x86 smartphones, etc)&lt;br /&gt;
 &amp;lt;code&amp;gt;x86&amp;lt;/code&amp;gt;&lt;br /&gt;
* For a MIPS device (i.e. Ainol Novo tablets):&lt;br /&gt;
 &amp;lt;code&amp;gt;mips&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This value must be passed to the compile.sh script&lt;br /&gt;
&lt;br /&gt;
==== Compile ====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Read&#039;&#039;&#039; compile.sh first, as it contains some very useful and important information. Then run it:&lt;br /&gt;
 sh compile.sh -a &amp;lt;ABI&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039; At this point, you will get an auto-generated debug APK in the vlc-android/build/outputs/apk folder, signed with a debug key.&lt;br /&gt;
&lt;br /&gt;
In order to build a non-debug (release) package:&lt;br /&gt;
 sh compile.sh release&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039; At this point, you will get an release APK in the same folder.&lt;br /&gt;
&lt;br /&gt;
=== Run ===&lt;br /&gt;
Run it and enjoy!&lt;br /&gt;
&lt;br /&gt;
=== Troubleshooting ===&lt;br /&gt;
==== Compilation error on Dependencies ====&lt;br /&gt;
Sometimes, especially when gradle dependencies have been upgraded, the &#039;&#039;compile.sh&#039;&#039; will fail to refetch dependencies. Just close Android Studio and re-run the script to fix this issue.&lt;br /&gt;
&lt;br /&gt;
== Debugging ==&lt;br /&gt;
Here are some helpful links if you wish to debug VLC on Android:&lt;br /&gt;
* [http://developer.android.com/guide/developing/debugging/ddms.html DDMS] &lt;br /&gt;
* [http://developer.android.com/guide/developing/tools/logcat.html Logcat]&lt;br /&gt;
&lt;br /&gt;
===Native debugging===&lt;br /&gt;
If you run VLC Android and you get a crash that looks something like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
I/DEBUG   (  958): *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***&lt;br /&gt;
I/DEBUG   (  958): Build fingerprint: &#039;MOTO/MBTCA/sesame/XT300:2.1-update1/SESLA_U3_01.71.0/110110:user/release-keys&#039;&lt;br /&gt;
I/DEBUG   (  958): pid: 1733, tid: 1733 &amp;gt;&amp;gt;&amp;gt; org.videolan.vlc &amp;lt;&amp;lt;&amp;lt;&lt;br /&gt;
I/DEBUG   (  958): signal 11 (SIGSEGV), fault addr 4237be3c&lt;br /&gt;
I/DEBUG   (  958):  r0 423640a0  r1 7ece77ac  r2 42bccdac  r3 4237be38&lt;br /&gt;
I/DEBUG   (  958):  r4 00000000  r5 42bccdac  r6 002ed088  r7 002ed018&lt;br /&gt;
I/DEBUG   (  958):  r8 7ece78e8  r9 2bafa844  10 0000000e  fp 7ece794c&lt;br /&gt;
I/DEBUG   (  958):  ip 00002ba0  sp 7ece7784  lr 423652e4  pc 4237be3c  cpsr 60000010&lt;br /&gt;
I/DEBUG   (  958):          #00  pc 0037be3c  /data/data/org.videolan.vlc/lib/libvlcjni.so&lt;br /&gt;
I/DEBUG   (  958):          #01  lr 423652e4  /data/data/org.videolan.vlc/lib/libvlcjni.so&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You have a &#039;&#039;&#039;native crash&#039;&#039;&#039;. To debug it, you need to have compiled VLC as above and installed it on your device. Once your compiled VLC build is on your device, you can find the &#039;&#039;&#039;backtrace&#039;&#039;&#039; as follows:&lt;br /&gt;
&lt;br /&gt;
# Make sure you are in the directory that you checked out VLC-Android in.&lt;br /&gt;
# Migrate the libvlc folders. (Do this every time the code is recompiled)&lt;br /&gt;
## cp -r libvlc/jni vlc-android&lt;br /&gt;
## cp -r libvlc/libs vlc-android&lt;br /&gt;
## cp -r libvlc/obj vlc-android&lt;br /&gt;
## (This is because the libvlc and VLC for Android folders were split yet the debugger needs the object files from both.)&lt;br /&gt;
# cd vlc-android&lt;br /&gt;
# $ANDROID_NDK/ndk-gdb --verbose --force --start&lt;br /&gt;
At this point, lots of stuff will appear:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Android NDK installation path: /opt/android-ndk-r8c&lt;br /&gt;
Using default adb command: /opt/android-sdk-linux_x86/platform-tools/adb&lt;br /&gt;
ADB version found: Android Debug Bridge version 1.0.29&lt;br /&gt;
Using ADB flags: &lt;br /&gt;
Using auto-detected project path: .&lt;br /&gt;
Found package name: org.videolan.vlc&lt;br /&gt;
...bunch of stuff skipped...&lt;br /&gt;
GNU gdb (GDB) 7.3.1-gg2&lt;br /&gt;
Copyright (C) 2011 Free Software Foundation, Inc.&lt;br /&gt;
License GPLv3+: GNU GPL version 3 or later &amp;lt;http://gnu.org/licenses/gpl.html&amp;gt;&lt;br /&gt;
This is free software: you are free to change and redistribute it.&lt;br /&gt;
There is NO WARRANTY, to the extent permitted by law.  Type &amp;quot;show copying&amp;quot;&lt;br /&gt;
and &amp;quot;show warranty&amp;quot; for details.&lt;br /&gt;
This GDB was configured as &amp;quot;--host=x86_64-linux-gnu --target=arm-linux-android&amp;quot;.&lt;br /&gt;
For bug reporting instructions, please see:&lt;br /&gt;
&amp;lt;http://www.gnu.org/software/gdb/bugs/&amp;gt;.&lt;br /&gt;
Remote debugging from host 0.0.0.0&lt;br /&gt;
...bunch of stuff skipped...&lt;br /&gt;
libthread_db:td_ta_new: Victory: We can debug theads!&lt;br /&gt;
warning: Breakpoint address adjusted from 0x400deaa5 to 0x400deaa4.&lt;br /&gt;
0x40107a40 in epoll_wait () from /media/data/vlc_android/vlc-android/obj/local/armeabi/libc.so&lt;br /&gt;
(gdb)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;ol start=&amp;quot;4&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;At this point, type in &amp;quot;continue&amp;quot; and press Enter.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Perform the actions you did to make it crash. It will spit out something like this:&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Program received signal SIGSEGV, Segmentation fault.&lt;br /&gt;
0x401120ae in ?? () from /media/data/vlc_android/vlc-android/obj/local/armeabi/libc.so&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;ol start=&amp;quot;6&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Now, just type in &amp;quot;&#039;&#039;&#039;bt full&#039;&#039;&#039;&amp;quot; (excluding the quotation marks) and press Enter. That is your backtrace that you should give to the developers when they ask for it (possibly on a [http://paste.kde.org/ pastebin], too).&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
(gdb) bt full&lt;br /&gt;
#0  0x401120ae in ?? () from /media/data/vlc_android/vlc-android/obj/local/armeabi/libc.so&lt;br /&gt;
No symbol table info available.&lt;br /&gt;
#1  0x40107bd8 in abort () from /media/data/vlc_android/vlc-android/obj/local/armeabi/libc.so&lt;br /&gt;
No symbol table info available.&lt;br /&gt;
#2  0x40118e6a in __assert2 () from /media/data/vlc_android/vlc-android/obj/local/armeabi/libc.so&lt;br /&gt;
No symbol table info available.&lt;br /&gt;
#3  0x5e0cdfdc in var_SetChecked (p_this=0x40134b94, psz_name=0x5ea2fcb8 &amp;quot;rate&amp;quot;, expected_type=80, val=...) at ../../src/misc/variables.c:711&lt;br /&gt;
        i_ret = 0&lt;br /&gt;
        p_var = &amp;lt;optimized out&amp;gt;&lt;br /&gt;
        oldval = {i_int = 4742037487051810480, b_bool = 176, f_float = 2.27765068e+14, psz_string = 0x574f26b0 &amp;quot;X\270|B\001\001&amp;quot;, p_address = 0x574f26b0, &lt;br /&gt;
          p_object = 0x574f26b0, p_list = 0x574f26b0, i_time = 4742037487051810480, coords = {x = 1464805040, y = 1104091640}}&lt;br /&gt;
        __func__ = &amp;quot;var_SetChecked&amp;quot;&lt;br /&gt;
        p_priv = &amp;lt;optimized out&amp;gt;&lt;br /&gt;
#4  0x5e06dd9c in var_SetFloat (f=1.41421354, psz_name=0x5ea2fcb8 &amp;quot;rate____sample_backtrace&amp;quot;, p_obj=0x0) at ../../include/vlc_variables.h:262&lt;br /&gt;
        val = &amp;lt;optimized out&amp;gt;&lt;br /&gt;
#5  libvlc_media_player_set_rate (p_mi=0x0, rate=1.41421354) at ../../lib/media_player.c:1252&lt;br /&gt;
        p_input_thread = &amp;lt;optimized out&amp;gt;&lt;br /&gt;
#6  0x5de7bd18 in Java_org_videolan_vlc_LibVLC_setRate (env=0x41cf0470, thiz=0x8ab00021, rate=1.41421354) at jni/libvlcjni.c:678&lt;br /&gt;
        mp = 0x0&lt;br /&gt;
#7  0x4076de34 in ?? ()&lt;br /&gt;
No symbol table info available.&lt;br /&gt;
#8  0x4076de34 in ?? ()&lt;br /&gt;
No symbol table info available.&lt;br /&gt;
Backtrace stopped: previous frame identical to this frame (corrupt stack?)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Troubleshooting ==&lt;br /&gt;
=== Outdated Awk ===&lt;br /&gt;
If you receive the error message while building:&lt;br /&gt;
&lt;br /&gt;
 Android NDK: Host &#039;awk&#039; tool is outdated. Please define HOST_AWK to point to Gawk or Nawk !    &lt;br /&gt;
&lt;br /&gt;
The prebuilt version of Awk that comes with the Android NDK is outdated. Defining HOST_AWK in your environment does nothing as the system still tries to just the one that comes with the Android NDK. To get around this issue, simply rename or delete the Awk binary that comes with the Android NDK. For example to move it:&lt;br /&gt;
&lt;br /&gt;
 mv $ANDROID_NDK/prebuilt/linux-x86/bin/awk $ANDROID_NDK/prebuilt/linux-x86/bin/awk.old&lt;br /&gt;
&lt;br /&gt;
=== Can&#039;t find Ant ===&lt;br /&gt;
If you&#039;re new to Ant, please be aware that some Linux distributions don&#039;t install it in the usual spot as with other programs. Try checking to see if the directory /usr/share/java/apache-ant/bin exists and add it to your path.&lt;br /&gt;
&lt;br /&gt;
===Outdated autotools-dev===&lt;br /&gt;
If you get the following error message you may have have an outdated version of autotools-dev:&lt;br /&gt;
  Invalid configuration `arm-linux-androideabi&#039;: system `androideabi&#039; not recognized&lt;br /&gt;
You may first want to check if your distribution has any available updates for this package.  Alternatively, you can manually update your config.guess and config.sub files from here: [http://git.savannah.gnu.org/gitweb/?p=config.git;a=tree].  These files are typically located in /usr/share/misc on Debian based distributions.&lt;br /&gt;
&lt;br /&gt;
===autoreconf: automake failed with exit status: 1===&lt;br /&gt;
 automake: warnings are treated as errors&lt;br /&gt;
 configure.ac:41: warning: The &#039;AM_PROG_MKDIR_P&#039; macro is deprecated, and will soon be removed.&lt;br /&gt;
 configure.ac:41: You should use the Autoconf-provided &#039;AC_PROG_MKDIR_P&#039; macro instead,&lt;br /&gt;
 configure.ac:41: and use &#039;$(MKDIR_P)&#039; instead of &#039;$(mkdir_p)&#039;in your Makefile.am files.&lt;br /&gt;
&lt;br /&gt;
If you are using Automake 1.13 or higher, you must remove -Werror from vlc/contrib/android/gnutls/configure.ac to continue. (First reported in [http://forum.videolan.org/viewtopic.php?f=35&amp;amp;t=108927])&lt;br /&gt;
&lt;br /&gt;
===autoreconf: automake failed with exit status: 1 ===&lt;br /&gt;
 make: *** [dvdnav] Error 1&lt;br /&gt;
 ...&lt;br /&gt;
 ... error: possibly undefined macro: AM_PROG_LIBTOOL&lt;br /&gt;
&lt;br /&gt;
This error may occur when compiling with an older Linux distribution, such as Ubuntu 12.04, that doesn&#039;t meet bootstrap prerequisites. As of 2014-08-09, the master branch for vlc-ports/android.git [http://git.videolan.org/?p=vlc-ports/android.git;a=summary] lacks patch 5199 [https://patches.videolan.org/patch/5199/]. Without the patch, compile.sh builds out dated automake and autoconf that may not access libtool despite presence of a current libtool binary amongst supporting tools and a similar or more recent binary present as part of the OS.&lt;br /&gt;
&lt;br /&gt;
To work around this error, patch the master branch or update the prerequisites. For Ubuntu 12.04, upgrade autoconf, automake, and cmake as dictated by vlc/extras/tools/bootstrap.&lt;br /&gt;
&lt;br /&gt;
===Can&#039;t run aapt or adb on Linux 64-bit===&lt;br /&gt;
You must install the 32-bit libraries of the following libraries, as the precompiled Google binaries depend on them: &#039;&#039;libc6&#039;&#039;, &#039;&#039;libstdc++6&#039;&#039;, and &#039;&#039;zlib&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
New versions of Debian and/or Ubuntu require you to install i386 versions of packages:&lt;br /&gt;
 sudo dpkg --add-architecture i386&lt;br /&gt;
 sudo apt-get update&lt;br /&gt;
 sudo apt-get install zlib1g:i386 libstdc++6:i386 libc6:i386&lt;br /&gt;
&lt;br /&gt;
If you are under &#039;&#039;old versions&#039;&#039; of Ubuntu, install ia32-libs can help you solve this issue.&lt;br /&gt;
 sudo apt-get install ia32-libs&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
* [[Android Report bugs]] - Bug reporting guide for VLC-Android.&lt;br /&gt;
&lt;br /&gt;
[[Category:Building]] [[Category:Android]]&lt;/div&gt;</summary>
		<author><name>Dekans</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=AndroidCompile&amp;diff=30290</id>
		<title>AndroidCompile</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=AndroidCompile&amp;diff=30290"/>
		<updated>2015-09-11T11:38:35Z</updated>

		<summary type="html">&lt;p&gt;Dekans: /* Example on Ubuntu */&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;This page is an introduction to the compilation of &#039;&#039;&#039;VLC for Android&#039;&#039;&#039; on Linux. &lt;br /&gt;
&lt;br /&gt;
==Android Studio, SDK and NDK installation==&lt;br /&gt;
&lt;br /&gt;
=== Requirements  ===&lt;br /&gt;
* You &#039;&#039;&#039;MUST&#039;&#039;&#039; build on Linux (or OSX if you know what you are doing).&lt;br /&gt;
* The following packages &#039;&#039;&#039;MUST&#039;&#039;&#039; must be installed:&lt;br /&gt;
** the GNU autotools: &#039;&#039;autoconf&#039;&#039;, &#039;&#039;libtool&#039;&#039;, &#039;&#039;automake&#039;&#039; and &#039;&#039;make&#039;&#039; (a.k.a. &#039;&#039;gmake&#039;&#039;)&lt;br /&gt;
** ...and their dependencies: &#039;&#039;m4&#039;&#039; and &#039;&#039;gawk&#039;&#039;, &#039;&#039;mawk&#039;&#039; or &#039;&#039;nawk&#039;&#039;,&lt;br /&gt;
** the GNU C and C++ compilers a.k.a. &#039;&#039;gcc&#039;&#039; and &#039;&#039;g++&#039;&#039;,&lt;br /&gt;
** some GNU build utilities: &#039;&#039;pkg-config&#039;&#039; and &#039;&#039;patch&#039;&#039;,&lt;br /&gt;
** the following other build utilities: &#039;&#039;Apache Ant&#039;&#039; (or &#039;&#039;Ant&#039;&#039;), &#039;&#039;cmake&#039;&#039;, &#039;&#039;protobuf&#039;&#039;, &#039;&#039;ragel&#039;&#039;,&lt;br /&gt;
** the Subversion and Git version control systems&lt;br /&gt;
** &#039;&#039;unzip&#039;&#039; and either &#039;&#039;curl&#039;&#039; or &#039;&#039;wget&#039;&#039; for retreiving sources.&lt;br /&gt;
* Very recent versions of some of those tools may be required. At the time of writing, notably gettext 0.19.3 or later is required.&lt;br /&gt;
* If any of the above is missing, expect the build to fail at some point.&lt;br /&gt;
* If targeting an Android-x86 device, &#039;&#039;yasm&#039;&#039; must be installed too.&lt;br /&gt;
&lt;br /&gt;
&amp;lt;span style=&amp;quot;color: #ff0000&amp;quot;&amp;gt;&#039;&#039;&#039;64-bit users&#039;&#039;&#039;&amp;lt;/span&amp;gt;: You must install these 32-bit libs as specified here: [[AndroidCompile#Can.27t_run_aapt_or_adb_on_Linux_64-bit]]&lt;br /&gt;
&lt;br /&gt;
==== Example on Ubuntu ====&lt;br /&gt;
Install the packages as follow:&lt;br /&gt;
 sudo apt-get install automake ant autopoint cmake build-essential libtool \&lt;br /&gt;
      patch pkg-config protobuf-compiler ragel subversion unzip git&lt;br /&gt;
&lt;br /&gt;
Note : VLC requires gettext version 0.19.3, but Ubuntu version &#039;&#039;&#039;15.10 (Wily Werewolf)&#039;&#039;&#039; provides version 0.19.2&lt;br /&gt;
&lt;br /&gt;
To build VLC with this release, either build your own gettext from sources, or &lt;br /&gt;
edit vlc/contrib/contrib-tizen-arm-linux-gnueabi/libgpg-error/configure.ac, line 158 and change version 0.19.3 to version 0.19.2&lt;br /&gt;
&lt;br /&gt;
=== SDK &amp;amp; Android Studio ===&lt;br /&gt;
# Go to [http://developer.android.com/sdk/index.html Android SDK page].&lt;br /&gt;
# Follow instructions to install latest version of Android SDK.&lt;br /&gt;
# Android Studio is recommended, but not mandatory!&lt;br /&gt;
&lt;br /&gt;
You can have [http://developer.android.com/sdk/installing.html more details], if needed.&lt;br /&gt;
&lt;br /&gt;
===Android NDK===&lt;br /&gt;
# Check that the SDK installation is correct. &lt;br /&gt;
# Go to the [http://developer.android.com/sdk/ndk/index.html Android NDK page] and download the &#039;&#039;&#039;NDK r10e&#039;&#039;&#039; for Linux. &lt;br /&gt;
# Decompress it to install&lt;br /&gt;
&lt;br /&gt;
== Environment setup  ==&lt;br /&gt;
Set &#039;&#039;&#039;$ANDROID_SDK&#039;&#039;&#039; to point to your Android SDK directory &lt;br /&gt;
&lt;br /&gt;
 export ANDROID_SDK=/path/to/android-sdk&lt;br /&gt;
&lt;br /&gt;
Set &#039;&#039;&#039;$ANDROID_NDK&#039;&#039;&#039; to point to your Android NDK directory &lt;br /&gt;
&lt;br /&gt;
 export ANDROID_NDK=/path/to/android-ndk&lt;br /&gt;
&lt;br /&gt;
Add some useful binaries to your &#039;&#039;&#039;$PATH&#039;&#039;&#039; &lt;br /&gt;
&lt;br /&gt;
 export PATH=$PATH:$ANDROID_SDK/platform-tools:$ANDROID_SDK/tools&lt;br /&gt;
&lt;br /&gt;
== Building ==&lt;br /&gt;
=== Get VLC Source ===&lt;br /&gt;
Clone the source from the VLC git!&lt;br /&gt;
&lt;br /&gt;
In your &#039;&#039;android&#039;&#039; source folder, run: &lt;br /&gt;
&lt;br /&gt;
 git clone git://git.videolan.org/vlc-ports/android.git&lt;br /&gt;
&lt;br /&gt;
==== Setup Gradle build system ====&lt;br /&gt;
&lt;br /&gt;
Just run &#039;&#039;&#039;compile.sh&#039;&#039;&#039; once to set up gradle build system.&lt;br /&gt;
&lt;br /&gt;
It should automatically populate mandatory local.properties and gradle.properties files with:&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;local.properties&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 sdk.dir=&amp;lt;SDK path from $ANDROID_SDK&amp;gt;&lt;br /&gt;
 ndk.dir=&amp;lt;NDK path from $ANDROID_NDK&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;gradle.properties&#039;&#039;&lt;br /&gt;
&lt;br /&gt;
 keyStoreFile=/home/&#039;&#039;user&#039;&#039;/.android/debug.keystore&lt;br /&gt;
 storealias=androiddebugkey&lt;br /&gt;
 storepwd=android&lt;br /&gt;
&lt;br /&gt;
This sets up gradle to build with correct SDK/NDK and sign builds with your personal debug key.&lt;br /&gt;
&lt;br /&gt;
Now you are able to build from Android Studio with &#039;&#039;&#039;Run&#039;&#039;&#039; command&lt;br /&gt;
&lt;br /&gt;
=== Devices ===&lt;br /&gt;
&lt;br /&gt;
Find the ABI for the target device.&lt;br /&gt;
&lt;br /&gt;
* For a normal (2012-2015 consumer phone or tablet) device (e.g. Cortex-A8 or Cortex-A9)&lt;br /&gt;
 &amp;lt;code&amp;gt;armeabi-v7a&amp;lt;/code&amp;gt;&lt;br /&gt;
* For a Tegra2 device (no [[wikipedia:ARM_architecture#Advanced_SIMD_.28NEON.29|NEON]])&lt;br /&gt;
 &amp;lt;code&amp;gt;armeabi-v7a&amp;lt;/code&amp;gt;&lt;br /&gt;
* For an ARMv6 device&lt;br /&gt;
 &amp;lt;code&amp;gt;armeabi&amp;lt;/code&amp;gt;&lt;br /&gt;
* For an ARMv6 device that does not support FPU&lt;br /&gt;
 &amp;lt;code&amp;gt;armeabi-nofpu&amp;lt;/code&amp;gt;&lt;br /&gt;
* For an ARMv5 device or the Android Emulator&lt;br /&gt;
 &amp;lt;code&amp;gt;armeabi-v5&amp;lt;/code&amp;gt;&lt;br /&gt;
* For a x86 device (e.g. Android-x86, Google TV, Logitech TV, Android x86 smartphones, etc)&lt;br /&gt;
 &amp;lt;code&amp;gt;x86&amp;lt;/code&amp;gt;&lt;br /&gt;
* For a MIPS device (i.e. Ainol Novo tablets):&lt;br /&gt;
 &amp;lt;code&amp;gt;mips&amp;lt;/code&amp;gt;&lt;br /&gt;
&lt;br /&gt;
This value must be passed to the compile.sh script&lt;br /&gt;
&lt;br /&gt;
==== Compile ====&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Read&#039;&#039;&#039; compile.sh first, as it contains some very useful and important information. Then run it:&lt;br /&gt;
 sh compile.sh -a &amp;lt;ABI&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039; At this point, you will get an auto-generated debug APK in the vlc-android/build/outputs/apk folder, signed with a debug key.&lt;br /&gt;
&lt;br /&gt;
In order to build a non-debug (release) package:&lt;br /&gt;
 sh compile.sh release&lt;br /&gt;
&lt;br /&gt;
&#039;&#039;&#039;Note:&#039;&#039;&#039; At this point, you will get an release APK in the same folder.&lt;br /&gt;
&lt;br /&gt;
=== Run ===&lt;br /&gt;
Run it and enjoy!&lt;br /&gt;
&lt;br /&gt;
=== Troubleshooting ===&lt;br /&gt;
==== Compilation error on Dependencies ====&lt;br /&gt;
Sometimes, especially when gradle dependencies have been upgraded, the &#039;&#039;compile.sh&#039;&#039; will fail to refetch dependencies. Just close Android Studio and re-run the script to fix this issue.&lt;br /&gt;
&lt;br /&gt;
== Debugging ==&lt;br /&gt;
Here are some helpful links if you wish to debug VLC on Android:&lt;br /&gt;
* [http://developer.android.com/guide/developing/debugging/ddms.html DDMS] &lt;br /&gt;
* [http://developer.android.com/guide/developing/tools/logcat.html Logcat]&lt;br /&gt;
&lt;br /&gt;
===Native debugging===&lt;br /&gt;
If you run VLC Android and you get a crash that looks something like this:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
I/DEBUG   (  958): *** *** *** *** *** *** *** *** *** *** *** *** *** *** *** ***&lt;br /&gt;
I/DEBUG   (  958): Build fingerprint: &#039;MOTO/MBTCA/sesame/XT300:2.1-update1/SESLA_U3_01.71.0/110110:user/release-keys&#039;&lt;br /&gt;
I/DEBUG   (  958): pid: 1733, tid: 1733 &amp;gt;&amp;gt;&amp;gt; org.videolan.vlc &amp;lt;&amp;lt;&amp;lt;&lt;br /&gt;
I/DEBUG   (  958): signal 11 (SIGSEGV), fault addr 4237be3c&lt;br /&gt;
I/DEBUG   (  958):  r0 423640a0  r1 7ece77ac  r2 42bccdac  r3 4237be38&lt;br /&gt;
I/DEBUG   (  958):  r4 00000000  r5 42bccdac  r6 002ed088  r7 002ed018&lt;br /&gt;
I/DEBUG   (  958):  r8 7ece78e8  r9 2bafa844  10 0000000e  fp 7ece794c&lt;br /&gt;
I/DEBUG   (  958):  ip 00002ba0  sp 7ece7784  lr 423652e4  pc 4237be3c  cpsr 60000010&lt;br /&gt;
I/DEBUG   (  958):          #00  pc 0037be3c  /data/data/org.videolan.vlc/lib/libvlcjni.so&lt;br /&gt;
I/DEBUG   (  958):          #01  lr 423652e4  /data/data/org.videolan.vlc/lib/libvlcjni.so&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
You have a &#039;&#039;&#039;native crash&#039;&#039;&#039;. To debug it, you need to have compiled VLC as above and installed it on your device. Once your compiled VLC build is on your device, you can find the &#039;&#039;&#039;backtrace&#039;&#039;&#039; as follows:&lt;br /&gt;
&lt;br /&gt;
# Make sure you are in the directory that you checked out VLC-Android in.&lt;br /&gt;
# Migrate the libvlc folders. (Do this every time the code is recompiled)&lt;br /&gt;
## cp -r libvlc/jni vlc-android&lt;br /&gt;
## cp -r libvlc/libs vlc-android&lt;br /&gt;
## cp -r libvlc/obj vlc-android&lt;br /&gt;
## (This is because the libvlc and VLC for Android folders were split yet the debugger needs the object files from both.)&lt;br /&gt;
# cd vlc-android&lt;br /&gt;
# $ANDROID_NDK/ndk-gdb --verbose --force --start&lt;br /&gt;
At this point, lots of stuff will appear:&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Android NDK installation path: /opt/android-ndk-r8c&lt;br /&gt;
Using default adb command: /opt/android-sdk-linux_x86/platform-tools/adb&lt;br /&gt;
ADB version found: Android Debug Bridge version 1.0.29&lt;br /&gt;
Using ADB flags: &lt;br /&gt;
Using auto-detected project path: .&lt;br /&gt;
Found package name: org.videolan.vlc&lt;br /&gt;
...bunch of stuff skipped...&lt;br /&gt;
GNU gdb (GDB) 7.3.1-gg2&lt;br /&gt;
Copyright (C) 2011 Free Software Foundation, Inc.&lt;br /&gt;
License GPLv3+: GNU GPL version 3 or later &amp;lt;http://gnu.org/licenses/gpl.html&amp;gt;&lt;br /&gt;
This is free software: you are free to change and redistribute it.&lt;br /&gt;
There is NO WARRANTY, to the extent permitted by law.  Type &amp;quot;show copying&amp;quot;&lt;br /&gt;
and &amp;quot;show warranty&amp;quot; for details.&lt;br /&gt;
This GDB was configured as &amp;quot;--host=x86_64-linux-gnu --target=arm-linux-android&amp;quot;.&lt;br /&gt;
For bug reporting instructions, please see:&lt;br /&gt;
&amp;lt;http://www.gnu.org/software/gdb/bugs/&amp;gt;.&lt;br /&gt;
Remote debugging from host 0.0.0.0&lt;br /&gt;
...bunch of stuff skipped...&lt;br /&gt;
libthread_db:td_ta_new: Victory: We can debug theads!&lt;br /&gt;
warning: Breakpoint address adjusted from 0x400deaa5 to 0x400deaa4.&lt;br /&gt;
0x40107a40 in epoll_wait () from /media/data/vlc_android/vlc-android/obj/local/armeabi/libc.so&lt;br /&gt;
(gdb)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;ol start=&amp;quot;4&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;At this point, type in &amp;quot;continue&amp;quot; and press Enter.&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Perform the actions you did to make it crash. It will spit out something like this:&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
Program received signal SIGSEGV, Segmentation fault.&lt;br /&gt;
0x401120ae in ?? () from /media/data/vlc_android/vlc-android/obj/local/armeabi/libc.so&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&amp;lt;ol start=&amp;quot;6&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;li&amp;gt;Now, just type in &amp;quot;&#039;&#039;&#039;bt full&#039;&#039;&#039;&amp;quot; (excluding the quotation marks) and press Enter. That is your backtrace that you should give to the developers when they ask for it (possibly on a [http://paste.kde.org/ pastebin], too).&amp;lt;/li&amp;gt;&lt;br /&gt;
&amp;lt;/ol&amp;gt;&lt;br /&gt;
&amp;lt;pre&amp;gt;&lt;br /&gt;
(gdb) bt full&lt;br /&gt;
#0  0x401120ae in ?? () from /media/data/vlc_android/vlc-android/obj/local/armeabi/libc.so&lt;br /&gt;
No symbol table info available.&lt;br /&gt;
#1  0x40107bd8 in abort () from /media/data/vlc_android/vlc-android/obj/local/armeabi/libc.so&lt;br /&gt;
No symbol table info available.&lt;br /&gt;
#2  0x40118e6a in __assert2 () from /media/data/vlc_android/vlc-android/obj/local/armeabi/libc.so&lt;br /&gt;
No symbol table info available.&lt;br /&gt;
#3  0x5e0cdfdc in var_SetChecked (p_this=0x40134b94, psz_name=0x5ea2fcb8 &amp;quot;rate&amp;quot;, expected_type=80, val=...) at ../../src/misc/variables.c:711&lt;br /&gt;
        i_ret = 0&lt;br /&gt;
        p_var = &amp;lt;optimized out&amp;gt;&lt;br /&gt;
        oldval = {i_int = 4742037487051810480, b_bool = 176, f_float = 2.27765068e+14, psz_string = 0x574f26b0 &amp;quot;X\270|B\001\001&amp;quot;, p_address = 0x574f26b0, &lt;br /&gt;
          p_object = 0x574f26b0, p_list = 0x574f26b0, i_time = 4742037487051810480, coords = {x = 1464805040, y = 1104091640}}&lt;br /&gt;
        __func__ = &amp;quot;var_SetChecked&amp;quot;&lt;br /&gt;
        p_priv = &amp;lt;optimized out&amp;gt;&lt;br /&gt;
#4  0x5e06dd9c in var_SetFloat (f=1.41421354, psz_name=0x5ea2fcb8 &amp;quot;rate____sample_backtrace&amp;quot;, p_obj=0x0) at ../../include/vlc_variables.h:262&lt;br /&gt;
        val = &amp;lt;optimized out&amp;gt;&lt;br /&gt;
#5  libvlc_media_player_set_rate (p_mi=0x0, rate=1.41421354) at ../../lib/media_player.c:1252&lt;br /&gt;
        p_input_thread = &amp;lt;optimized out&amp;gt;&lt;br /&gt;
#6  0x5de7bd18 in Java_org_videolan_vlc_LibVLC_setRate (env=0x41cf0470, thiz=0x8ab00021, rate=1.41421354) at jni/libvlcjni.c:678&lt;br /&gt;
        mp = 0x0&lt;br /&gt;
#7  0x4076de34 in ?? ()&lt;br /&gt;
No symbol table info available.&lt;br /&gt;
#8  0x4076de34 in ?? ()&lt;br /&gt;
No symbol table info available.&lt;br /&gt;
Backtrace stopped: previous frame identical to this frame (corrupt stack?)&lt;br /&gt;
&amp;lt;/pre&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Troubleshooting ==&lt;br /&gt;
=== Outdated Awk ===&lt;br /&gt;
If you receive the error message while building:&lt;br /&gt;
&lt;br /&gt;
 Android NDK: Host &#039;awk&#039; tool is outdated. Please define HOST_AWK to point to Gawk or Nawk !    &lt;br /&gt;
&lt;br /&gt;
The prebuilt version of Awk that comes with the Android NDK is outdated. Defining HOST_AWK in your environment does nothing as the system still tries to just the one that comes with the Android NDK. To get around this issue, simply rename or delete the Awk binary that comes with the Android NDK. For example to move it:&lt;br /&gt;
&lt;br /&gt;
 mv $ANDROID_NDK/prebuilt/linux-x86/bin/awk $ANDROID_NDK/prebuilt/linux-x86/bin/awk.old&lt;br /&gt;
&lt;br /&gt;
=== Can&#039;t find Ant ===&lt;br /&gt;
If you&#039;re new to Ant, please be aware that some Linux distributions don&#039;t install it in the usual spot as with other programs. Try checking to see if the directory /usr/share/java/apache-ant/bin exists and add it to your path.&lt;br /&gt;
&lt;br /&gt;
===Outdated autotools-dev===&lt;br /&gt;
If you get the following error message you may have have an outdated version of autotools-dev:&lt;br /&gt;
  Invalid configuration `arm-linux-androideabi&#039;: system `androideabi&#039; not recognized&lt;br /&gt;
You may first want to check if your distribution has any available updates for this package.  Alternatively, you can manually update your config.guess and config.sub files from here: [http://git.savannah.gnu.org/gitweb/?p=config.git;a=tree].  These files are typically located in /usr/share/misc on Debian based distributions.&lt;br /&gt;
&lt;br /&gt;
===autoreconf: automake failed with exit status: 1===&lt;br /&gt;
 automake: warnings are treated as errors&lt;br /&gt;
 configure.ac:41: warning: The &#039;AM_PROG_MKDIR_P&#039; macro is deprecated, and will soon be removed.&lt;br /&gt;
 configure.ac:41: You should use the Autoconf-provided &#039;AC_PROG_MKDIR_P&#039; macro instead,&lt;br /&gt;
 configure.ac:41: and use &#039;$(MKDIR_P)&#039; instead of &#039;$(mkdir_p)&#039;in your Makefile.am files.&lt;br /&gt;
&lt;br /&gt;
If you are using Automake 1.13 or higher, you must remove -Werror from vlc/contrib/android/gnutls/configure.ac to continue. (First reported in [http://forum.videolan.org/viewtopic.php?f=35&amp;amp;t=108927])&lt;br /&gt;
&lt;br /&gt;
===autoreconf: automake failed with exit status: 1 ===&lt;br /&gt;
 make: *** [dvdnav] Error 1&lt;br /&gt;
 ...&lt;br /&gt;
 ... error: possibly undefined macro: AM_PROG_LIBTOOL&lt;br /&gt;
&lt;br /&gt;
This error may occur when compiling with an older Linux distribution, such as Ubuntu 12.04, that doesn&#039;t meet bootstrap prerequisites. As of 2014-08-09, the master branch for vlc-ports/android.git [http://git.videolan.org/?p=vlc-ports/android.git;a=summary] lacks patch 5199 [https://patches.videolan.org/patch/5199/]. Without the patch, compile.sh builds out dated automake and autoconf that may not access libtool despite presence of a current libtool binary amongst supporting tools and a similar or more recent binary present as part of the OS.&lt;br /&gt;
&lt;br /&gt;
To work around this error, patch the master branch or update the prerequisites. For Ubuntu 12.04, upgrade autoconf, automake, and cmake as dictated by vlc/extras/tools/bootstrap.&lt;br /&gt;
&lt;br /&gt;
===Can&#039;t run aapt or adb on Linux 64-bit===&lt;br /&gt;
You must install the 32-bit libraries of the following libraries, as the precompiled Google binaries depend on them: &#039;&#039;libc6&#039;&#039;, &#039;&#039;libstdc++6&#039;&#039;, and &#039;&#039;zlib&#039;&#039;.&lt;br /&gt;
&lt;br /&gt;
New versions of Debian and/or Ubuntu require you to install i386 versions of packages:&lt;br /&gt;
 sudo dpkg --add-architecture i386&lt;br /&gt;
 sudo apt-get update&lt;br /&gt;
 sudo apt-get install zlib1g:i386 libstdc++6:i386 libc6:i386&lt;br /&gt;
&lt;br /&gt;
If you are under &#039;&#039;old versions&#039;&#039; of Ubuntu, install ia32-libs can help you solve this issue.&lt;br /&gt;
 sudo apt-get install ia32-libs&lt;br /&gt;
&lt;br /&gt;
==See also==&lt;br /&gt;
* [[Android Report bugs]] - Bug reporting guide for VLC-Android.&lt;br /&gt;
&lt;br /&gt;
[[Category:Building]] [[Category:Android]]&lt;/div&gt;</summary>
		<author><name>Dekans</name></author>
	</entry>
	<entry>
		<id>https://wiki.videolan.org/index.php?title=Android_Player_Intents&amp;diff=30107</id>
		<title>Android Player Intents</title>
		<link rel="alternate" type="text/html" href="https://wiki.videolan.org/index.php?title=Android_Player_Intents&amp;diff=30107"/>
		<updated>2015-06-17T12:23:44Z</updated>

		<summary type="html">&lt;p&gt;Dekans: Add subs extra&lt;/p&gt;
&lt;hr /&gt;
&lt;div&gt;=Open a media with VLC Player=&lt;br /&gt;
&lt;br /&gt;
To play a media with VLC player, use an intent with the following settings&lt;br /&gt;
&lt;br /&gt;
== action ==&lt;br /&gt;
Intent.ACTION_VIEW (&amp;quot;android.intent.action.VIEW&amp;quot;)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Package name ==&lt;br /&gt;
&amp;quot;org.videolan.vlc&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Data ==&lt;br /&gt;
The media Uri&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Type ==&lt;br /&gt;
one of:&lt;br /&gt;
&lt;br /&gt;
* video/*&lt;br /&gt;
* audio/*&lt;br /&gt;
* */rmvb&lt;br /&gt;
* */avi&lt;br /&gt;
* */mkv&lt;br /&gt;
* application/3gpp*&lt;br /&gt;
* application/mp4&lt;br /&gt;
* application/mpeg*&lt;br /&gt;
* application/ogg&lt;br /&gt;
* application/sdp&lt;br /&gt;
* application/vnd.3gp*&lt;br /&gt;
* application/vnd.apple.mpegurl&lt;br /&gt;
* application/vnd.dvd*&lt;br /&gt;
* application/vnd.dolby*&lt;br /&gt;
* application/vnd.rn-realmedia*&lt;br /&gt;
* application/x-iso9660-image&lt;br /&gt;
* application/x-extension-mp4&lt;br /&gt;
* application/x-flac&lt;br /&gt;
* application/x-matroska&lt;br /&gt;
* application/x-mpegURL&lt;br /&gt;
* application/x-ogg&lt;br /&gt;
* application/x-quicktimeplayer&lt;br /&gt;
* application/x-shockwave-flash&lt;br /&gt;
* application/xspf+xml&lt;br /&gt;
* misc/ultravox&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Extras (optional) ==&lt;br /&gt;
* &amp;quot;position&amp;quot;: position in the media, in ms (type long)&lt;br /&gt;
* &amp;quot;subtitles_location&amp;quot;: path of a subtitles file (type String)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Sample code ==&lt;br /&gt;
  int vlcRequestCode = 42;&lt;br /&gt;
  Uri uri = Uri.parse(&amp;quot;file:///storage/emulated/0/Movies/KUNG FURY Official Movie.mp4&amp;quot;);&lt;br /&gt;
  Intent vlcIntent = new Intent(Intent.ACTION_VIEW);&lt;br /&gt;
  vlcIntent.setPackage(&amp;quot;org.videolan.vlc&amp;quot;);&lt;br /&gt;
  vlcIntent.setDataAndType(uri, &amp;quot;video/*&amp;quot;);&lt;br /&gt;
  vlcIntent.putExtra(&amp;quot;position&amp;quot;, 1354000l);&lt;br /&gt;
  vlcIntent.putExtra(&amp;quot;subtitles_location&amp;quot;, &amp;quot;/storage/emulated/0/Movies/subs.srt&amp;quot;);&lt;br /&gt;
  startActivityForResult(vlcIntent, vlcRequestCode);&lt;br /&gt;
&lt;br /&gt;
=Get result code from VLC=&lt;br /&gt;
Since version 1.4.1, Android VLC application returns an intent when closing.&lt;br /&gt;
&lt;br /&gt;
Here is the description of this intent:&lt;br /&gt;
&lt;br /&gt;
==Intent action==&lt;br /&gt;
&amp;quot;org.videolan.vlc.player.result&amp;quot;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Result code==&lt;br /&gt;
{| class=&amp;quot;wikitable&amp;quot;&lt;br /&gt;
|-&lt;br /&gt;
! Result !! Value (int) !! Description&lt;br /&gt;
|-&lt;br /&gt;
| RESULT_OK || -1 || Video finished or user ended playback&lt;br /&gt;
|-&lt;br /&gt;
| RESULT_CANCELED || 0 || No compatible cpu, incorrect VLC abi variant installed&lt;br /&gt;
|-&lt;br /&gt;
| RESULT_CONNECTION_FAILED || 2 || Connection failed to audio service&lt;br /&gt;
|-&lt;br /&gt;
| RESULT_PLAYBACK_ERROR || 3 || VLC is not able to play this file, it could be incorrect path/uri, not supported codec or broken file&lt;br /&gt;
|-&lt;br /&gt;
| RESULT_HARDWARE_ACCELERATION_ERROR || 4 || Error with hardware acceleration, user refused to switch to software decoding&lt;br /&gt;
|-&lt;br /&gt;
| RESULT_VIDEO_TRACK_LOST || 5 || VLC continues playback, but for audio track only. (Audio file detected or user chose to)&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Data==&lt;br /&gt;
Media Uri&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
==Extras==&lt;br /&gt;
&lt;br /&gt;
* &amp;quot;extra_position&amp;quot;: position in the media, in ms (type long)&lt;br /&gt;
* &amp;quot;extra_duration&amp;quot;: media duration (type long)&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
You can check the source [http://git.videolan.org/?p=vlc-ports/android.git;a=blob;f=vlc-android/src/org/videolan/vlc/gui/video/VideoPlayerActivity.java;hb=HEAD here].&lt;/div&gt;</summary>
		<author><name>Dekans</name></author>
	</entry>
</feed>