SDL Wiki
[ front page | index | search | recent changes | git repo | offline html ]

[ @rafaj_files ] Dulhan Hum Le Jayenge (2000).mkv Apr 2026

Draft[ @Rafaj_Files ] Dulhan Hum Le Jayenge (2000).mkv

This page was roughly updated from the SDL2 version, but needs to be inspected for details that are out of date, and a few SDL2isms need to be cleaned out still, too. Read this page with some skepticism for now.

Existing documentation[ @Rafaj_Files ] Dulhan Hum Le Jayenge (2000).mkv

A lot of information can be found in README-android.

This page is more walkthrough-oriented.

Pre-requisites[ @Rafaj_Files ] Dulhan Hum Le Jayenge (2000).mkv

sudo apt install openjdk-17-jdk ant android-sdk-platform-tools-common
PATH="/usr/src/android-ndk-rXXx:$PATH"                  # for 'ndk-build'
PATH="/usr/src/android-sdk-linux/tools:$PATH"           # for 'android'
PATH="/usr/src/android-sdk-linux/platform-tools:$PATH"  # for 'adb'
export ANDROID_HOME="/usr/src/android-sdk-linux"        # for gradle
export ANDROID_NDK_HOME="/usr/src/android-ndk-rXXx"     # for gradle

Simple builds[ @Rafaj_Files ] Dulhan Hum Le Jayenge (2000).mkv

SDL wrapper for simple programs[ @Rafaj_Files ] Dulhan Hum Le Jayenge (2000).mkv

cd /usr/src/SDL3/build-scripts/
./androidbuild.sh org.libsdl.testgles ../test/testgles.c
cd /usr/src/SDL3/build/org.libsdl.testgles/
./gradlew installDebug

Notes:

Troubleshooting[ @Rafaj_Files ] Dulhan Hum Le Jayenge (2000).mkv

