85 lines
3.6 KiB
Plaintext
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
|