1. ์๋๋ก์ด๋ ์คํ๋์ค๋ฅผ ์ค์นํ๋ค. SDK๋งค๋์ ์ฐ๊ธฐ ์ํจ์ธ๋ฐ ๊ทธ๋ฅ SDK๋ง ๋ฐ๋ก ๊ด๋ฆฌํ ์ ์์ผ๋ฉด ์คํ๋์ค๊น์ง ์๊น์๋ ๋จ
ย SDK๋งค๋์ ๋ก SDKย ๋๋ฒ๋ง์ด 15์ธ๊ฑฐ ๋ฐ๋๋ค. ๋ฒ์ ์ด 4.0.3์ธ๊ฐ ๊ทธ๋ด๊ฑฐ์. SDL2์์ค ๋ด์ mkํ์ผ์์ ์ต์๋ฒ์ 10 ํ๊ฒ๋ฒ์ 12๋ก ๋์๋๋ฐ ์ด๊ฑธ๋ก ํ๋ฉด ๋น๋๊ฐ ์๋๋๋ผ๊ณ ย
2. ์๋ฐย ์ ๊น๋ ค ์์ผ๋ฉดย ์๋ฐ๋ฅผ ๊น๋ค
3.ย https://developer.android.com/ndk/index.htmlย ์์ย NDK๋ฅผ ์ค์นํ๋ค. ์ค์น ํด๋๋ ๋ฐ๋ก C๋๋ผ์ด๋ธ ๋ฐ์ผ๋ก ํ๊ธธ ์ถ์ฒย
4.ย http://ant.apache.org/bindownload.cgiย ์์ย ์ํ์น ant๋ฅผ ๊น๋ค. ๋ณต์กํ ๋น๋ ๊ณผ์ ์ ์ผ๊ด์ฒ๋ฆฌ ํด์ฃผ๋ ํ๋ก๊ทธ๋จย ๊น๊ฑฐ ๊ฒ๋ ๋ง๋ค ใ ใ ;;;
5. ๋ค ๊น์์ผ๋ฉด ํ๊ฒฝ ๋ณ์ ์ค์ ์ ํด์ค์ผ ํ๋ค. ์ด๋ป๊ฒ ํ๋์ง ๋ชจ๋ฅด๋ฉด ๊ฒ์ ใฑ
ย ย JAVA_HOMEย = ์๋ฐํด๋ (ํต์ C:\Program Files\Java\jdk_x.y.z)
ย ย ANDROID_HOMEย = ์๋๋ก์ด๋ SDK ์ค์น๋ ํด๋( ์๋ ์คํ๋์ค์ SDK๋งค๋์ ๋ก ๊น์์ผ๋ฉด C:\Users\Administrator\AppData\Local\Android\Sdk )
ย ย ant, ndk-buildย ์ปค๋งจ๋ ๋ผ์ธ ๋ช
๋ น์ ์ฐ๊ธฐ ์ํด์ ย path์ย antํด๋/binย ๊ณผย ndkํด๋ย ๋ฅผ ์ถ๊ฐํด์ฃผ์
6.ย http://android-sdk.en.lo4d.com/download/mirror-ex1ย ์์ย ๊ตฌ๋ฒ์ ์๋๋ก์ด๋ SDK๋ฅผ ๋ฐ๋๋ค.ย
ย ย ์์ถ ํ๊ณ ๋์ ๋ณด๋ฉดย tools ํด๋์ย antํด๋๊ฐ ์์๊ฒ์ด๋ค. antํด๋๋ง ๋ณต์ฌํด์ย ์๋ sdkํด๋์ย toolsํด๋ย ์์ ๋ณต์ฌํด์ฃผ์.ย
ย ย ์ SDK๋ฅผ ๋ ๋ฐ๋๊ณ ? SDK๋งค๋์ ๋ก ๋ฐ๊ฑฐ๋ ์ ๋ฒ์ ์ผ๋ก ๋ฐ์ SDK๋ sdk/tools/ant ํด๋์ ๋ค์ด์๋ย build.xml์ด ์๋ค.ย
ย ย ์ด๋ฌ๋ฉด ๋น๋๊ฐ ์๋๋ค. ใ ใ ์ด๊ฒ ๋ง์ด์ผ ๋ฐฉ๊ตฌ์ผ. ๊ทธ๋ฅ ํ์.
ย ย ์ด์ ์ค๋น๋ฌผ์ ๋ค ์ค๋นํ๋ค. ์ด์ ๋น๋ ์ค์ ํ๋ฌ ๊ฐ์ ํด
7.ย https://www.libsdl.org/download-2.0.phpย ์์ย Source Code๋ฅผ ๋ฐ์. ์๋๋ก์ด๋ ํฌํ ํ ๋ย ์ด๋ฏธ ๋น๋๋ lib๋ ์ธ์๊ฐ ์๋ค ใ
ย ย ์์ถ์ ํ๊ณ ๋์จ ๊ฐ๊ฐ์ง ํ์ผ๋ค ์คย android-project ํด๋๋ฅผ ํต์งธ๋ก ๋ณต์ฌํด์ ๋น๋๋ฅผ ์งํํ ํด๋์ ๋ณต์ฌํด์ฃผ์. ์ฌ๊ธฐ์ C:\test\android-project ๋ก ํ๊ฒ ์
ย ย ์๋๋ก์ด๋ ํ๋ก์ ํธ ํด๋ ์์๋ย jni, res, srcย ํด๋๊ฐ ์์๊ฒ์ธ๋ฐย jni๊ฐ ๋ฐ๋ก ์ฐ๋ฆฌ์ C++ ์์ค์ฝ๋๊ฐ ๋ค์ด๊ฐ ํด๋์ด๋ค. (Java Native Interface์ ์ฝ์๋๋ค)
8. jni ํด๋ย ์์ย SDL2ํด๋๋ฅผ ์์ฑํ ํย ๋ฐฉ๊ธ ๋ฐ์ ์์ค์ฝ๋๋ฅผ ์ธ๊ทธ๋ฆฌ ์ง์ด๋ฃ๋๋ค. ์ํ์ด ๋ค์งํ ๊ผด์ด ๋๋ค.
ย ย SDL2_image ๋ผ์ด๋ธ๋ฌ๋ฆฌ๋ฅผ ์ฐ๋๊ฒฝ์ฐ SDL_image์ย ์์ค์ฝ๋๋ฅผ ๋ฐ์ ํ ๋๊ฐ์ดย jniย ์์ย SDL2_image ํด๋๋ฅผ ๋ง๋ค์ด ์์ ๋ค ๋ฐ์๋ฃ๋๋ค.
9. jni/srcย ํด๋๊ฐ ๋ฐ๋กย ์ฐ๋ฆฌ๊ฐ ์ฝ๋ฉํ ์์ค์ฝ๋๋ค์ด ๋ค์ด๊ฐ ํด๋๋ค. ํ๋ก์ ํธ ํด๋ ์์๋ src๊ฐ ์๊ณ jni ํด๋ ์์๋ src๊ฐ ์์ผ๋ ํผ๋ ์ฃผ์
ย ย SDL๋ก ์ด๋ฏธ์ง ํ๋ ๋์ฐ๋ ํ๋ก๊ทธ๋จ์ด๋ ๋จธ๋ ์๊ฑฐ๋ ๋ฃ์ ๋ main.cpp๋ก ํด์ ๋ฃ์์
10. jni/src ํด๋์์ย android.mk๋ฅผ ์ด์.ย android.mkย ํ์ผ์ด ์ฌ๊ธฐ๋ ์๊ณ ์ ๊ธฐ๋ ์์ผ๋๊นย ํด๋๋ฅผ ์ ๋ด์ผ๋จ
ย ย SDL_PATH := ../SDLย ๋ฅผย SDL_PATH := ../SDL2๋ก ๋ฐ๊พผ๋ค.ย
ย ย SDL_image๋ฅผ ์ฐ๋ ๊ฒฝ์ฐ
ย ย LOCAL_C_INCLUDES := $(LOCAL_PATH)/$(SDL_PATH)/includeย ๋ฅผ
ย ย LOCAL_C_INCLUDES := $(LOCAL_PATH)/$(SDL_PATH)/includeย $(LOCAL_PATH)/../SDL2_imageย ๋ก ๋ฐ๊พธ๊ณ
ย ย LOCAL_SHARED_LIBRARIES := SDL2ย ๋ฅผ
ย ย LOCAL_SHARED_LIBRARIES := SDL2 SDL2_imageย ๋ก ๋ฐ๊ฟ์ค๋ค
ย ย ๊ณต๋ฐฑ ๋์ฐ๊ณ ๊ฒฝ๋ก ํ๋ ์ถ๊ฐํ ๊ฒ ๋ฟ์
ย ย LOCAL_SRC_FILES := $(SDL_PATH)/src/main/android/SDL_android_main.c \ย ์ค ์๋์ย main.cpp๋ผ๊ณ ์จ์ค๋ค.ย
ย ย ์ปดํ์ผ ํ ์์ค์ฝ๋ ๋ฆฌ์คํธ์
11. jni/Application.mk๋ฅผ ์ฐ๋ค. ์๋ฌด ๋ผ์ธ์๋ย NDK_TOOLCHAIN_VERSION=4.9ย ๋ฅผ ์ถ๊ฐํด์ฃผ์. ์ ๊ทธ๋ฌ๋ฉด ์ปดํ์ผ ํ ๋ ์ปดํ์ผ๋ฌ ๋ฌธ์ ๋๋ฌธ์ ์๋ฌ70์ธ๊ฐ ๋ญ์๊ธฐ๊ฐ ๋ฌ๋ค.
ย ย ์ถ๊ฐ๋กย STL๋ฅผ ์ฌ์ฉํ๊ธฐ ์ํดย APP_STL := stlport_staticย ๋ผ์ธ๋ ์ถ๊ฐํด์ค๋ค.
์ด ์์ ์์ย ndk-build๊ฐ ๋ ๊ฒ์ด๋ค. cmd์์ ํด๋๋ก ๊ฐ ํย ndk-build๋ผ๊ณ ์ณ์ฃผ์.ย
๊ทธ๋ผ ๊ฐ๊ฐ์ง .c๋ค์ ์ปดํ์ผ ํ๊ณ ์ ๋๋ก ์ฑ๊ณต ํ๋ค๋ฉด android-project ํด๋์ ๋ชฉ์ ํ์ผ๋ค๊ณผ src ์์๋ javaํ์ผ์ด ์์ฑ ๋ ๊ฒ์ด๋ค.ย
๋ง์ฝ ์๋ฌ๊ฐ ๋ฌ๋ค๋ฉดย jni/src/Android.mkย ํ์ผ ์์ย
APP_ABI := armeabi armeabi-v7a x86๋ฅผ
APP_ABI := armeabi armeabi-v7aย ๋ก ๋ฐ๊ฟ์ฃผ์
๋ค๋ฅธ ์๋ฌ๊ฐ ๋ฌ๋ค๋ฉด ์์์ ๊ตฌ๊ธ๋ง ํ์๊ณ .. ์ฑ๊ณต ํ๋ค๋ฉด ์ถํํ๋ค. ๋น๋ 1๋จ๊ณ๋ ๋ฌด์ฌํ ๋๋๋ค ใ
ใ
ใ
(๋๋ฌด ํ๋ค๋ค)
12. ์ด์ jni์์ ๋์์ย ํ๋ก์ ํธ ํด๋์์ ์ข ์์
์ ํด์ผํ๋ค...ย AndroidMenifest.xml๋ฅผ ์ฐ๋ค.ย
ย <uses-sdk android:minSdkVersion="10" android:targetSdkVersion="12" /> ๋ผ์ธ์ด ์์ ๊ฒ์ธ๋ฐ
ย <uses-sdk android:minSdkVersion="15" android:targetSdkVersion="15" /> ๋ก ๋ฐ๊ฟ์ค๋ค. 10์ด๋ 12๋ ๋น๋๊ฐ ์๋๋ค๊ณ ์ฝ์ฐฝ
13.ย ant.properties๋ฅผ ์ด์ดย target=android-15 ๋ผ์ธ์ ์ถ๊ฐํด์ค๋ค
14.ย local.propertiesย ํ์ผ์ ์์ฑํด์( ์๋ฌด ๋น properties ํ์ผ ๋ณต์ฌํด์ ์ด๋ฆ๋ง ๋ฐ๊พธ๋ฉด ๋จ )ย
ย ย ย sdk.dir = ../../Users/Administrator/AppData/Local/Android/Sdkย ๋ฅผ ์ถ๊ฐํด์ SDK ๊ฒฝ๋ก๋ฅผ ์ถ๊ฐํ๋๋ฐ...ย
ย ย ย ์ด๊ฒ ๋ฒ ์ด์ค ํด๋๊ฐ ํ๋ก์ ํธ ํด๋๋ผ์ ๊ทธ๋ฅ ์ ๋๊ฒฝ๋ก ํ๋ฉดย
ย ย ย C:\test\android-project\C:\test\...ย
ย ย ย ์ด๋ฐ์์ ๊ฒฝ๋ก๊ฐ ๋๋ฒ๋ฆฐ๋ค.ย
ย ย ย ๊ทธ๋์ C:\๊น์ง ๊ฐ์ SDK ํด๋ ๊ฒฝ๋ก๋ฅผ ํ๊ณ ๊ฐ์ผ ํ๋ ์ด์ํ ๋ชจ์์๊ฐ ๋จ ใ ํ์ฌ๊ฐ SDK ๊ฒฝ๋ก ์ค์ ํ๋ ๋ถ๋ถ์ด๋๊น ์์์ ํ์๊ณ
15. android-project/src/org/libsdl/appย ํด๋๋ก ๊ฐ์ย SDLActivity.java๋ฅผ ์ฐ๋ค.
ย ย protected String[] getLibraries() {
ย ย ย ย return new String[] {
ย ย ย ย ย ย ย ย ย "SDL2",
ย ย ย ย ย ย ย ย ย //"SDL2_image",
ย ย ย ย ย ย ย ย ย //"SDL2_mixer",
ย ย ย ย ย ย ย ย ย //"SDL2_net",
ย ย ย ย ย ย ย ย ย //"SDL2_ttf",
ย ย ย ย ย ย ย ย ย "main"
ย ย ย ย ย };
ย }
ย ๋ผ๊ณ ๋ ๋์ด ์์๊ฑด๋ฐย ํ์ํ ๋ถ๋ถ์ ์ฃผ์์ ์ง์์ฃผ์. ์ผ๋จ SDL2_image์ ์ฃผ์์ ์ง์์ฃผ์.
16. ํ.... ์ด์ ์ฌ ๊ฒ์ด ์๋ค. ndk-build ํ๋๊ฒ๊ณผ ๋ง์ฐฌ๊ฐ์ง๋ก cmd๋ก ํด๋๋ก ๊ฐ์ย ant debugย ๋ช
๋ น์ ์
๋ ฅํด์ค๋ค.
ย ย ๋น๋๊ฐ ์ ๋๋ก ๋ฌ๋ค๋ฉด ์ฌ๋ฐ ๊ฒ์ ๋
๋ฆฝ ๋ง์ธ๋ค. bin ํด๋์ apk๊ฐ ๋น๋นํ ์์ฑ ๋์ด ์์๊ฒ์ด๋ค. ์๋ฌ๊ฐ ๋ฌ๋ค๋ฉด... ๊ตฌ๊ธ๋ง ํ์
ใ
ก.ใ
ก
ย ย ๋
น์ค ํ๋ ์ด์ด๋ ๋ย ์ค๋งํธํฐ์ด๋ ย ์๋ฎฌ๋ ์ดํฐ๋ ๋ญ๋ ์ฐ๊ฒฐํด์ ํ
์คํธ ํด๋ณธ๋ค. ์คํ์ด ๋๋๊ฐ?
ย ย ์๋ ๊ฑฐ์ใ
ย
ย ย ๋ ๊ฐ์ ๊ฒฝ์ฐ์ load error SDL_image from loader ์ธ๊ฐ ๋ญ์๊ธด๊ฐ ๋จ๋๋ผ.
ย ย ๊ฑฑ์ ๋ง์
์ง์ง ๊ฑฐ์ ๋ค ์์ผ๋๊น.
17. android-project/src/com/tutorial/gameย ๊น์ง ๊ฐ๋ ํด๋๋ฅผ ๋ง๋ค์ด์ฃผ์. ๊ทธ๋ฆฌ๊ณ .java ํ์ผ์ ํ๋ ๋ง๋ค์ด์ ์์๋ค
ย ย ย ย ย package com.tutorial.game;
ย ย package="org.libsdl.app"ย ->ย package="com.tutorial.game"ย
ย ย android:name="SDLActivity"ย ->ย android:name="HelloSDL2Activity"
ย ย ๋ก ๊ฐ๊ฐ ์์ ํด์ค๋ค.
ย ย ์ฑ ์ด๋ฆ์ ๋ฐ๊พธ๊ณ ์ถ์ผ๋ฉดย res/values/strings.xmlย ์์ย app_name์ ๋ฐ๊ฟ์ฃผ๋ฉด ๋๋ค.
ย ย ๋น๋ํ๊ณ ์คํ ใฑ. ์ด์ ๋ ๊ฑฐ์.
์ด์ฐ์ผ ๊ณ ์ํ์ด..๋๋ ์ด๊ฑฐ ๋์ค์ ์ฐธ๊ณ ํ๊ฒ๋ ์ง๋ ใฑใ
๊ธ ์์ ์ด ์๋๋๋ฐ 18๋จ๊ณ์์ ์ด๋ฏธ์ง ํ์ผ๋ค์ android-project/assets ์์ ๋ฃ์ผ๋ฉด ๋จ
SDL ๋ณดํต SDL์ด๋ฏธ์ง๋ณด๋ค OPENGL ์ฐ์ง ์๋?
ใด ์ด.. ๋๋ ๋ฐฐ์ฐ๋ ์ค์ด๋ผ ์ ๋ชจ๋ฅด๊ธด ํ๋ฐ 3D ์ ํ ๊ฑฐ๋ฉด ์คํ์ง์๊น์ง ์ธ ํ์ ์์ง ์์? SDL๋ก๋ ์ถฉ๋ถํ ๊ฐ์๋ ๊ฑด๋ฐ
๋ฐฐ๋ณด๋ค ๋ฐฐ๊ผฝ์ด ๋ ํฌ๋ค..., ๊ฐ๋จํ ๊ฒ ๋ง๋ค๋ ค๊ณ sdl ์ฐ๋๊ฑด๋ฐ ์ด๋ด๊บผ๋ฉด ์์ง ์ฐ๋๊ฒ ๋ต์ธ๋ฏ ใ ใ