자산 패키지 소개

Important

스토어에 앱을 제출하려는 경우 Windows 개발자 지원에 문의하고 자산 패키지를 사용하도록 승인을 받아야 합니다.

자산 패키지는 애플리케이션의 공통 파일에 대한 중앙 집중식 위치 역할을 하는 패키지 유형으로, 아키텍처 패키지 전체에서 중복된 파일의 필요성을 효과적으로 제거합니다. 자산 패키지는 모두 앱 실행에 필요한 정적 콘텐츠를 포함하도록 설계되었지만 사용자의 시스템 아키텍처, 언어 또는 표시 규모에 관계없이 모든 자산 패키지가 항상 다운로드된다는 측면에서는 다릅니다.

Asset Package Bundle Diagram

자산 패키지에는 모든 아키텍처, 언어 및 확장 관련 파일이 포함되어 있으므로 자산 패키지를 활용하면 전체 패키지 앱 크기가 줄어듭니다(이러한 파일은 더 이상 중복되지 않으므로). 대규모 앱에 대한 로컬 개발 디스크 공간 사용량을 관리하고 일반적으로 앱의 패키지를 관리하는 데 도움이 됩니다.

자산 패키지는 게시에 어떤 영향을 미치나요?

자산 패키지의 가장 확실한 이점은 패키지된 앱의 크기 축소입니다. 작은 앱 패키지는 스토어에서 파일을 더 적게 처리하도록 하여 앱의 게시 프로세스를 가속화합니다. 그러나 자산 패키지의 가장 중요한 이점은 아닙니다.

자산 패키지를 만들 때 패키지를 실행할 수 있는지 여부를 지정할 수 있습니다. 자산 패키지는 아키텍처에 구애받지 않는 파일만 포함해야 하므로 일반적으로 .dll 또는 .exe 파일이 포함되지 않으므로 자산 패키지의 경우 일반적으로 실행할 필요가 없습니다. 이러한 구분의 중요성은 게시 프로세스 중에 모든 실행 가능한 패키지를 검사하여 맬웨어가 포함되지 않도록 해야 하며, 이 검사 프로세스는 더 큰 패키지에 더 오래 걸립니다. 그러나 패키지가 실행 불가능으로 지정된 경우 앱을 설치하면 이 패키지에 포함된 파일을 실행할 수 없습니다. 이렇게 보장하면 전체 패키지 검색이 필요하지 않으며 앱 게시 중(및 업데이트의 경우) 맬웨어 검색 시간이 크게 단축되므로 자산 패키지를 사용하는 앱의 게시 속도가 훨씬 빨라집니다. 플랫 번들 앱 패키지는 스토어에서 각 .appx 또는 .msix 패키지 파일을 병렬로 처리할 수 있기 때문에 이 게시 혜택을 얻기 위해 사용해야 합니다.

자산 패키지를 사용해야 하나요?

자산 패키지의 사용을 활용하도록 앱의 파일 구조를 업데이트하면 패키지 크기 감소 및 개발 반복이라는 실질적인 이점이 얻을 수 있습니다. 아키텍처 패키지에 공통적으로 상당한 양의 파일이 포함되거나 앱의 대부분이 실행되지 않는 파일로 구성된 경우 자산 패키지 사용으로 변환하는 데 추가 시간을 투자하는 것이 좋습니다.

그러나 자산 패키지는 앱 콘텐츠 선택성을 달성하기 위한 수단이 아니라는 주의를 기울여야 합니다. 자산 패키지 파일은 선택 사항이 아니고 대상 디바이스의 아키텍처, 언어 또는 규모에 관계없이 항상 다운로드됩니다. 앱에서 지원하려는 선택적 콘텐츠는 선택적 패키지를 사용하여 구현해야 합니다.

자산 패키지를 만드는 방법

자산 패키지를 만드는 가장 쉬운 방법은 패키징 레이아웃을 사용하는 것입니다. 그러나 MakeAppx.exe를 사용하여 자산 패키지를 수동으로 만들 수도 있습니다. 자산 패키지에 포함할 파일을 지정하려면 "매핑 파일"을 만들어야 합니다. 이 예제에서 자산 패키지의 유일한 파일은 "Video.mp4"이지만 모든 자산 패키지의 파일은 여기에 나열되어야 합니다. ResourceMetadata의 ResourceDimensions 지정자는 자산 패키지에 대해 생략됩니다(리소스 패키지의 매핑 파일과 비교 ).

[ResourceMetadata]
"ResourceId"        "Videos"

[Files]
"Video.mp4"         "Video.mp4"

다음 명령 중 하나를 사용하여 MakeAppx.exe(MSIX 및 .appx용)를 사용하여 자산 패키지를 만듭니다.

MakeAppx.exe pack /r /m AppxManifest.xml /f MappingFile.txt /p Videos.appx
MakeAppx.exe pack /r /m AppxManifest.xml /f MappingFile.txt /p Videos.msix

여기서는 AppxManifest(로고 파일)에서 참조되는 모든 파일을 자산 패키지로 이동할 수 없습니다. 이러한 파일은 아키텍처 패키지 간에 중복되어야 합니다.

자산 패키지에는 resources.pri도 포함되어서는 안 됩니다. MRT를 사용하여 자산 패키지 파일에 액세스할 수 없습니다. 자산 패키지 파일에 액세스하는 방법과 자산 패키지에 NTFS 드라이브에 앱을 설치해야 하는 이유에 대한 자세한 내용은 자산 패키지 및 패키지 폴딩을 사용하여 개발을 참조하세요.

자산 패키지를 실행할 수 있는지 여부를 제어하려면 AppxManifest의 Properties 요소에서 uap6:AllowExecution을 사용할 수 있습니다. 또한 최상위 패키지요소에 uap6을 추가하여 다음이 됩니다.

<Package IgnorableNamespaces="uap uap6" 
xmlns:uap6="http://schemas.microsoft.com/appx/manifest/uap/windows10/6" 
xmlns:uap="http://schemas.microsoft.com/appx/manifest/uap/windows10" 
xmlns="http://schemas.microsoft.com/appx/manifest/foundation/windows10">

지정하지 않으면 AllowExecution의 기본값은 true입니다. 실행 파일이 없는 자산 패키지에 대해 false로 설정하여 게시 속도를 빨라야 합니다.