Pemrograman SDL di Android

SDL (Simple DirectMedia Layer) adalah software library yang berguna
untuk mengakses perangkat fisik komputer, seperti grafik, suara, dan inputan. Software ini termasuk open-source yang populer dalam pengembangan game.

SDL mampu berjalan stabil di banyak platform. Salah satunya di platform Android yang dibahas di tulisan ini.

Terlebih dahulu, download library SDL:
https://github.com/libsdl-org/SDL/releases
Cukup download SDL3-devel-3.4.0-android.zip atau versi khusus Android lainnya.

Selanjutnya jalankan Android Studio sebagai alat pembuatan aplikasi Android dan untuk menjalankan aplikasinya bisa di perangkat seluler atau di emulator. Android Studio yang dipakai adalah versi Otter 3 Feature Drop.

Buat project baru, lalu di bagian Phone and Tablet, pilih Native C++.

Di tahapan berikutnya, Language diset ke Kotlin dan Build configuration diset ke Kotlin DSL.

Ekstrak SDL yang telah di-download, copy SDL3-3.4.0.aar ke
lokasi-project-baru/app/libs
dimana folder libs belum ada, jadi semestinya perlu dibuat dulu.

Hapus semua source MainActivity menjadi kode seperti dibawah ini, agar Activity SDL dieksekusi saat aplikasi mulai berjalan.

package com.hansanware.sdlinphone

import org.libsdl.app.SDLActivity

class MainActivity : SDLActivity()

Kelihatan lebih ringkas dan muncul error tapi biarkan saja dulu apa adanya. Kemudian edit CMakeLists.txt, target menjadi main karena Activity SDL membutuhkannya saat pemanggilan library. Kira-kira kode utuhnya seperti di bawah ini:

cmake_minimum_required(VERSION 3.22.1)

project("androidinphone")

set(SDL_LIB "main")

add_library(${SDL_LIB} SHARED
        native-lib.cpp)

find_package(SDL3 REQUIRED CONFIG)

target_link_libraries(${SDL_LIB}
        android
        log
        SDL3::SDL3)

Terus ganti source default di file native-lib.cpp dengan source SDL. Atau bisa juga disalin dari source hello world ini:
https://github.com/libsdl-org/SDL_helloworld/blob/main/main.c

Selanjutnya edit build.gradle.kts (Module :app), tambahkan

prefab = true

dan

implementation(files("libs/SDL3-3.4.0.aar"))

Struktur kode gradle-nya:

...
android {
  ...
  buildFeatures {
    ...
    prefab = true
  }
}
...
dependencies {
  ...
  implementation(files("libs/SDL3-3.4.0.aar"))
}

Lanjutkan dengan sinkronisasi (sync) dan jalankan aplikasinya.