유니티 프로그램은 두가지의 빌드 방법이 존재합니다.

 

Mono와 il2cpp 두가지 방식이 존재하며, 각각의 빌드에 관해 알아보겠습니다.

 

1) Mono

Unity는 다양한 플랫폼을 지원하기 위해 Cross-compile 플랫폼을 제공하며, 이를 위해 C#을 사용합니다.

 

C#코드는 msc.exe라는 프로그램에 의해 IL코드로 변환됩니다.

 

예제 C# 코드를 통해 Mono 방식으로 빌드된 앱의 구동방법을 확인해보겠습니다.

[code language=”csharp”]
using UnityEngine;
using System.Collections;

public class HelloWorld : MonoBehaviour {
void Start() {
Debug.Log ("Hello, World!");
}
}
[/code]

 

해당 예제 코드를 Build를 하면, Assembly-CSharp.dll 파일이 생성됩니다.

 

[code language=”csharp”]
.class public auto ansi beforefieldinit HelloWorld
extends [UnityEngine]UnityEngine.MonoBehaviour
{
// Methods
.method public hidebysig specialname rtspecialname
instance void .ctor () cil managed
{
// Method begins at RVA 0x2050
// Code size 7 (0x7)
.maxstack 8

IL_0000: ldarg.0
IL_0001: call instance void [UnityEngine]UnityEngine.MonoBehaviour::.ctor()
IL_0006: ret
} // end of method HelloWorld::.ctor

.method private hidebysig
instance void Start () cil managed
{
// Method begins at RVA 0x2058
// Code size 11 (0xb)
.maxstack 8

IL_0000: ldstr "Hello, World!"
IL_0005: call void [UnityEngine]UnityEngine.Debug::Log(object)
IL_000a: ret
} // end of method HelloWorld::Start

} // end of class HelloWorld
[/code]

 

해당 형태를 IL(Intermediate Language)이라고 하며, 해당 코드가 실제로 실행됩니다.

 

IL코드는 Assembly 코드와 형태가 비슷하지만, IL코드 실행을 위해서는 IL코드를 Assembly 코드로 변환해야 하며 이를 위해 mono(libmono.so)를 사용합니다.

 

mono가 IL코드를 Assembly로 변환하여 실행하게 됩니다.

 

2) il2cpp

il2cpp는 앞서 설명했던 IL 코드를 C++ native code로 변환하여 실행할 수 있도록 하는 빌드방법입니다.

때문에 Assembly-CSharp.dll 파일 대신, libil2cpp.so 파일의 결과물이 생성되며 IL코드가 C++ native code(libil2cpp.so)로 변화되어 기기에서 실행됩니다.

 

출처

blogs.unity3d.com/kr/2015/09/22/kr-csharp-compile-il2cpp/

 

C# 컴파일 그리고 il2cpp - Unity Technologies Blog

이글은 il2cpp를 이해하기전에, C#의 컴파일 과정을 설명하는 글입니다. 사실 il2cpp가 나온지 꽤 되서, 저보다 더 자세히 아시는 분들도 많을꺼라 생각됩니다. 이 블로그는 아직 il2cpp를 잘 모르는, �

blogs.unity3d.com

chp747.tistory.com/334

 

Unity Mono 분석

Unity Mono 분석 .Net Framwork Microsoft에서 개발한 Windows 프로그램 개발 및 실행 환경을 말합니다. 다양한 프로그래밍 언어와 라이브러리들을 이용하여 윈도우 기반 응용프로그램을 개발 및 실행할 수

chp747.tistory.com

 

chp747.tistory.com/m/310?category=724021

'Mobile Game' 카테고리의 다른 글

Unity Mono 게임 분석  (0) 2020.10.11
Mobile Game Engine  (0) 2020.10.10

+ Recent posts