# 애플리케이션 패치

> Perform an application patch, rather than a full build, to increase iteration speed.

Android용 애플리케이션을 빌드하는 데는 상당한 시간이 소요될 수 있습니다. 개발 중에 더 빠르게 반복하려면 애플리케이션 패키지를 다시 빌드하는 대신 패치하면 됩니다. 애플리케이션 패키지를 패치할 때 Unity는 마지막 패치 이후에 변경한 파일만 처리하고 연결된 Android 기기로 전송합니다.

## 애플리케이션 패치##patching-an-application

애플리케이션을 패치하려면 Unity 에디터를 사용하거나, 자체 빌드 파이프라인을 구현한다면 스크립팅 API를 사용할 수 있습니다.

애플리케이션을 처음 패치하면 Unity가 기기에 패치 애플리케이션 환경을 설정합니다. 이렇게 하면 첫 번째 패치 이후에는 패치에 걸리는 시간이 단축됩니다.

### 에디터 사용##from-the-editor

Unity 에디터에서 애플리케이션을 패치하려면 다음 단계를 따르십시오.

1. Build Settings 창(메뉴: **File** > **Build Settings**)을 엽니다.
2. **Platform** 리스트에서 **Android** 플랫폼을 선택합니다.
3. **Development Build**를 활성화합니다.
4. **Patch**를 선택하거나, Unity가 빌드를 완료한 후에 패치를 실행할 경우 **Patch And Run**을 선택합니다.


**Android Build Settings 창:**
![](/api/media?file=/engine/6000.0/media/images/android-app-patching.png)

### 스크립팅 API 사용##using-the-scripting-api

자체 빌드 파이프라인을 구현하는 경우 스크립팅 API를 사용하여 애플리케이션을 패치할 수 있습니다. 이렇게 하려면 [BuildOptions.BuildScriptsOnly](/engine/6000.0/script-reference/unity-editor/build-options/build-scripts-only.md) 및 [BuildOptions.PatchPackage](/engine/6000.0/script-reference/unity-editor/build-options/patch-package.md) 옵션을 [BuildPipeline.BuildPlayer](/engine/6000.0/script-reference/unity-editor/build-pipeline/build-player.md) 메서드에 전달합니다.

예시:

```c#
BuildPlayerOptions buildPlayerOptions = new BuildPlayerOptions();
buildPlayerOptions.scenes = new[] { "Assets/Scene1.unity"};
buildPlayerOptions.target = BuildTarget.Android;
// Use Patch & Run for all builds for optimal turn-around times.
// (In prior versions, an initial regular Build & Run was necessary.)
buildPlayerOptions.options = BuildOptions.PatchPackage | BuildOptions.AutoRunPlayer | BuildOptions.Development;
BuildPipeline.BuildPlayer(buildPlayerOptions);
```

## 애플리케이션 패치 작동 방법##how-application-patching-works

애플리케이션을 패치하면 Unity는 다음을 수행합니다.

* 컴파일된 Java 소스를 모두 포함하는 최소 APK를 생성합니다.
* 마지막 패치 이후 변경된 파일을 가져와 애플리케이션 캐시 폴더 내 디렉토리 `/storage/emulated/0/Android/data/<PackageName>/pram-shadow-files/`에 저장합니다.
* [Il2cpp](/engine/6000.0/manual/scripting/compilation-and-code-reload/backends/il2cpp.md)를 사용하여 컴파일된 스크립트를 포함한 네이티브 라이브러리 파일을 애플리케이션의 데이터 디렉토리 `/data/data/<PackageName>/pram-shadow-files/lib/`에 저장합니다.

애플리케이션이 시작되면 APK 내부에 마커 파일이 있는지 확인합니다. 마커가 존재하는 경우 애플리케이션은 파일 읽기를 `pram-shadow-files` 디렉토리로 리디렉션합니다.

**Build & Run**은 패치 파일을 삭제하지 않습니다. 대신 APK 설치를 대체합니다. 이렇게 하면 `pram-shadow-files` 디렉토리에 대한 리디렉션이 비활성화됩니다. 즉 후속 패치 빌드는 변경되지 않은 파일을 재사용할 수 있습니다.

## 패치 파일 지우기##clearing-patch-files

Android 스토리지 설정을 사용하여 애플리케이션의 캐시를 지울 수 있습니다. 캐시를 지우면 애플리케이션 패치 빌드 프로세스에서 설치된 패치 파일이 제거됩니다.

애플리케이션의 캐시 삭제 방법은 Android 기기에 따라 다릅니다. 기기에 해당하는 방법를 찾으려면 다음 단계를 따르십시오.

1. [기기 제조업체의 지원 받기](https://support.google.com/android/answer/3094742)로 이동합니다.
2. 기기 제조업체를 찾고 해당 지원 사이트 링크를 따릅니다.
3. 지원 사이트에서 애플리케이션의 캐시 삭제 방법을 검색합니다.
