> ## Documentation Index
> Fetch the complete documentation index at: https://devdocs.xbox.com/llms.txt
> Use this file to discover all available pages before exploring further.

# Submission Validator 품질 검사

> Submission Validator 품질 검사

Submission Validator가 식별하는 문제 유형은 시간이 지남에 따라 성장하고 발전합니다. 목표는 제출부터 인증까지, 그리고 시장까지의 과정을 매끄럽게 만드는 것입니다.

Submission Validator는 다음 품질 검사를 실행합니다.

* [사용 가능한 버전](#ID4EY)
* [승인된 GDK 버전](#ID4AGDK)
* [승인된 Game OS](#ID4EKB)
* [콘텐츠(다운로드 가능 콘텐츠(DLC))의 최종 청크에 launch 마커](#ID4EHD)
* [추가 Resources.pri 파일](#ID4EDE)
* [Resources.pri 파일 누락](#ID4ERF)
* [패키지당 하나의 애플리케이션](#ID4EBBAC)
* [최대 패키지 크기](#ID4E3BAC)
* [외부 파일](#ID4EDCAC)
* [바이너리 스캔](#ID4EEEAC)
* [Microsoft(MS) 구성 요소 버전](#ID4ESFAC)
* [종속 파일 누락](#ID4MDF)
* [ARM64 바이너리](#IDDKDF)

<a id="ID4EY" />

## 사용 가능한 버전

Submission Validator는 설치한 버전이 가장 최신의 올바른 버전인지 확인합니다. 그렇지 않은 경우 Submission Validator 출력 로그에 실패가 표시됩니다. 다음 섹션에 표시된 실패 메시지에는 올바른 버전을 다운로드할 수 있는 링크가 포함되어 있습니다.

```xml theme={null}
<component>Available Version Check</component>
<failure>A required update to Submission Validator is available. The latest version can be downloaded from https://aka.ms/currentsubvalzip. Download and install the update, then rebuild the package. Contact your 
Developer Account Manager for assistance.</failure> 
```

<a id="ID4AGDK" />

## 승인된 GDK 버전

PC용 GDK 패키지(msixvc)를 만들면 Submission Validator는 패키징에 사용한 GDK가 승인된 GDK 버전인지 확인합니다. 버전이 승인 또는 사용 중단 목록에 없으면 검증기 로그에 실패가 표시됩니다.

```xml theme={null}
<failure>ILI_PcGdkUnsupportedThe GDK used to compile your binaries is not supported. Use only supported GDK versions according to the Approved Libraries page located at https://aka.ms/GdkApprovedLibs</failure>
```

버전이 사용 중단 목록에 있으면 검증기 로그에 정보성 메시지가 표시됩니다. 이 메시지는 버전이 만료되어 더 이상 핫픽스를 받지 못할 것임을 나타냅니다.

```xml theme={null}
<info>The GDK used to compile your binaries is expired and will no longer receive hotfixes.</info>
```

Submission Validator가 패키지에 포함된 파일에서 GDK 버전을 확인할 수 없는 경우(예: 파일이 암호화된 경우) 다음 메시지가 표시됩니다.

```xml theme={null}
<info>A GDK version was not able to be extracted from your game executable. The version of the tools used for packaging will be used as the GDK version for this submission. If this is not correct, ensure any executables listed in your MicrosoftGame.config include XGameRuntime.h or you include appropriate middleware which consumes this header. See https://aka.ms/EmbeddedGdkVersion for more information.</info>
```

<a id="EmbeddedGdkVersion" />

### GDK 버전이 게임 실행 파일에 포함되는 방법

`XGameRuntime.h`를 포함하는 GDK로 게임 실행 파일을 컴파일하면 컴파일러는 GDK 버전을 `.xbld`라는 사용자 지정 PE 섹션에 임베딩합니다. Submission Validator는 이 섹션을 읽어서 타이틀의 바이너리를 빌드하는 데 어떤 GDK 버전이 사용되었는지 확인합니다.

`.xbld` 섹션이 누락되었거나 읽을 수 없는 경우, Submission Validator는 제출에 사용된 GDK 버전으로 패키징 도구의 버전을 대체 사용합니다. 이 버전은 바이너리를 컴파일하는 데 사용된 GDK 버전을 정확하게 나타내지 않을 수 있습니다.

**일반적인 원인: 안티탬퍼 소프트웨어**

실행 파일을 처리하는 안티탬퍼 및 데이터 암호화 도구는 `.xbld` 섹션을 암호화하거나 제거할 수 있습니다. 이 작업으로 인해 Submission Validator가 섹션을 읽을 수 없게 됩니다. 이 문제를 해결하려면 안티탬퍼 도구에서 `.xbld` 섹션을 처리에서 제외하도록 구성하세요.

#### Themida

Themida 구성 파일에 다음 **Advanced Option**(쉼표로 구분)을 추가하여 `.xbld` 섹션을 보호에서 제외합니다.

```
OPTION_ADVANCED_DONT_PROCESS_SECTIONS=.xbld
```

#### GuardIT

GuardIT에서 `.xbld` 섹션을 데이터 암호화에서 제외하려면 암호화 가드 구성에 `<exclude>` 항목을 추가하세요.

```xml theme={null}
<guard_cmd name="EncryptionWrapper">
    <encryption_wrapper>
        <action>
            <fail />
        </action>
        <algorithm_decryption>
            <use>AES128</use>
        </algorithm_decryption>
        <algorithm_integrity>
            <use>fast</use>
        </algorithm_integrity>
        <protected_types>
            <custom>
                <data>true</data>
                <native_code>true</native_code>
                <unused_areas>true</unused_areas>
            </custom>
        </protected_types>
        <exclude>
            <range>
                <section matching="exact">.xbld</section>
            </range>
        </exclude>
        <debug>false</debug>
        <disable>false</disable>
    </encryption_wrapper>
</guard_cmd>
```

`<exclude>` 섹션은 `.xbld`가 암호화되는 것을 방지합니다.

<a id="ID4EKB" />

## 승인된 game OS

Submission Validator는 Microsoft Game Development Kit(GDK)의 game OS와 모든 선택적 구성 요소가 동일한 Microsoft Game Development Kit(GDK) 릴리스에 속하는지, 그리고 출시된 타이틀에서 사용하도록 승인된 버전인지 확인합니다. 버전이 승인 또는 사용 중단 목록에 없으면 검증기 로그에는 다음 섹션에 나오는 것과 같은 실패가 포함됩니다.

```xml theme={null}
<failure>The GameOS included in this package is not an approved version. Use only 
supported GameOS versions according to the Approved Libraries page on the Developer 
Network Portal</failure>  
```

버전이 사용 중단 목록에서 발견되면 검증기 로그에는 정보성 메시지가 포함됩니다. 이 메시지는 다음 섹션에 나오는 것과 같이, 버전이 만료되었고 더 이상 핫픽스를 받지 못할 것임을 나타냅니다.

```xml theme={null}
<info>The GameOS included in this package is expired and will no longer receive hotfixes.</info>  
```

구성 요소의 버전이 서로 일치하지 않거나 버전이 승인 또는 사용 중단 목록에 없는 경우, 검증기 로그에는 다음 섹션에 나오는 것과 같은 실패가 포함됩니다.

```xml theme={null}
<failure>The GameOS version does not match the version of other Microsoft components 
included in this package. Use only components from the same Microsoft Game Development Kit (GDK)/Xbox One Software Development Kit release. Refer to the 
Approved Libraries page on the Developer Network Portal</failure>  
```

<Note>Submission Validator를 실행하는 개발 PC가 온라인 정보에 액세스할 수 없는 경우(예: 인터넷 액세스가 없거나 방화벽에 의해 차단되었거나 네트워크 연결이 없는 경우) 검증 확인을 완료하지 못할 수 있습니다.</Note>

<a id="ID4EHD" />

## 콘텐츠(다운로드 가능 콘텐츠(DLC))의 최종 청크에 launch 마커

모든 시나리오에서 적절한 작동을 보장하기 위해 콘텐츠 패키지는 최종 청크에 launch 마커 특성을 표시해야 합니다. 최종 청크에 launch 마커가 포함되지 않은 경우, 패키지가 올바르게 테스트될 수는 있지만 일부 경우 최종 사용자에게 문제를 일으킬 수 있습니다. 실패 메시지는 다음과 같습니다.

```xml theme={null}
<failure>Content Packages require final layout chunk to include attribute marker="Launch"</failure>  
```

<a id="ID4EWD" />

<a id="ID4EDE" />

## 추가 Resources.pri 파일

Submission Validator는 레이아웃의 다른 디렉터리에 추가 *Resources.pri* 파일이 없는지 확인합니다. *MicrosoftGame.config*와 마찬가지로 루트에 있는 것만 사용됩니다. 그러나 여러 복사본이 있으면 어느 것이 올바른지, 이 다른 파일들에 대한 개발자의 의도가 무엇인지에 대한 혼란을 초래할 수 있습니다.

이 확인은 MicrosoftGame.config의 추가 복사본에 대한 유사한 확인과 병렬입니다. 이 경우 추가 복사본은 다음과 같이 로그의 외부 파일 확인 섹션에 실패를 초래합니다.

```xml theme={null}
<failure>D:\path\mytitle\mytitlesubdirectory\resources.pri</failure>  
```

<a id="ID4ERF" />

## Resources.pri 파일 누락

애플리케이션은 지역화될 필요가 없습니다. 그러나 애플리케이션이 루트(MicrosoftGame.config와 동일한 위치)에 *Resources.pri* 파일을 포함하지 않는 경우, 출력 로그의 외부 파일 확인 섹션에 다음 경고가 나타납니다.

```xml theme={null}
<warning>Non-localized app: 'resources.pri' is missing</warning>  
```

<a id="ID4EBBAC" />

## 패키지당 하나의 애플리케이션

Submission Validator는 이제 패키지가 패키지당 DevOnly가 아닌 애플리케이션 하나만 포함하는지 확인합니다.

<a id="ID4E3BAC" />

## 최대 패키지 크기

디스크로 출시하는 경우, Submission Validator는 패키지 크기가 49,900,000,000바이트를 초과하지 않는지 확인합니다. 이 확인은 오류가 아닌 정보성 메시지만 제공합니다.

디스크로 출시하지 않는 경우, Submission Validator는 패키지 크기가 500GB를 초과하지 않는지 확인합니다. 또한 패키지 크기가 450GB를 초과하면 경고 메시지를 제공합니다. 메시지는 다음과 같습니다.

```xml theme={null}
(WARNING) ILI_XvcPackageSizeApproached: "The size of this package is approaching the maximum allowed size for uploading to Partner Center. The maximum size of a package for uploading to Partner Center is {0} GB."
```

```xml theme={null}
(FAILURE) ILI_XvcPackageSizeExceeded: "The size of this package exceeds the maximum allowed size for uploading to Partner Center. The maximum size of a package for uploading to Partner Center is {0} GB."
```

<a id="ID4EDCAC" />

## 외부 파일

XBOX 360 프로그램의 제출을 검토할 때 발생하는 한 가지 문제는 소매 타이틀의 일부가 되어서는 안 되는 다양한 파일이 일반적으로 실수로 제출에 포함되는 것입니다.

외부 파일 확인은 레이아웃 .xml 파일을 사용하여 패키지에 허용되지 않는 특정 파일 이름과 확장자에 대해 타이틀 패키지로 가져온 모든 파일을 확인합니다. 이 확인은 파일 내용이 아닌 파일 이름만을 기반으로 합니다. 허용되지 않는 파일에는 소스 및 디버그 파일과 관련된 확장자, Thumb.db, 루트에 있는 것 이외의 불필요한 등록 파일, 타이틀 패키지에 표시될 수 없는 XBOX 운영 체제 파일의 전체 목록이 포함됩니다. 이 확인은 XBOX Requirement XR-003: Title Quality for Submission을 검증합니다.

다음 표는 제출된 타이틀 패키지에 허용되지 않는 파일 유형과 확장자를 보여줍니다.

| 파일 유형        | 확장자                          |
| ------------ | ---------------------------- |
| 소스 코드 관련 파일  | .c .cpp, .cs, .lib, .h, .obj |
| 디버그/심볼 정보 파일 | .pdb, .sym                   |
| 기존 바이너리 파일   | .xbe                         |

타이틀은 상상할 수 있는 거의 모든 파일 확장자를 정당하게 사용할 수 있으며, 이는 확장자 확인과의 잠재적 충돌을 초래할 수 있습니다. 이 상황이 타이틀에 영향을 미치는 경우 Partner Development Manager(PDM)에게 알려주세요.

Submission Validator 로그에서 실패 메시지를 받고 있는 파일을 타이틀 패키지에 포함해야 하는 예외적인 경우가 있다고 판단되면 PDM과 상의하세요.

다음 예제는 외부 파일 확인에서 실패를 보고하는 로그 출력을 보여줍니다.

```xml theme={null}
<component>Foreign File Check</component>
<failures>
  <failure>c:\MyTitle\loose\bar.cpp</failure>
  <failure>c:\MyTitle\loose\MySubDir\example.h</failure>
  <failure>c:\MyTitle\loose\MySubDir\PDBs\BlockedFiles\foo.pdb</failure>
</failures>
<filecount>3</filecount>  
```

<a id="ID4EEEAC" />

## 바이너리 스캔

XBOX 콘솔 바이너리(.exe 및 .dll) 파일은 AMD64용으로 빌드되어야 하며 네이티브 코드만 있어야 합니다. 현재 플랫폼은 관리형 코드 바이너리를 지원하지 않습니다. 바이너리 스캔 확인은 타이틀 패키지에 포함된 각 .exe 및 .dll 파일을 검사하고 이러한 요구 사항을 충족하는지 확인합니다. 이 확인을 사용하여 XR-003: Title Quality for Submission을 검증합니다.

바이너리 스캔 섹션에서는 각 .exe 및 .dll 파일에 대해 소매 콘솔에서 보안상의 이유로 차단된 종속성을 확인합니다. 일반적으로 이 차단은 플랫폼 파일, PIXEvt.dll 또는 XBOX Studio의 디버그 버전에 대한 링크의 형태를 취합니다.

다음 예제는 바이너리 스캔 확인에서 실패를 보고하는 로그 출력을 보여줍니다. 처음 두 실패는 소매 콘솔에서 허용되지 않는 두 파일에 대한 .exe 파일 링크로 인해 발생합니다. 세 번째 실패는 관리형 .exe 파일입니다. 마지막 실패는 AMD64가 아닌 네이티브 코드 .dll 파일입니다.

```xml theme={null}
<component>Binary Scan</component>
      <dumpbinlocation>C:\Program Files (x86)\Microsoft Visual Studio 10.0\VC\bin\amd64\dumpbin.exe</dumpbinlocation>
      <failures>
   <failure>Non-retail dependency in file c:\MyTitle\loose\ExeWithDebugDependencies.exe: MSVCR110D.dll</failure>
  <failure>Non-retail dependency in file c:\MyTitle\loose\ExeWithDebugDependencies.exe: PIXEvt.dll</failure>
  </failures>
  <failure>Managed: Not AMD64: c:\MyTitle\loose\MySubDir\ABC.exe</failure>
  <failure>Not AMD64: c:\MyTitle\loose\MySubDir\XYZ.dll</failure>
</failures>  
```

개발자는 제출 패키지에 포함할 바이너리의 릴리스 빌드에서 이러한 디버깅 중심 종속성이 제외되었는지 확인해야 합니다.

<a id="ID4ESFAC" />

## Microsoft 구성 요소 버전

Game OS는 XBOX의 플랫폼 표면 영역을 상당 부분 다룹니다. 그러나 타이틀은 Microsoft에서 제공하는 바이너리 세트를 재배포합니다. XBOX Developer Forums 사이트의 [Approved Libraries](https://aka.ms/GdkApprovedLibs) 페이지에는 이러한 파일과 그 승인된 버전이 나열되어 있습니다.

Submission Validator는 이러한 파일의 버전을 확인하여 모든 선택적 DLL 파일이 일치하는 버전인지 확인합니다. 또한 배타적 파티션 타이틀이 XVC로 패키지하는 Game OS의 버전 ID를 캡처합니다. 제출 전에 게시된 승인된 라이브러리 정보에 대해 버전을 확인하세요.

Submission Validator는 타이틀에 포함되어 있는 경우 선택적 Kinect 및 XBOX Services DLL 파일에 대한 버전 정보도 추출합니다.

다음 예제는 Submission Validator 로그 파일에 표시되는 버전 정보를 보여줍니다.

```xml theme={null}
<component>MS Component Versions</component>
<component name="GameOS">60BBA05C-22F0-4452-84B6-DD278594716E</component>
<component name="Microsoft.Xbox.Services.dll">10.0.18362.7198</component>  
```

<a id="ID4MDF" />

## 종속 파일 누락

종속 라이브러리에 대해 동적으로 링크할 때 이러한 라이브러리가 누락된 경우, Submission Validator는 다음과 같은 실패를 포함시킵니다.

```xml theme={null}
<failure>{0}: Binary file has a dependency on a file that is not included in the layout: {1}. This file must be included in the layout for your package.</failure>
```

<a id="IDDKDF" />

## ARM64 바이너리

기존 x64 컴파일 실행 파일과 함께 PC용 게임 패키지에 ARM64 바이너리를 포함할 수 있습니다. Submission Validator는 MicrosoftGame.config가 적절한 실행 파일을 올바르게 참조하는지 확인합니다.

```xml theme={null}
<failure>Executable with the Architecture attribute set to ARM64 is not compiled for the ARM64 platform. Please ensure the attributes are set correctly for this executable in your MicrosoftGame.config file.</failure>
```

```xml theme={null}
<failure>Executable is compiled for the ARM64 platform but does not have the Architecture attribute set to ARM64. Please ensure the attributes are set correctly for this executable in your MicrosoftGame.config file.</failure>
```

<a id="ID4E5OAC" />

## 참고 항목

[Submission Validator(SubmissionValidator.dll)](/build/core-features/common/packaging/subval/submissionvalidator)

[Submission Validator 메시지](/build/core-features/common/packaging/subval/submissionvalidator-messages)

[Make package(makepkg.exe)](/build/core-features/common/packaging/deployment/makepkg)

[타이틀 패키징, 콘텐츠 업데이트, 스트리밍 설치 테스트](/build/core-features/common/packaging/title-packaging-streaming-install-testing)

XBOX Requirements(XR) [(XBOX Developer Downloads->Partner, Publishing, and Release Management Information->XGD Partner Documentation)](https://aka.ms/xgddl)


## Related topics

- [Submission Validator(SubmissionValidator.dll)](/ko/build/core-features/common/packaging/subval/submissionvalidator.md)
- [Submission Validator (SubVal) 품질 검사 참고서](/ko/build/core-features/common/packaging/subval/index.md)
- [Submission Validator 메시지](/ko/build/core-features/common/packaging/subval/submissionvalidator-messages.md)
- [XR-003 제출용 타이틀 품질](/ko/publishing/certification/xr/xr-003.md)
- [패키지(클래식 환경)](/ko/publishing/game-publishing/concepts/packages-overview.md)
