Files
SDLRousku/INSTALL.android
2025-09-23 00:27:56 +03:00

85 lines
3.6 KiB
Plaintext

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