53 lines
2.6 KiB
Markdown
53 lines
2.6 KiB
Markdown
---
|
|
domain: macos-platform
|
|
last_rule_review_commit: no-commit
|
|
last_rule_updated_at: 2026-06-08
|
|
---
|
|
|
|
# macos-platform
|
|
|
|
## 목적 / 책임
|
|
|
|
macOS desktop target의 bundle metadata, entitlement, URL scheme, runner 설정을 담당한다.
|
|
|
|
## 포함 경로
|
|
|
|
- `macos/Runner/Info.plist` — bundle metadata와 `appsok://` URL scheme
|
|
- `macos/Runner/Configs/` — product name, bundle identifier, build config
|
|
- `macos/Runner/*.entitlements` — sandbox/network 권한
|
|
- `macos/Runner.xcodeproj/`, `macos/Runner.xcworkspace/` — Xcode project/workspace 설정
|
|
- `macos/Flutter/GeneratedPluginRegistrant.swift` — Flutter plugin 등록
|
|
|
|
## 제외 경로
|
|
|
|
- `lib/src/services/jenkins_client.dart` — network 호출 자체는 `artifact-flow` 책임
|
|
- `lib/src/services/adb_service.dart` — ADB command wrapper는 `device-console` 책임
|
|
- `lib/src/theme/` — 시각 스타일은 `app-shell` 책임
|
|
|
|
## 주요 구성 요소
|
|
|
|
- `AppInfo.xcconfig` — macOS 앱 표시 이름과 bundle id
|
|
- `Info.plist` — URL scheme 등록
|
|
- `DebugProfile.entitlements`, `Release.entitlements` — sandbox와 network client 권한
|
|
|
|
## 유지할 패턴
|
|
|
|
- 앱 표시 이름은 사용자에게 보이는 이름 `AppSok`을 유지한다.
|
|
- bundle identifier는 `com.tokilabs.appsok` 기준으로 관리한다.
|
|
- URL scheme은 식별자 규칙상 `appsok://`을 유지한다.
|
|
- Jenkins 호출에는 network client entitlement가 필요하다.
|
|
- 배포 전에는 sandbox 상태에서 ADB binary 실행과 USB 접근 가능 여부를 macOS host에서 검증한다.
|
|
- macOS build/signing 검증은 local container가 아니라 standard remote Mac runner `toki@toki-labs.com`의 `$HOME/docker/services/code-server/data/volume/workspace/appsok` checkout을 기준으로 한다.
|
|
- 원격에는 valid codesigning identity가 확인되어 있지만, notary credential profile은 별도 확인 전까지 미확정으로 둔다.
|
|
|
|
## 다른 도메인과의 경계
|
|
|
|
- **artifact-flow**: deep link payload가 Jenkins job/build/artifact를 가리킬 수 있으나 parsing/권한 확인은 artifact-flow에서 담당한다.
|
|
- **device-console**: ADB 실행 권한과 packaging 제약은 macos-platform에서 관리하고, command semantics는 device-console에서 관리한다.
|
|
- **app-shell**: 앱 이름과 window metadata는 platform 설정에서 관리하고, 화면 layout은 app-shell에서 관리한다.
|
|
|
|
## 금지 사항
|
|
|
|
- entitlement를 넓힐 때 사유 없이 sandbox를 해제하지 않는다.
|
|
- macOS 설정 파일을 Flutter 자동 생성물과 충돌하는 방식으로 수동 대량 편집하지 않는다.
|
|
- notarization, signing, MDM 배포 전제를 확인하지 않고 배포 가능하다고 단정하지 않는다.
|