App Store에서 배포
Apple App Store는 Apple사가 운영하는 앱 마켓플레이스입니다. 이 App Store를 통해 macOS 및 iOS를 대상으로 한 Tauri 앱을 배포할 수 있습니다.
이 장에서는 “앱을 직접 App Store에 배포하는” 방법만 다룹니다. macOS 배포 옵션 및 설정에 대한 자세한 내용은 종합적인 “App Bundle” 장을 참조하십시오.
iOS와 macOS 앱을 배포하려면 Apple Developer 프로그램에 등록해야 합니다.
또한 macOS와 iOS의 코드 서명을 설정해야 합니다.
tauri ios init
을 실행하여 Xcode 프로젝트를 생성한 후, tauri icon
명령을 사용하여 앱 아이콘을 업데이트할 수 있습니다.
npm run tauri icon /path/to/app-icon.png -- --ios-color #fff
yarn tauri icon /path/to/app-icon.png --ios-color #fff
pnpm tauri icon /path/to/app-icon.png --ios-color #fff
deno task tauri icon /path/to/app-icon.png --ios-color #fff
bun tauri icon /path/to/app-icon.png --ios-color #fff
cargo tauri icon /path/to/app-icon.png --ios-color #fff
인수 --ios-color
는 iOS 아이콘의 배경색을 정의합니다.
Apple Developer 프로그램에 등록한 후, Tauri 앱을 App Store에서 배포하기 위한 첫 번째 단계는 앱을 App Store Connect에 등록하는 것입니다.
Tauri CLI는 앱을 macOS 및 iOS용으로 패키징할 수 있습니다. 단, macOS 컴퓨터에서 실행해야 합니다.
Tauri는 [tauri.conf.json > version
]에 정의된 값에서 CFBundleVersion
(번들 버전)을 가져옵니다.
다른 번들 버전 체계, 예를 들어 “연속 부호” 등이 필요한 경우,
[tauri.conf.json > bundle > iOS > bundleVersion
] 또는 [tauri.conf.json > bundle > macOS > bundleVersion
] 설정에서 고유한 번들 버전을 지정할 수 있습니다:
{ "bundle": { "iOS": { "bundleVersion": "100" } }}
Tauri는 iOS 앱에 Xcode를 이용하므로, iOS용 아카이브 및 배포에 Tauri CLI 대신 Xcode를 사용할 수 있다는 점에 유의하십시오. iOS 프로젝트를 Xcode에서 열고 빌드하려면 다음 명령을 실행합니다:
npm run tauri ios build -- --open
yarn tauri ios build --open
pnpm tauri ios build --open
deno task tauri ios build --open
bun tauri ios build --open
cargo tauri ios build --open
앱을 App Store에 업로드하려면 먼저 모든 필요한 설정 옵션이 입력되었는지 확인해야 합니다. 그런 다음 App Bundle을 패키징하고 서명된 .pkg
파일을 만들어 업로드할 수 있습니다.
다음 각 항목에서 이 프로세스를 순서대로 설명합니다.
앱이 App Store 검증 시스템에서 수락되려면 앱에 몇 가지 설정 항목이 포함되어 있어야 합니다.
- Category(카테고리 항목)
앱을 App Store에 표시하려면 tauri.conf.json > bundle > category
(카테고리 항목)를 명시해야 합니다:
{ "bundle": { "category": "Utility" }}
- Provisioning profile(프로비저닝 프로필)
또한 앱을 Apple에 수락받으려면 “프로비저닝 프로필”도 만들어야 합니다.
Apple Developer 사이트의 “Identifiers(ID)” 페이지에서 새로운 “App ID”를 만들고, “Bundle ID” 값이 tauri.conf.json > identifier
에 설정된 ID(식별자)와 일치하는지 확인합니다.
그런 다음 Profiles 페이지로 이동하여 새로운 “프로비저닝 프로필”을 만듭니다. App Store에서 macOS 앱을 배포하는 경우 “Mac App Store Connect” 프로필이어야 합니다. 적절한 “앱 ID”를 선택하고 “코드 서명”에 사용하는 “인증서”와 연결합니다.
“프로비저닝 프로필”을 만든 후 다운로드하여 잘 아는 위치에 저장하고, “App Bundle(앱 번들)에 포함되도록 Tauri를 설정합니다:
{ "bundle": { "macOS": { "files": { "embedded.provisionprofile": "path/to/profile-name.provisionprofile"(프로비저닝 프로필 경로 기재) } } }}
- Info.plist(정보 속성 목록)
정보 속성 목록 Information Property List. 자세한 내용은 Info.plist를 참조하십시오.
앱은 “암호화 수출 규제”(가칭)를 준수해야 합니다. 자세한 내용은 Apple사 공식 문서(영어)를 참조하십시오.
src-tauri 폴더에 Info.plist 파일을 만듭니다:
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"><plist version="1.0"><dict> <key>ITSAppUsesNonExemptEncryption</key> <false/> # or `true` if your app uses encryption</dict></plist>
- Entitlements(인타이틀먼트/자격)
인타이틀먼트 entitlement: “권리, 자격”을 부여하거나 부여된 “권리, 자격”. 여기서는 정보나 데이터, 자원 등을 이용할 자격, 권리의 부여나 제한을 하는 것. Apple사 용어 해설은 여기.
앱을 App Store에서 배포하려면 액세스 제어 기능인 App Sandbox를 포함해야 합니다. 또한 “코드 서명” 자격 설정에서 “App ID”와 “team ID”도 설정해야 합니다.
src-tauri
폴더에 Entitlements.plist
파일을 만듭니다:
<?xml version="1.0" encoding="UTF-8"?><!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"><plist version="1.0"><dict> <key>com.apple.security.app-sandbox</key> <true/> <key>com.apple.application-identifier</key> <string>$TEAM_ID.$IDENTIFIER</string> <key>com.apple.developer.team-identifier</key> <string>$TEAM_ID</string></dict></plist>
$IDENTIFIER
는 tauri.conf.json > identifier
의 값으로, $TEAM_ID
는 Apple Developer “team ID”의 값으로 바꿔야 한다는 점에 유의하십시오. “team ID”는 프로비저닝 프로필용으로 만든 Identifier의 App ID Prefix
섹션에 있습니다.
그리고 macOS 번들 설정 tauri.conf.json > bundle > macOS > entitlements
에서 이 Entitlements.plist
파일을 참조합니다.
{ "bundle": { "macOS": { "entitlements": "./Entitlements.plist" } }}
인타이틀먼트(자격)를 적용하려면 코드 서명을 활성화하고 애플리케이션을 빌드해야 합니다.
“App Sandbox” 환경에서 앱을 실행했을 때 앱이 작동하는지 확인하십시오.
App Sandbox macOS에 구현된 보안 기능. 자세한 내용은 Apple사 사이트를 참조하십시오.
macOS 애플리케이션은 .pkg
파일로 App Store에 업로드해야 합니다.
다음 명령을 실행하여 앱을 macOS App Bundle(확장자는 .app
)로 패키징합니다:
tauri build --bundles app --target universal-apple-darwin
설정 옵션에 대한 자세한 내용은 App Bundle로 배포 장을 참조하십시오.
App Bundle에서 서명된 .pkg
를 생성하려면 다음 명령을 실행합니다:
xcrun productbuild --sign "<certificate signing identity>" --component "target/universal-apple-darwin/release/bundle/macos/$APPNAME.app" /Applications "$APPNAME.pkg"
【주의】 $APPNAME 부분은 자신의 앱 이름으로 바꿔야 합니다.
이제 명령줄 유틸리티(CLI)인 altool
을 사용하여 앱 패키지를 App Store에 업로드할 수 있습니다:
xcrun altool --upload-app --type macos --file "$APPNAME.pkg" --apiKey $APPLE_API_KEY_ID --apiIssuer $APPLE_API_ISSUER
【주의】 altool
은 앱을 업로드하기 위해 App Store Connect API 키가 필요하다는 점에 유의하십시오.
자세한 내용은 아래 인증 항목을 참조하십시오.
그런 다음 앱은 Apple에 의해 검증되고 승인되면 TestFlight를 사용할 수 있게 됩니다.
altool ※ “이 공증 도구의 “인증” 기능은 2023-11-01을 기해 폐지되고 notarytool
로 이전될 것”이라는 Apple Technote 2023-05-30 릴리스가 있었습니다. App store에 앱 업로드는 계속할 수 있는 것 같지만, 필요에 따라 최신 상황을 확인해 주십시오. “TN3147: Apple has deprecated altool
for the purposes of notarization”
iOS 앱을 빌드하려면 tauri ios build
명령을 실행합니다.
npm run tauri ios build -- --export-method app-store-connect
yarn tauri ios build --export-method app-store-connect
pnpm tauri ios build --export-method app-store-connect
deno task tauri ios build --export-method app-store-connect
bun tauri ios build --export-method app-store-connect
cargo tauri ios build --export-method app-store-connect
생성된 IPA 파일은 src-tauri/gen/apple/build/arm64/$APPNAME.ipa
에 있습니다.
IPA 파일 IPA file: iOS 애플리케이션의 아카이브 파일로, iOS Package Archive(확장자 .ipa)의 약자입니다.
$APPNAME 부분을 자신의 앱 이름으로 바꿔야 한다는 점에 유의하십시오.
이제 altool
CLI를 사용하여 iOS 앱을 App Store에 업로드할 수 있습니다:
xcrun altool --upload-app --type ios --file "src-tauri/gen/apple/build/arm64/$APPNAME.ipa" --apiKey $APPLE_API_KEY_ID --apiIssuer $APPLE_API_ISSUER
altool
은 앱을 업로드하기 위해 App Store Connect API 키가 필요하다는 점에 유의하십시오.
자세한 내용은 아래 인증 항목을 참조하십시오.
그런 다음 앱은 Apple에 의해 검증되고 승인되면 TestFlight를 사용할 수 있게 됩니다.
iOS 및 macOS 앱은 인증에 App Store Connect API 키를 이용하는 altool
을 사용하여 업로드됩니다.
새로운 API 키를 만들려면 [App Store Connect Users and Access page]를 열고, “Integrations(통합) > Individual Keys tab(개별 키 탭)“을 선택하고, “Add(추가)” 버튼을 클릭하여 “이름”과 “the Developer access(개발자 액세스)“를 선택합니다.
“APPLE_API_ISSUER
”(발급자 ID)는 키 테이블 상단에 표시되고, “APPLE_API_KEY_ID
”는 해당 테이블의 “키 ID” 열의 값이 됩니다.
“비밀 키 private key” 다운로드도 필요하지만, 이는 한 번만 실행되며 페이지를 새로고침한 후에만 표시됩니다(버튼이 새로 생성된 키에 해당하는 테이블 행에 표시됩니다).
이 비밀 키 파일의 경로는 “AuthKey\_<APPLE_API_KEY_ID>.p8
”으로, 다음 디렉토리 중 하나에 저장해야 합니다: <current-working-directory>/private_keys
, ~/private_keys
, ~/.private_keys
또는 ~/.appstoreconnect/private_keys
입니다.
【※ 이 한국어판은, 「May 21, 2025 영문판」에 근거하고 있습니다】
© 2025 Tauri Contributors. CC-BY / MIT