"If you do nothing, nothing will happen."

프로그래밍

[펌] 이클립스로 안드로이드 JAR 생성해서 유니티에 연동

tedhong 2023. 2. 9. 13:56
2013-07-10 글쓴이 TED HONG

[펌] 이클립스로 안드로이드 JAR 생성해서 유니티에 연동

원본 : http://blog.naver.com/crazywind13/10171507206

 

. 순서

1. 이클립스에서 File>New>Project – Android>Android Application Project 생성.

 

2. 생성된 프로젝트 lib 폴더에

Unity 설치 폴더EditorDataPlaybackEnginesandroidplayerbin

폴더에 있는 classes.jar 파일을 복사.

 

3. MainActivity.java 수정

import android.os.Bundle;
import android.app.Activity;
import android.view.Menu; 

// 추가
import com.unity3d.player.UnityPlayer;
import com.unity3d.player.UnityPlayerActivity;



// Activity -> UnityPlayerActivity 로 수정
public class TestMainActivity extends UnityPlayerActivity
{
@Override
protected void onCreate(Bundle savedInstanceState)
{
super.onCreate(savedInstanceState);



// 삭제
     //setContentView(R.layout.activity_test_main);
   }



// 삭제
   // @Override
// public boolean onCreateOptionsMenu(Menu menu)
// {
//  // Inflate the menu; this adds items to the action bar if it is present.
//  getMenuInflater().inflate(R.menu.test_main, menu);
//  return true;
// }



// 이클립스에서 유니티 함수 호출 테스트
// 이클립스에서 유니티의 함수를 호출하려면 UnityPlayer.UnitySendMessage()
// 를 이용한다. 이 소스에서는 AndroidTest 라는 게임 오브젝트의 ShowText() 함수를
// 호출함.
   public void SendMessageTest()
{

      UnityPlayer.UnitySendMessage(“AndroidTest”, “ShowText”, “”);
   }
}

 

4. File>Explort – Java>JAR file 선택후 Next.

 

5. Select the resources to export 에서 프로젝트의 src만 체크,

Select the export destination 에서 만들어질 JAR 파일 경로 지정하고 Finish.

 

6. 유니티 프로젝트 생성.

 

7. 유니티 프로젝트 Assets 안에 PluginsAndroid 폴더 생성.

 

8. 이클립스 프로젝트에서 만든 jar 파일과 AndroidManifest.xml 파일을

AssetsPluginsAndroid 폴더에 복사.

 

9. 복사한 AndroidManifest.xml 파일 수정.

<?xml version=”1.0″ encoding=”utf-8″?>
<manifest xmlns:android=”http://schemas.android.com/apk/res/android
package=”com.cocaban.testproject”
android:versionCode=”1″
android:versionName=”1.0″ > 

<uses-sdk
android:minSdkVersion=”8″
android:targetSdkVersion=”17″ />



<!–
ic_launcher -> app_icon 으로 변경, android:theme=”@style/AppTheme” 제거
<application
android:allowBackup=”true”
android:icon=”@drawable/ic_launcher
android:label=”@string/app_name”
android:theme=”@style/AppTheme” >
<activity
android:name=”com.cocaban.testproject.TestMainActivity”
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>
–>



<application
android:allowBackup=”true”
android:icon=”@drawable/app_icon
android:label=”@string/app_name” >
<activity
android:name=”com.cocaban.testproject.TestMainActivity”
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>

 

10. 테스트용 게임 오브젝트 및 스크립트 생성

using UnityEngine;
using System.Collections; 

public class AndroidTest : MonoBehaviour
{
private AndroidJavaObject currentActivity;

private bool showText = true;

void Awake()
{
// 현재 활성화된 액티비티 얻어와서 저장
AndroidJavaClass jc = new AndroidJavaClass

                                               (“com.unity3d.player.UnityPlayer”);
         currentActivity = jc.GetStatic<AndroidJavaObject>(“currentActivity”);
}

// Use this for initialization
void Start ()
{

}
// Update is called once per frame
void Update ()
{

}


// 유니티, 이클립스간의 호출 테스트를 위해 간단한 GUI 생성
// Test 버튼을 누르면 CallTest() 함수를 통해서 이클립스의 SendMessageTest() 함수를 호출.
// SendMessageTest() 함수는 다시 유니티의 ShowText() 함수를 호출.
void OnGUI()
{
if(showText == true)
{
GUI.Label(new Rect(0, 0, 200, 100), “Android Test!”);
}

if(GUI.Button(new Rect(0, 200, 100, 100), “Test”) == true)
{
CallTest();
}
}

// 유니티에서 이클립스 메서드 호출 테스트
// 유니티에서 이클립스 메서드를 호출하려면 AndroidJavaObject.Call() 함수를
// 이용한다. 이 소스에서는 SendMessageTest()라는 메서드를 호출함.
private void CallTest()
{
if(currentActivity != null)
{
currentActivity.Call(“SendMessageTest”);
}
}

// 이클립스에서 호출되는 함수
public void ShowText()
{
showText = !showText;
}
}

 

11. 유니티 빌드

 

. 참고 사이트

– http://westwoodforever.blogspot.kr/2013/05/unity3d-android-jar-lib.html