ย  ์˜ค๋Š˜ ๋ฐ˜๋‚˜์ ˆ์„ ์ด๊ฑฐ ๊ฐ€์ง€๊ณ  ์”จ๋ฆ„ ํ–ˆ์Œ. ๋ญ๊ฐ€ ์ด๋ ‡๊ฒŒ ์„ค์น˜ํ•˜๊ณ  ์„ค์ •ํ• ๊ฒŒ ๋งŽ์€์ง€; ์—๋Ÿฌ๋Š” ๋˜ ์–ผ๋งˆ๋‚˜ ๋งŽ์ด ๋‚˜๋Š”์ง€...

์ผ๋‹จ ๋‚ด๊ฐ€ ๊นŒ๋จน์ง€ ์•Š๊ธฐ ์œ„ํ•œ ์šฉ๋„๊ธฐ๋„ ํ•œ๋ฐ

๊ณตํ™ˆ์—์„œ๋Š” ์ž์„ธํžˆ ์•ˆ ์•Œ๋ ค์ฃผ๋Š” ํฌํŒ…๋ฒ•์„ ํ˜น์‹œ SDL๋กœ ๊ฒŒ์ž„ ๋งŒ๋“œ๋Š” ์‚ฌ๋žŒ ์žˆ์œผ๋ฉด ๋„์›€ ๋˜๋ผ๊ณ  ํ•œ๋ฒˆ ์ •๋ฆฌํ•ด๋ดค์Œ.



SDL2 ์•ˆ๋“œ๋กœ์ด๋“œ ํฌํŒ…ํ•˜๊ธฐ

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๋‹จ๊ณ„๋Š” ๋ฌด์‚ฌํžˆ ๋๋ƒˆ๋‹ค ใ…Žใ…Žใ…Ž (๋„ˆ๋ฌด ํž˜๋“ค๋‹ค)
5ํŒจ5ํŒจ5ํŒจ


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๊ฐ€ ๋‹น๋‹นํžˆ ์ƒ์„ฑ ๋˜์–ด ์žˆ์„๊ฒƒ์ด๋‹ค. ์—๋Ÿฌ๊ฐ€ ๋‚ฌ๋‹ค๋ฉด... ๊ตฌ๊ธ€๋ง ํ•˜์…ˆ ใ…ก.ใ…ก

ย  ย  ๋…น์Šค ํ”Œ๋ ˆ์ด์–ด๋“  ๋‹˜ย ์Šค๋งˆํŠธํฐ์ด๋“ ย ์—๋ฎฌ๋ ˆ์ดํ„ฐ๋“  ๋ญ๋“  ์—ฐ๊ฒฐํ•ด์„œ ํ…Œ์ŠคํŠธ ํ•ด๋ณธ๋‹ค. ์‹คํ–‰์ด ๋˜๋Š”๊ฐ€?
ย  ย  ์•ˆ๋ ๊ฑฐ์ž„ใ…‹ย 


303030


ย  ย ๋‚˜ ๊ฐ™์€ ๊ฒฝ์šฐ์—” load error SDL_image from loader ์ธ๊ฐ€ ๋ญ์‹œ๊ธด๊ฐ€ ๋œจ๋”๋ผ.
ย  ย ๊ฑฑ์ • ๋งˆ์…ˆ ์ง„์งœ ๊ฑฐ์˜ ๋‹ค ์™”์œผ๋‹ˆ๊นŒ.

17. android-project/src/com/tutorial/gameย ๊นŒ์ง€ ๊ฐ€๋Š” ํด๋”๋ฅผ ๋งŒ๋“ค์–ด์ฃผ์ž. ๊ทธ๋ฆฌ๊ณ  .java ํŒŒ์ผ์„ ํ•˜๋‚˜ ๋งŒ๋“ค์–ด์„œ ์•ˆ์—๋‹ค
ย ย ย ย ย package com.tutorial.game;

ย  ย  ย  ย  ย import org.libsdl.app.SDLActivity;


ย  ย  ย  ย  ย public class HelloSDL2Activity extends SDLActivity

ย  ย  ย  ย  ย {


ย  ย  ย  ย  ย }

ย  ย  ย  ๋ฅผ ๋ณต๋ถ™ํ•œ๋‹ค.
18. AndroidMenifest.xmlย ์•ˆ์˜

ย  ย  package="org.libsdl.app"ย ->ย package="com.tutorial.game"ย 
ย  ย  android:name="SDLActivity"ย ->ย android:name="HelloSDL2Activity"
ย  ย  ๋กœ ๊ฐ๊ฐ ์ˆ˜์ •ํ•ด์ค€๋‹ค.

ย  ย  ์•ฑ ์ด๋ฆ„์„ ๋ฐ”๊พธ๊ณ  ์‹ถ์œผ๋ฉดย res/values/strings.xmlย ์•ˆ์˜ย app_name์„ ๋ฐ”๊ฟ”์ฃผ๋ฉด ๋œ๋‹ค.

ย  ย  ๋นŒ๋“œํ•˜๊ณ  ์‹คํ–‰ ใ„ฑ. ์ด์ œ ๋  ๊ฑฐ์ž„.


19.31