NDK ºôµå - À¯´ÏƼ

À̹øÀå¿¡¼­´Â À¯´ÏƼ¿¡¼­ ³×ÀÌƼºê C/C++ Ç÷¯±×ÀÎÀ¸·Î »ç¿ë¿¡ ´ëÇؼ­ ¾Ë¾Æº»´Ù.
¾ÕÀåÀÇ ¾Èµå·ÎÀ̵忡¼­ ³×ÀÌƼºê C/C++ Ç÷¯±×ÀÎÀ¸·Î »ç¿ëÇÏ´Â ³»¿ë°ú ºñ½ÁÇÏ´Ù.

¾Èµå·ÎÀ̵忡¼­´Â jni¸¦ »ç¿ëÇؼ­ ³×ÀÌƼºê C/C++À» »ç¿ëÇÏÁö¸¸ À¯´ÏƼ¿¡¼­´Â jni°¡ ÇÊ¿ä ¾ø´Ù.

* ¾Èµå·ÎÀ̵忡¼­ ÀÎÅÍÆäÀ̽º ½Ã±×´ÏÃÄ

JNIEXPORT jstring JNICALL Java_com_example_ndktest_JniTest_stringFromJNI
  (JNIEnv *env, jobject)
{
    return (env)->NewStringUTF("Hello NDK!");
}

* À¯´ÏƼ¿¡¼­ ÀÎÅÍÆäÀ̽º ½Ã±×´ÏÃÄ

extern "C" {
    int addInt(int a, int b)
    {
        return a + b;
    }
}

À¯´ÏƼ¿ë Ç÷¯±×ÀÎÀ» ÀÛ¼ºÇغ¸ÀÚ.

cygwin ¾øÀÌ ndk¸¦ ºôµåÇغ¸ÀÚ.
ndk-build¸¦ »ç¿ëÇؼ­ so ÆÄÀÏ·Î ºôµåÇϴ°ÍÀÌ´Ù.
¾Èµå·ÎÀ̵å¿Í ÀÚ¹Ù¿Í CÀÇ È¥ÇÕ ÇÁ·Î±×·¡¹Ö¿¡ ´ëÇؼ­ ¾Ë¾Æ º»´Ù.

http://huammmm1.tistory.com/459 ³»¿ëÀÌ ÁÁ¾Æ¼­ °¡Á®¿Ô´Ù. ÀÌ »çÀÌÆ®ÀÇ ³»¿ëÀ» Á¶±Ý¸¸ ¼öÁ¤Çß´Ù.

1. NDK¸¦ ´Ù¿î·Îµå ¹Þ¾Æ Àû´çÇÑ °÷¿¡ Ǭ´Ù.
ÆíÇÏ°Ô »ç¿ëÇϱâ À§ÇØ È¯°æ º¯¼ö¿¡ µî·ÏÇÑ´Ù.  ( ¿¹ d:\ndk\android-ndk-r10e )
 http://developer.android.com/tools/sdk/ndk/index.html

¼³Á¤ÀÌ Àß µÇ¾ú´ÂÁö È®ÀÎÇϱâ À§ÇØ ndk-build¸¦ ½ÇÇàÇÑ´Ù.


2. so ¶óÀ̺귯¸® Å×½ºÆ® ÇÁ·ÎÁ§Æ®¸¦ ¸¸µç´Ù. (¿©±â¼­´Â NDKTest)

File / New / Project / Android Application Project¸¦ Ŭ¸¯ÇÏ°í Next ½ÇÇà



NDKTest¸¦ ÀÔ·ÂÇÑ´Ù.



3. Eclipse¿¡¼­ Window / Preferences / Android / NDK¿¡¼­ NDK ¼³Ä¡ Æú´õ¸¦ ¼³Á¤ÇÑ´Ù.



4. ÇÁ·ÎÁ§Æ® ¿ìŬ¸¯ / Android Tools / Add Native Support¿¡¼­ so ¶óÀ̺귯¸® À̸§À» Àû´Â´Ù.



Finish ¹öÆ°À» ´©¸£¸é ÇÁ·ÎÁ§Æ®¿¡ jni Æú´õ°¡ »ý±â°í, ±× ¾È¿¡ cpp ÆÄÀÏ°ú mk ÆÄÀÏÀÌ »ý±ä´Ù.



cpp ÆÄÀÏ¿¡ ½ÇÇà ÇÒ·Á´Â ÇÔ¼öµéÀ» ÀÛ¼ºÇÏ¸é µÈ´Ù. mk ÆÄÀÏ¿¡´Â ndk-build¸¦ ÀÌ¿ëÇÒ¶§ ±ÔÄ¢À» Àû´Â´Ù.
Add Native Support¸¦ »ç¿ëÇÏÁö ¾Ê°í jni Æú´õ¸¦ Á÷Á¢ ¸¸µé°í cpp, mk ÆÄÀϸ¦ Ãß°¡Çصµ µÈ´Ù.
»ç¿ëÇÏ´Â ¸ñÀû¿¡ µû¶ó cpp ÆÄÀÏ´ë½Å cÆÄÀÏÀ» »ç¿ëÇصµ ÁÁ´Ù.

5. ³Ã¹«

6. ³Ã¹«

7. ³Ã¹«

8. ³Ã¹«

9. À¯´ÏƼ¿¡¼­ »ç¿ëÇÒ ÇÔ¼ö¸¦ NDKTest.cpp¿¡ Ãß°¡ÇÑ´Ù.
À¯´ÏƼ¿¡¼­ DllImport·Î ºÎ¸£±â À§ÇØ extern "C"·Î °¨½Ñ´Ù.
extern "C"
{
    int addInt(int a, int b)
    {
        return a + b;
    }
}


10. 4¹ø¿¡¼­ Add Native Support¸¦ ÀÌ¿ëÇß´Ù¸é ÇÁ·ÎÁ§Æ® ¿ìŬ¸¯ -> Build Configurations -> Build AllÀ» ´©¸£¸é ¾Ë¾Æ¼­ ndk-build ¸í·ÉÀÌ ½ÇÇàµÇ¾î ´ÙÀ½°ú °°ÀÌ ºôµå°¡ µÉ °ÍÀÌ´Ù.


Äĸǵå ȯ°æ¿¡¼­ ºôµå ÇÒ·Á¸é ·çÆ® Æú´õ·Î À̵¿Çؼ­ ndk-build ÇÏ¸é µÈ´Ù.


so ÆÄÀÏÀÌ »ý¼º µÇ¾ú´ÂÁö È®ÀÎÇÑ´Ù.




11. ¸¸µé¾îÁø libNDKTest.so ÆÄÀÏÀ» À¯´ÏƼ Æú´õ¿¡ º¹»çÇÑ´Ù. Æú´õ°¡ ¾øÀ¸¸é Æú´õ¸¦ »ý¼ºÇÑ´Ù.
Assets/Plugins/Android

12. À¯´ÏƼ¿¡¼­ *.so µ¿Àû ¶óÀ̺귯¸® CÇÔ¼ö¸¦ È£ÃâÇÏ´Â Äڵ带 Ãß°¡ÇÑ´Ù.
//DllImport¸¦ »ç¿ëÇϱâ À§Çؼ­ Runtime.InteropServices¸¦ using
using System.Runtime.InteropServices; 

//NDKTest ¶óÀ̺귯¸®ÀÇ addInt ÇÔ¼ö¸¦ ÀÓÆ÷Æ®
public class Fps : MonoBehaviour {
 
    [DllImport ("NDKTest")]
    private static extern int addInt(int a,int b);

//ÇÔ¼ö »ç¿ë
int num = addInt (40, 5);