À¯´ÏƼ ¾Èµå·ÎÀ̵å Ç÷¯±×ÀÎ

ÀÚ¹Ù·Î ¸¸µç Ç÷¯±×ÀÎÀ» À¯´ÏƼ¿¡¼­ ¾î¶»°Ô Á¢±ÙÇÏ´ÂÁö ¾Ë¾Æº¸ÀÚ.

ÀÌŬ¸³½º¿¡¼­ ÀÚ¹Ù·Î Ç÷¯±×ÀÎ ¸¸µé±â


1. ÀÌŬ¸³½º¸¦ ¿¬´Ù.
ÀÌŬ¸³½º ¹öÀüÀº ´ÙÀ½°ú °°´Ù.

Eclipse Java EE IDE for Web Developers.
Version: Mars Release (4.5.0)
Build id: 20150621-1200

2. File > New > Project ¸Þ´º¸¦ Ŭ¸¯ÇÑ´Ù.


3. "New Project"â¿¡¼­ "Android Application Project"¸¦ ¼±ÅÃÇÑ´Ù.


4. ¾ÖÇø®ÄÉÀÌ¼Ç À̸§À» Àû°í , °è¼Ó Next ¹öÆ°À» Ŭ¸¯Çؼ­ ÇÁ·ÎÁ§Æ®¸¦ »ý¼ºÇÑ´Ù.

appcompat_v7 ÇÁ·ÎÁ§Æ® »ý¼º ¾ÈÇϱâ

Minimum Required SDK¸¦ API 8: Android 2.2 (Froyo)·Î »ý¼ºÇϸé appcompat_v7 ÇÁ·ÎÁ§Æ®°¡ »ý¼ºµÈ´Ù. appcompat_v7´Â ÇÏÀ§±âÁ¾¿¡¼­ »õ·Î³ª¿Â UI¸¦ ½ÇÇàÇÒ¶§ ÇÊ¿äÇÑ °ÍÀ¸·Î ¿¹Àü ±âÁ¾À» Áö¿øÇÏÁö ¾Ê´Â´Ù¸é ÇÊ¿ä ¾ø´Â ÇÁ·ÎÁ§Æ®ÀÌ´Ù.
appcompat_v7¸¦ »èÁ¦Çϸé ÇÁ·ÎÁ§Æ® ¿À·ù°¡ ¹ß»ýÇÑ´Ù.
appcompat_v7 ÇÁ·ÎÁ§Æ® »ý¼ºÀ» ¸·À»·Á¸é Minimum Required SDK¸¦ API 8À» ÃÖ½ÅÀ¸·Î ÇÏ°í
AndroidManifest.xml ÆÄÀÏ¿¡¼­ android:minSdkVersionÀ» 9·Î ÇÏ¸é µÈ´Ù.



< AndroidManifest.xml >
<?xml version="1.0" encoding="utf-8"?>
<manifest xmlns:android="http://schemas.android.com/apk/res/android"
    package="com.example.plugin"
    android:versionCode="1"
    android:versionName="1.0" >

    <uses-sdk
        android:minSdkVersion="9"
        android:targetSdkVersion="19" />

    <application
        android:allowBackup="true"
        android:icon="@drawable/ic_launcher"
        android:label="@string/app_name"
        android:theme="@style/AppTheme" >
        <activity
            android:name=".MainActivity"
            android:label="@string/app_name" >
            <intent-filter>
                <action android:name="android.intent.action.MAIN" />

                <category android:name="android.intent.category.LAUNCHER" />
            </intent-filter>
        </activity>
    </application>

</manifest>


5. ÇÁ·ÎÁ§Æ®¿¡¼­ ¸¶¿ì½º ¿ìŬ¸¯ÇÏ¿© Properties¸¦ ½ÇÇàÇÑ´Ù.



6. Properties¿¡¼­ ¶óÀ̺귯¸®¸¦ üũÇÑ´Ù.


¾Èµå·ÎÀ̵å ÅÇ Å¬¸¯ > Is Library üũ > Apply Ŭ¸¯ > OK ¹öÆ°À¸·Î ¸¶¹«¸® ÇÑ´Ù.

7. ÇÁ·ÎÁ§Æ® bin Æú´õ ¾Æ·¡¿¡ jar ÆÄÀÏÀÌ »ý¼ºµÇ¾î ÀÖ´Ù.