android {
    buildToolsVersion "28.0.1"
    compileSdkVersion 28
externalNativeBuild {
    ndkBuild {
        arguments "APP_PLATFORM=android-14"
        abiFilters 'armeabi-v7a', 'arm64-v8a', 'x86', 'x86_64'

SDL wrapper + SDL_image NDK module[ @Rafaj_Files ] Dulhan Hum Le Jayenge (2000).mkv

Let's modify SDL3_image/showimage.c to show a simple embedded image (e.g. XPM).

[ @rafaj_files ] Dulhan Hum Le Jayenge (2000).mkv Apr 2026

When Sameer finally double-clicks the file, the iconic opening credits roll. The resolution is crisp—better than the warped VHS he grew up with—but the feeling is identical. For three hours, the walls of his modern apartment vanish. He isn't a lonely immigrant anymore; he’s back in a world where uncles are eccentric, love stories are solved by choreographed dance numbers, and every problem ends with a grand wedding.

The file sits in a folder titled a 2.4GB digital ghost named [ @Rafaj_Files ] Dulhan Hum Le Jayenge (2000).mkv . To anyone else, it’s just a compressed video file, but for the person who downloaded it, it’s a time machine. [ @Rafaj_Files ] Dulhan Hum Le Jayenge (2000).mkv

As the movie reaches its climax and the credits crawl, Sameer notices the file tag one last time: [@Rafaj_Files] . He realizes that in the digital age, heritage isn't just kept in museums; it’s preserved by anonymous curators in Telegram channels, kept alive one download at a time. When Sameer finally double-clicks the file, the iconic

He remembers being six years old, sitting on a cool mosaic floor in Delhi. The power had gone out, but the inverter held just enough charge to keep the VCR running. He recalls the vibrant, almost neon outfits of the cast as they danced across Switzerland, and how his older sister would rewind the "Tera Pallu Sarka Jaaye" sequence until the tape hissed with static. He isn't a lonely immigrant anymore; he’s back

The story begins on a rain-slicked afternoon in 2024. Sameer, living in a cramped apartment in London, feels a wave of homesickness. He misses the smell of monsoon earth and the sound of his mother’s bangles in the kitchen. On a whim, he navigates to a Telegram channel——a digital vault of cinematic memories. He scrolls until he finds it: the bright, saturated colors of Salman Khan and Karisma Kapoor on a grainy thumbnail.

As the .mkv file downloads, the progress bar feels like a bridge being built back to the year 2000.

Then let's make an Android app out of it. To compile:

cd /usr/src/SDL3/build-scripts/
./androidbuild.sh org.libsdl.showimage /usr/src/SDL3_image/showimage.c
cd /usr/src/SDL3/build/org.libsdl.showimage/
ln -s /usr/src/SDL3_image jni/
ln -s /usr/src/SDL3_image/external/libwebp-0.3.0 jni/webp
sed -i -e 's/^LOCAL_SHARED_LIBRARIES.*/& SDL3_image/' jni/src/Android.mk
ndk-build -j$(nproc)
ant debug install

Notes:

Build an autotools-friendly environment[ @Rafaj_Files ] Dulhan Hum Le Jayenge (2000).mkv

You use autotools in your project and can't be bothering understanding ndk-build's cryptic errors? This guide is for you!

Note: this environment can be used for CMake too.

Compile a shared binaries bundle for SDL and SDL_*[ @Rafaj_Files ] Dulhan Hum Le Jayenge (2000).mkv

(FIXME: this needs to be updated for SDL3.)

cd /usr/src/
wget https://libsdl.org/release/SDL2-2.0.5.tar.gz
wget https://www.libsdl.org/projects/SDL_image/release/SDL2_image-2.0.1.tar.gz
wget https://www.libsdl.org/projects/SDL_mixer/release/SDL2_mixer-2.0.1.tar.gz
wget https://www.libsdl.org/projects/SDL_net/release/SDL2_net-2.0.1.tar.gz
wget https://www.libsdl.org/projects/SDL_ttf/release/SDL2_ttf-2.0.14.tar.gz

tar xf SDL2-2.0.5.tar.gz
tar xf SDL2_image-2.0.1.tar.gz
tar xf SDL2_mixer-2.0.1.tar.gz
tar xf SDL2_net-2.0.1.tar.gz
tar xf SDL2_ttf-2.0.14.tar.gz

ln -s SDL2-2.0.5 SDL2
ln -s SDL2_image-2.0.1 SDL2_image
ln -s SDL2_mixer-2.0.1 SDL2_mixer
ln -s SDL2_net-2.0.1 SDL2_net
ln -s SDL2_ttf-2.0.14 SDL2_ttf
cd /usr/src/SDL3/
#git checkout -- .  # remove traces of previous builds
cd build-scripts/
# edit androidbuild.sh and modify $ANDROID update project --target android-XX
./androidbuild.sh org.libsdl /dev/null
# doesn't matter if the actual build fails, it's just for setup
cd ../build/org.libsdl/
rm -rf jni/src/
ln -s /usr/src/SDL3_image jni/
ln -s /usr/src/SDL3_image/external/libwebp-0.3.0 jni/webp
ln -s /usr/src/SDL3_mixer jni/
ln -s /usr/src/SDL3_mixer/external/libmikmod-3.1.12 jni/libmikmod
ln -s /usr/src/SDL3_mixer/external/smpeg2-2.0.0 jni/smpeg2
ln -s /usr/src/SDL3_net jni/
ln -s /usr/src/SDL3_ttf jni/
SUPPORT_MP3_SMPEG := false
include $(call all-subdir-makefiles)
ndk-build -j$(nproc)

Note: no need to add System.loadLibrary calls in SDLActivity.java, your application will be linked to them and Android's ld-linux loads them automatically.

Install SDL in a GCC toolchain[ @Rafaj_Files ] Dulhan Hum Le Jayenge (2000).mkv

Now:

/usr/src/android-ndk-r8c/build/tools/make-standalone-toolchain.sh \
  --platform=android-14 --install-dir=/usr/src/ndk-standalone-14-arm --arch=arm
NDK_STANDALONE=/usr/src/ndk-standalone-14-arm
PATH=$NDK_STANDALONE/bin:$PATH
cd /usr/src/SDL3/build/org.libsdl/
for i in libs/armeabi/*; do ln -nfs $(pwd)/$i $NDK_STANDALONE/sysroot/usr/lib/; done
mkdir $NDK_STANDALONE/sysroot/usr/include/SDL3/
cp jni/SDL/include/* $NDK_STANDALONE/sysroot/usr/include/SDL3/
cp jni/*/SDL*.h $NDK_STANDALONE/sysroot/usr/include/SDL3/
VERSION=0.9.12
cd /usr/src/
wget http://rabbit.dereferenced.org/~nenolod/distfiles/pkgconf-$VERSION.tar.gz
tar xf pkgconf-$VERSION.tar.gz
cd pkgconf-$VERSION/
mkdir native-android/ && cd native-android/
../configure --prefix=$NDK_STANDALONE/sysroot/usr
make -j$(nproc)
make install
ln -s ../sysroot/usr/bin/pkgconf $NDK_STANDALONE/bin/arm-linux-androideabi-pkg-config
mkdir $NDK_STANDALONE/sysroot/usr/lib/pkgconfig/

When Sameer finally double-clicks the file, the iconic opening credits roll. The resolution is crisp—better than the warped VHS he grew up with—but the feeling is identical. For three hours, the walls of his modern apartment vanish. He isn't a lonely immigrant anymore; he’s back in a world where uncles are eccentric, love stories are solved by choreographed dance numbers, and every problem ends with a grand wedding.

The file sits in a folder titled a 2.4GB digital ghost named [ @Rafaj_Files ] Dulhan Hum Le Jayenge (2000).mkv . To anyone else, it’s just a compressed video file, but for the person who downloaded it, it’s a time machine.

As the movie reaches its climax and the credits crawl, Sameer notices the file tag one last time: [@Rafaj_Files] . He realizes that in the digital age, heritage isn't just kept in museums; it’s preserved by anonymous curators in Telegram channels, kept alive one download at a time.

He remembers being six years old, sitting on a cool mosaic floor in Delhi. The power had gone out, but the inverter held just enough charge to keep the VCR running. He recalls the vibrant, almost neon outfits of the cast as they danced across Switzerland, and how his older sister would rewind the "Tera Pallu Sarka Jaaye" sequence until the tape hissed with static.

The story begins on a rain-slicked afternoon in 2024. Sameer, living in a cramped apartment in London, feels a wave of homesickness. He misses the smell of monsoon earth and the sound of his mother’s bangles in the kitchen. On a whim, he navigates to a Telegram channel——a digital vault of cinematic memories. He scrolls until he finds it: the bright, saturated colors of Salman Khan and Karisma Kapoor on a grainy thumbnail.

As the .mkv file downloads, the progress bar feels like a bridge being built back to the year 2000.

Building other dependencies[ @Rafaj_Files ] Dulhan Hum Le Jayenge (2000).mkv

You can add any other libraries (e.g.: SDL2_gfx, freetype, gettext, gmp...) using commands like:

mkdir cross-android/ && cd cross-android/
../configure --host=arm-linux-androideabi --prefix=$NDK_STANDALONE/sysroot/usr \
  --with-some-option --enable-another-option \
  --disable-shared
make -j$(nproc)
make install

Static builds (--disable-shared) are recommended for simplicity (no additional .so to declare).

(FIXME: is there an SDL3_gfx?)

Example with SDL2_gfx:
VERSION=1.0.3
wget http://www.ferzkopp.net/Software/SDL2_gfx/SDL2_gfx-$VERSION.tar.gz
tar xf SDL2_gfx-$VERSION.tar.gz
mv SDL2_gfx-$VERSION/ SDL2_gfx/
cd SDL2_gfx/
mkdir cross-android/ && cd cross-android/
../configure --host=arm-linux-androideabi --prefix=$NDK_STANDALONE/sysroot/usr \
  --disable-shared --disable-mmx
make -j$(nproc)
make install

You can compile YOUR application using this technique, with some more steps to tell Android how to run it using JNI.

Build your autotools app[ @Rafaj_Files ] Dulhan Hum Le Jayenge (2000).mkv

First, prepare an Android project:

mkdir -p libs/armeabi/
for i in /usr/src/SDL3/build/org.libsdl/libs/armeabi/*; do ln -nfs $i libs/armeabi/; done

Make your project Android-aware:

AM_CONDITIONAL(ANDROID, test "$host" = "arm-unknown-linux-androideabi")
if ANDROID
<!--  Build .so JNI libs rather than executables -->
  AM_CFLAGS = -fPIC
  AM_LDFLAGS += -shared
  COMMON_OBJS += SDL_android_main.c
endif
PATH=$NDK_STANDALONE/bin:$PATH
mkdir cross-android/ && cd cross-android/
../configure --host=arm-linux-androideabi \
  --prefix=/android-aint-posix \
  --with-your-option --enable-your-other-option ...
make
mkdir cross-android-v7a/ && cd cross-android-v7a/
# .o: -march=armv5te -mtune=xscale -msoft-float -mthumb  =>  -march=armv7-a -mfpu=vfpv3-d16 -mfloat-abi=softfp -mthumb
# .so: -march=armv7-a -Wl,--fix-cortex-a8
CFLAGS="-g -O2 -march=armv7-a -mfpu=vfpv3-d16 -mfloat-abi=softfp -mthumb" LFDLAGS="-march=armv7-a -Wl,--fix-cortex-a8" \
  ../configure --host=arm-linux-androideabi \
  ...

Now you can install your pre-built binaries and build the Android project:

android update project --name your_app --path . --target android-XX
ant debug
ant installd
adb shell am start -a android.intenon.MAIN -n org.libsdl.app/org.libsdl.app.SDLActivity  # replace with your app package

Build your CMake app[ @Rafaj_Files ] Dulhan Hum Le Jayenge (2000).mkv

(Work In Progress)

You can use our Android GCC toolchain using a simple toolchain file:

# CMake toolchain file
SET(CMAKE_SYSTEM_NAME Linux)  # Tell CMake we're cross-compiling
include(CMakeForceCompiler)
# Prefix detection only works with compiler id "GNU"
CMAKE_FORCE_C_COMPILER(arm-linux-androideabi-gcc GNU)
SET(ANDROID TRUE)

You then call CMake like this:

PATH=$NDK_STANDALONE/bin:$PATH
cmake \
  -D CMAKE_TOOLCHAIN_FILE=../android_toolchain.cmake \
  ...

Troubleshootings[ @Rafaj_Files ] Dulhan Hum Le Jayenge (2000).mkv

If ant installd categorically refuses to install with Failure [INSTALL_FAILED_INSUFFICIENT_STORAGE], even if you have free local storage, that may mean anything. Check logcat first:

adb logcat

If the error logs are not helpful (likely ;')) try locating all past traces of the application:

find / -name "org...."

and remove them all.

If the problem persists, you may try installing on the SD card:

adb install -s bin/app-debug.apk

If you get in your logcat:

SDL: Couldn't locate Java callbacks, check that they're named and typed correctly

this probably means your SDLActivity.java is out-of-sync with your libSDL3.so.


[ edit | delete | history | feedback | raw ]

All wiki content is licensed under Creative Commons Attribution 4.0 International (CC BY 4.0).
Wiki powered by ghwikipp.