Install SDK: Get started @ https://github.com/thyrlian/AndroidSDK docker pull thyrlian/android-sdk docker run -it --rm -v $(pwd)/sdk:/sdk thyrlian/android-sdk bash -c 'cp -a $ANDROID_HOME/. /sdk' sdk/cmdline-tools/tools/bin/sdkmanager --update Use build environtment to build SDL: docker run -it -v $(pwd)/sdk:/opt/android-sdk -v ~/git/SDL:/SDL -v ~/git/SDLRousku thyrlian/android-sdk /bin/bash Need to build SDL3 without video support, so that we can use it on Android without Android Activity: Need to make some changes to SDL: SDL/src/SDL_assert.c and SDL/src/SDL_log.c: stderr and stdin removed diff --git a/src/core/android/SDL_android.c b/src/core/android/SDL_android.c index 46cef905e..2bbe7b7dc 100644 --- a/src/core/android/SDL_android.c +++ b/src/core/android/SDL_android.c @@ -48,7 +48,7 @@ #define SDL_JAVA_PREFIX org_libsdl_app #define CONCAT1(prefix, class, function) CONCAT2(prefix, class, function) #define CONCAT2(prefix, class, function) Java_##prefix##_##class##_##function -#define SDL_JAVA_INTERFACE(function) CONCAT1(SDL_JAVA_PREFIX, SDLActivity, function) +#define SDL_JAVA_INTERFACE(function) CONCAT1(SDL_JAVA_PREFIX, SDLService, function) #define SDL_JAVA_AUDIO_INTERFACE(function) CONCAT1(SDL_JAVA_PREFIX, SDLAudioManager, function) #define SDL_JAVA_CONTROLLER_INTERFACE(function) CONCAT1(SDL_JAVA_PREFIX, SDLControllerManager, function) #define SDL_JAVA_INTERFACE_INPUT_CONNECTION(function) CONCAT1(SDL_JAVA_PREFIX, SDLInputConnection, function) @@ -557,7 +557,7 @@ JNIEXPORT jint JNICALL JNI_OnLoad(JavaVM *vm, void *reserved) return JNI_VERSION_1_4; } - register_methods(env, "org/libsdl/app/SDLActivity", SDLActivity_tab, SDL_arraysize(SDLActivity_tab)); + register_methods(env, "org/libsdl/app/SDLService", SDLActivity_tab, SDL_arraysize(SDLActivity_tab)); register_methods(env, "org/libsdl/app/SDLInputConnection", SDLInputConnection_tab, SDL_arraysize(SDLInputConnection_tab)); register_methods(env, "org/libsdl/app/SDLAudioManager", SDLAudioManager_tab, SDL_arraysize(SDLAudioManager_tab)); register_methods(env, "org/libsdl/app/SDLControllerManager", SDLControllerManager_tab, SDL_arraysize(SDLControllerManager_tab)); mkdir build-novideo cd build-novideo cmake .. \ -DSDL_TEST=OFF \ -DSDL_SHARED=ON \ -DSDL_STATIC=OFF \ -DSDL_VIDEO=ON \ -DSDL_RENDER=ON \ -DSDL_JOYSTICK=ON \ -DSDL_AUDIO=ON \ -DSDL_EVENTS=ON \ -DSDL_THREADS=ON \ -DSDL_TIMER=ON \ -DSDL_HIDAPI=OFF \ -DCMAKE_SYSTEM_NAME=Android \ -DCMAKE_ANDROID_NDK=/opt/android-sdk/ndk/25.1.8937393/ \ -DCMAKE_ANDROID_ARCH_ABI=arm64-v8a \ -DCMAKE_ANDROID_STL_TYPE=c++_static \ -DANDROID_PLATFORM=23 \ -DANDROID_ABI=arm64-v8a \ -DCMAKE_TOOLCHAIN_FILE=/opt/android-sdk/ndk/25.1.8937393/build/cmake/android.toolchain.cmake cmake --build . --config Release Use build environment to build SDLRousku: FreeSans.ttf needs to be placed to android-project/app/src/main/assets SDL3_image-3.2.4.aar needs to be placed to android-project/app/libs/ SDL3_ttf-3.2.2.aar needs to be placed to android-project/app/libs/ copy gradle from SDL to /SDLRousku/android-project/: SDL/android-project/gradle/wrapper/gradle-wrapper.jar SDL/android-project/gradle/wrapper/gradle-wrapper.properties SDL/android-project/gradlew SDL/android-project/gradlew.bat cd /SDLRousku/android-project ./gradlew installDebug App is found @ ./app/build/outputs/apk/debug/app-debug.apk and release: ./gradlew assembleRelease App is found @ ./app/build/outputs/apk/release/app-release-unsigned.apk