# Build Automation 오류 문제 해결

> Solve common issues with Build Automation failures.

## 로그에 오류가 있는지 확인##check-the-logs-for-errors

Unity Build Automation(UBA) 오류 문제를 해결하는 첫 번째 단계는 오류 로그를 확인하는 것입니다.

UBA 로그는 가시성을 높이기 위해 빨간색으로 오류 메시지를 강조 표시하고 노란색으로 경고를 표시합니다. 또한 UBA는 컴팩트 로그 탭에서 경고와 오류 메시지를 더 쉽게 찾을 수 있도록 수집하지만, 컴팩트 로그에 모든 오류가 기록되지 않으므로 전체 로그를 확인하는 것이 유용할 수 있습니다. 오류 로그가 여러 개 있고 이전 빌드가 완료된 경우 로그를 비교하여 성공적인 실행 시 표시될 수 있는 오류는 제외할 수 있습니다.

## 클린 빌드 실행##run-a-clean-build

라이브러리나 작업 공간 폴더를 캐시하는 UBA 빌드는 문제를 일으킬 수 있습니다. 타겟이 캐시를 무시하도록 만들려면 빌드를 트리거할 때 **클린 빌드** 옵션을 사용합니다.

## 로컬에서 배치 모드로 실행##run-locally-in-batch-mode

프로젝트가 에디터에서 빌드되었지만 Unity Build Automation을 통해 빌드를 완료하지 못한 경우 빌드를 생성하는 데 배치 모드를 사용하기 때문일 수 있습니다. 오류가 재현되는지 확인하려면 로컬에서 배치 모드로 실행합니다.

먼저 `Library` 폴더를 삭제하거나 소스 코드를 새 폴더로 체크아웃해야 합니다. 이렇게 하면 UBA에서 패키지를 다시 다운로드해야 합니다. 이를 통해 각 빌드에서 소스 코드를 체크아웃하는 UBA 빌드 서버의 동작을 시뮬레이션합니다.

다음은 Windows와 macOS 버전의 동일한 커맨드입니다.

> **Note:**
>
> **참고**: 몇 가지 플래그는 필요하지 않습니다. 유닛 테스트를 실행하고 싶지 않은 경우, `-testPlatform`, `-testResults`, `-runTests` 등의 플래그를 건너뛸 수 있습니다.

제공되는 디렉토리는 Unity 에디터의 기본 설치 폴더이며, 로컬 머신의 적절한 경로에 따라 조정합니다.

### Windows CMD 콘솔##windows-cmd-console

```text
"C:\Program Files\Unity\Hub\Editor\{UNITY_VERSION}\Editor\unity.exe" -batchMode -skipMissingProjectID -skipMissingUPID -buildTarget {BUILD_TARGET} -logFile C:\{SOME_PATH}\log.txt -projectPath C:\{PROJECT_PATH} -executeMethod {CLASS_AND_STATIC_METHOD_NAME_OF_BUILD_SCRIPT} -quit
```

### macOS 터미널##macos-terminal

```text
/Applications/Unity/Hub/Editor/{UNITY_VERSION}/Unity.app/Contents/MacOS/Unity -batchMode -skipMissingProjectID -skipMissingUPID -buildTarget {BUILD_TARGET} -logFile /Users/{SOME_PATH}/log.txt -projectPath /Users/{PROJECT_PATH} -executeMethod {CLASS_AND_STATIC_METHOD_NAME_OF_BUILD_SCRIPT} -quit
```

또한 테스트를 실행하고 싶은 경우 다음 태그를 추가할 수 있습니다.

* `-runTests`
* `-testPlatform {PLATFORM} // playmode or editmode`
* `-testResults {FILE_PATH_AND_FILE_NAME}.xml`

### 템플릿 빌드 스크립트##template-build-script

에디터 폴더 안에 빌드를 수행하는 정적 메서드가 포함된 빌드 스크립트를 배치합니다. 아직 에디터 폴더가 없으면 폴더를 생성합니다.

다음은 레퍼런스용 템플릿 빌드 스크립트입니다.

```text
using UnityEditor;
class MyEditorScript
{
  static void PerformBuild ()
  {
    BuildPlayerOptions buildPlayerOptions = new BuildPlayerOptions();
    buildPlayerOptions.scenes = new[] {"Assets/Scenes/MyScene.unity", ...};
    buildPlayerOptions.target = BuildTarget.iOS; // More details on BuildTarget doc
    buildPlayerOptions.options = BuildOptions.None;
    buildPlayerOptions.locationPathName = "iOSBuild";
    BuildPipeline.BuildPlayer(buildPlayerOptions);
  }
}
```

## 흔히 나타나는 문제##common-issues

일반:

* [빌드가 즉시 실패하는 경우](./builds-failing-immediately.md)
* [프로젝트 오류를 인식하지 못하는 경우](./unrecognized-project-error.md)
* [Git 하위 모듈 사용 시 클론 지연](./git-clone-hangs.md)
* [라이트맵 베이킹](./lightmap-baking.md)

플랫폼 관련 문제:

* [Android 빌드 오류](./android-build-failures.md)
* [새 Xcode 버전으로 마이그레이션한 후 발생하는 오류](./error-migrating-xcode.md)
* [OSX 공증 오류](./osx-notarization-failure.md)
* [Xcode 익스포트 중 iOS Build Automation 문제](./xcode-export-issues.md)
* [iOS 빌드를 Unity Build Automation에서 다운로드하거나 설치할 수 없는 경우](./ios-build-download-issue.md)
