macOS 애플리케이션에는 빌드 프로세스를 변경하는 플랫폼별 요구 사항이 있습니다. 또한 macOS 애플리케이션을 호스트할 수 있는 일부 디지털 배포 서비스도 요구 사항이 다릅니다. 예를 들어 Mac 앱 스토어에서는 업로드 프로세스에 공증과 유사한 콘텐츠 확인이 포함되어 있기 때문에 애플리케이션을 공증하지 않아도 됩니다. 빌드를 사용하여 특정 디지털 배포 서비스를 타겟팅하는 경우 먼저 디지털 배포 서비스에 대한 문서에서 요구 사항이 다른지 확인해야 합니다.
macOS용 애플리케이션을 빌드하기 전에 Apple 기기 간의 칩셋 차이를 알아야 합니다. Apple의 몇몇 기기는 Intel 칩셋을 사용하며 다른 기기는 Apple Silicon을 사용합니다. Unity를 사용하여 아키텍처별 빌드와 Intel과 Apple Silicon을 타겟으로 하는 빌드 모두를 생성할 수 있습니다. 사용할 수 있는 타겟 아키텍처는 다음과 같습니다.
Unity 애플리케이션을 빌드하려면 다음의 단계를 따르십시오.
macOS 애플리케이션은 애플리케이션에 대한 메타데이터와 설정 정보가 포함된 Info.plist
라고 불리는 정보 프로퍼티 리스트 파일이 필요합니다. 해당 파일은 키 값 페어 리스트로 구성됩니다. 정보 프로퍼티 리스트 파일에 대한 자세한 내용은 정보 프로퍼티 리스트 파일 정보를 참조하십시오. 특히 Info.plist
에 대한 자세한 내용은 Info.plist 키 및 값 정보를 참조하십시오.
애플리케이션을 빌드할 때 Unity는 Info.plist
파일을 생성합니다. 그런 다음 이 파일을 ApplicationName.app > Contents > Info.plist에 저장합니다. Unity는 애플리케이션을 빌드하기 전에 설정할 수 있는 플레이어 설정 창의 필수 Info.plist
설정 프로퍼티를 표시합니다. 이러한 프로퍼티는 Other Settings > Mac App Store Options 섹션에 있습니다.
Info.plist
파일에 넣을 수 있는 추가 키가 있습니다. 이러한 키를 추가하려면 애플리케이션을 빌드하고 텍스트 에디터를 사용하여 파일을 편집해야 합니다. 사용 가능한 키에 관한 자세한 내용은 Info.plist 키 및 값 정보를 참조하십시오.
macOS 애플리케이션은 애플리케이션이 특정한 동작을 하거나 하지 않도록 하는 권한이나 제한 사항을 지정하는 자격이 필요합니다. 최소한 애플리케이션은 반드시 Hardened Runtime을 초래하는 자격을 포함해야 합니다. 이러한 자격은 애플리케이션에 코드 주입을 방지하고, 동역학적으로 연결된 라이브러리 하이재킹과 메모리 조작을 방지합니다.
자격을 정의하기 위해 macOS 애플리케이션은 .entitlements
파일 확장자를 가진 xml 파일을 사용합니다. 그러면 macOS 애플리케이션은 코드 서명 프로세스를 사용하여 애플리케이션에 자격을 바인드합니다.
애플리케이션이 macOS 플랫폼별 동작을 수행하는 플러그인을 사용하는 경우 해당 동작을 허용하기 위해 자격을 추가해야 할 수 있습니다. 자격이 필요한 동작에 관한 자세한 내용은 Apple 개발자 자격을 참조하십시오.
코드 서명은 개발자가 코드 서명을 생성할 때 애플리케이션의 콘텐츠를 요약합니다. Apple 기기는 애플리케이션의 코드 서명을 사용하여 개발자가 코드 서명을 생성한 이후에 발생한 변경 사항을 감지합니다. 이렇게 하면 애플리케이션의 무결성과 조작에 대한 보안을 보장할 수 있습니다. 애플리케이션에 코드 서명이 없는 경우 해당 기기는 최종 사용자가 애플리케이션을 열기 전에 경고를 표시합니다. 애플리케이션에 대한 코드 서명을 생성하는 프로세스는 코드 서명(code signing)이라고 부릅니다. 코드 서명의 기술적 세부 사항에 대한 자세한 내용은 뎁스에서 macOS 코드 서명을 참조하십시오.
Unity는 개발하는 플랫폼에 관계 없이 macOS용으로 빌드하는 모든 애플리케이션에 자동으로 코드 서명을 합니다. 이렇게 하면 조작을 방지하고 애플리케이션이 경고 없이 작동할 수 있게 하지만 개발자로 식별하지는 않습니다. 이는 애플리케이션을 실행하기엔 충분하지만 공증하기에는 충분하지 않습니다. 공증하려면 애플리케이션에 개발자 또는 조직의 ID로 서명해야 합니다. 애플리케이션을 ID로 서명하면 디지털 서명은 애플리케이션의 지문과 개발자로 식별하는 암호화 서명을 포함합니다. Unity는 빌드하는 코드에 암호화 정보로 서명하지 않습니다. 암호화 정보로 서명하려면 코드에 Xcode를 사용하거나 수동으로 서명해야 합니다.
사용하는 공증 방법에 따라 애플리케이션 변경 사항에 코드 서명하기 위해 수행할 단계도 달라집니다. 따라서 애플리케이션에 코드 서명하는 방법에 대한 자세한 내용은 macOS 애플리케이션 공증을 참조하십시오.
유효한 코드 서명은 애플리케이션의 무결성을 보장하지만 애플리케이션 자체가 악의적이지 않은지는 보장하지 않습니다. 공증은 Apple이 개발자 ID가 서명된 애플리케이션에 악의적인 콘텐츠가 포함되지 않았다는 점을 확인하는 데 사용하는 프로세스입니다. Apple이 악의적인 콘텐츠를 감지하지 못한 경우 해당 애플리케이션이 Apple 기기에 배포되는 데 적합하다는 점을 표시하는 디지털 태그를 애플리케이션에 추가합니다. 공증의 결과는 또한 게이트키핑(gatekeeping) 프로세스가 액세스할 수 있도록 온라인에서도 사용할 수 있습니다. Apple은 개발자 ID를 사용하여 배포된 애플리케이션의 감사용 기록을 보관합니다. ID가 노출된 경우 이 기록을 사용하여 애플리케이션의 승인되지 않은 버전의 실행 권한을 철회할 수 있습니다. 공증에 대한 자세한 내용은 배포 전에 macOS 소프트웨어 공증을 참조하십시오.
디지털 배포 서비스는 애플리케이션을 해당 플랫폼에 배포하기 전에 공증해야 하는 경우가 간혹 있습니다. 하지만 Mac 앱 스토어와 같은 일부 디지털 배포 서비스는 공증과 유사한 콘텐츠 확인을 포함합니다. 즉 애플리케이션을 특정 플랫폼에 배포하기 위해 공증할 필요가 없다는 의미입니다. 디지털 배포별 정보에 관한 자세한 내용은 macOS 애플리케이션에 대한 디지털 배포 서비스를 참조하십시오.
macOS 10.15 이상에서 실행할 애플리케이션을 공증하려면 애플리케이션에 반드시 개발자 ID로 먼저 코드 서명해야 합니다. 애플리케이션을 공증하지 않으면 기기는 최종 사용자가 애플리케이션을 열기 전에 경고를 표시합니다. Mac 앱 스토어를 통해 배포하려면 제출 프로세스에 유사한 콘텐츠 확인이 포함되어 있기 때문에 애플리케이션을 공증하지 않아도 됩니다.
개발하려는 플랫폼 종류에 따라 사용할 수 있는 공증 방법이 다릅니다. 애플리케이션을 공증하는 방법에 대한 자세한 내용은 macOS 애플리케이션 공증을 참조하십시오.