8. "New Java Class" ´ëÈ­»óÀÚ¸¦ ¿­¾î Àڹ٠Ŭ·¡½º¸¦ »ý¼ºÇÑ´Ù.


Ŭ·¡½º À̸§ "Test"¸¦ ÀÔ·ÂÇÏ°í "Finish" ¹öÆ°À» ´©¸¥´Ù.




9. Á¤ÀûÀÎ ¸Þ¼Òµå¿Í ÀνºÅϽº ¸Þ¼Òµå¸¦ ÀÛ¼ºÇÑ´Ù.

package com.example.plugin;

public class Test {
    public static String GetStaticString(String a)
    {
        return "Plugin static: " + a;
    }
   
    public static int GetStaticInt(int a)
    {
        return a + 1000;
    }
   
    public String GetString(String a)
    {
        return "Plugin object: " + a;
    }
   
    public int GetInt(int a)
    {
        return a + 50000;
    }
}


10. Build AutomaticallyÀÌ Ã¼Å© µÇ¾î ÀÖÀ¸¸é ÀúÀå°ú µ¿½Ã¿¡ ÀÚµ¿ ºôµå µÈ´Ù.

 
11. Bin Æú´õ °æ·Î È®ÀÎ


Properties¿¡¼­ Resource ÅÇÀ» Ŭ¸¯ÇÏ¿© Bin Æú´õÀÇ °æ·Î¸¦ È®ÀÎÇÑ´Ù.


 À¯´ÏƼ¿¡¼­ Ç÷¯±×ÀÎ ¿¬µ¿


1. ¸ÞÀÎ Ä«¸Þ¶ó¿Í GUIText¸¸ ¹èÄ¡ÇÑ´Ù.


2. Ç÷¯±×ÀÎ ÆÄÀÏÀ» Plugins/Android Æú´õ·Î º¹»çÇÑ´Ù. ( Plugins/Android Æú´õ°¡ ¾øÀ¸¸é »ý¼ºÇÑ´Ù)


3. Ç÷¯±×ÀÎÀ» »ç¿ëÇÏ´Â Test.cs ÆÄÀÏÀ» »ý¼ºÇÑ´Ù.


4. ¼Ò½º ÆÄÀÏÀ» ´ÙÀ½°ú °°ÀÌ ÀÔ·ÂÇÑ´Ù.
using UnityEngine;
using System.Collections;

public class Test : MonoBehaviour {

    public GUIText _gui;

    // Use this for initialization
    void Start ()
    {
    
#if UNITY_EDITOR
        _gui.text = "gui in Editor";
#elif UNITY_ANDROID
        AndroidJavaClass staticClass = new AndroidJavaClass("com.example.plugin.Test");
        string resStaticStr = staticClass.CallStatic<string>("GetStaticString", "GetStaticString");
        string str = resStaticStr + "\n";

        AndroidJavaObject javaObject = new AndroidJavaObject("com.example.plugin.Test");
        string dynamicStr = javaObject.Call<string>( "GetString", "GetString");
        str += dynamicStr;
        _gui.text = str;
#endif

    }    
}

Á¤ÀûÀÎ ¸Þ¼­µå¿¡ Á¢±Ù

AndroidJavaClass·Î Ŭ·¡½º À̸§¿¡ Á¢±ÙÇÏ°í  CallStaticÀ¸·Î ¸Þ¼­µå¿¡ Á¢±ÙÇÑ´Ù.

new AndroidJavaClass("com.example.plugin.Test");
string resStaticStr = staticClass.CallStatic<string>("GetStaticString", "GetStaticString");

µ¿ÀûÀÎ ¸Þ¼­µå¿¡ Á¢±Ù

AndroidJavaObject·Î Ŭ·¡½º À̸§¿¡ Á¢±ÙÇÏ°í  CallÀ¸·Î ¸Þ¼­µå¿¡ Á¢±ÙÇÑ´Ù.

AndroidJavaObject javaObject = new AndroidJavaObject("com.example.plugin.Test");
string dynamicStr = javaObject.Call<string>( "GetString", "GetString");

5. ½ÇÇàÈ­¸éÀÌ´Ù.