chore(project): 루트의 .entitlements 3개를 각 타깃 폴더로 이동

- Haru_Danim.entitlements → IOS/, Haru_DanimWidgets.entitlements → Widgets/,
  Haru_DanimWatchWidgetsExtension.entitlements → Haru_DanimWatchWidgets/
  (워치 앱은 원래 자기 폴더 안 — 그 전례대로 동기화 그룹에 두되 예외 등록 불필요)
- pbxproj: CODE_SIGN_ENTITLEMENTS 경로 갱신 + 루트 그룹의 개별 파일 참조 제거
- 검증: iOS Debug·Store·워치 3스킴 빌드 성공, Entitlements-Simulated에 전체 키
  (App Group·CloudKit·시리·푸시·keychain·iCloud KVS) 정상 반영, 번들 오염 없음, 앱 기동 확인
- CLAUDE.md §2.1 구조에 위치·삭제 금지 명시

Co-Authored-By: Claude Fable 5 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01FVeduv1eNdXjk1ay4tSgBg
This commit is contained in:
songyc macbook 2026-07-30 21:47:07 +09:00
parent 5d64719187
commit 6aad947fbc
5 changed files with 8 additions and 12 deletions

View File

@ -39,6 +39,8 @@ WatchShared/WatchPayload.swift# iPhone↔워치 Codable 페이로드 (iOS+워치
Haru_DanimWatch Watch App/ # 워치 앱 타깃
Haru_DanimWatchWidgets/ # 워치 컴플리케이션 타깃
HaruDanim.storekit # 로컬 StoreKit 테스트 구성 (Store 스킴이 사용)
<타깃 폴더>/<타깃>.entitlements # 권한 서명 파일(App Group·CloudKit·시리·푸시·iCloud KVS) — 각 타깃 폴더 안
# (IOS/·Widgets/·워치 앱/·워치 위젯/. 삭제 금지, 동기화 그룹이라 예외 등록 불필요)
DesignAssets/ # 아이콘 원본 등
Marketing/ # App Store 등록 자료 — 설명·키워드·구독 메타·스크린샷(6.9"/13" × ko·en·ja)
# ⚠️ 앱 기능·문구가 자료에 영향을 주게 바뀌면 별도 요청 없이 함께 갱신할 것

View File

@ -76,13 +76,10 @@
/* Begin PBXFileReference section */
725A9E842FFCC65000846FFB /* Haru_Danim.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = Haru_Danim.app; sourceTree = BUILT_PRODUCTS_DIR; };
7263D0DA3000415100EA47FC /* Haru_DanimWidgets.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = Haru_DanimWidgets.entitlements; sourceTree = "<group>"; };
7263D0DB3000417000EA47FC /* Haru_Danim.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = Haru_Danim.entitlements; sourceTree = "<group>"; };
7263D0E03000433300EA47FC /* Haru_DanimWatch Watch App.app */ = {isa = PBXFileReference; explicitFileType = wrapper.application; includeInIndex = 0; path = "Haru_DanimWatch Watch App.app"; sourceTree = BUILT_PRODUCTS_DIR; };
7263D0F4300044E900EA47FC /* Haru_DanimWatchWidgetsExtension.appex */ = {isa = PBXFileReference; explicitFileType = "wrapper.app-extension"; includeInIndex = 0; path = Haru_DanimWatchWidgetsExtension.appex; sourceTree = BUILT_PRODUCTS_DIR; };
7263D0F6300044E900EA47FC /* WidgetKit.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = WidgetKit.framework; path = System/Library/Frameworks/WidgetKit.framework; sourceTree = SDKROOT; };
7263D0F8300044E900EA47FC /* SwiftUI.framework */ = {isa = PBXFileReference; lastKnownFileType = wrapper.framework; name = SwiftUI.framework; path = System/Library/Frameworks/SwiftUI.framework; sourceTree = SDKROOT; };
7263D10E300044F100EA47FC /* Haru_DanimWatchWidgetsExtension.entitlements */ = {isa = PBXFileReference; lastKnownFileType = text.plist.entitlements; path = Haru_DanimWatchWidgetsExtension.entitlements; sourceTree = "<group>"; };
AA0000000000000000000004 /* Haru_DanimWidgets.appex */ = {isa = PBXFileReference; explicitFileType = "wrapper.app-extension"; includeInIndex = 0; path = Haru_DanimWidgets.appex; sourceTree = BUILT_PRODUCTS_DIR; };
/* End PBXFileReference section */
@ -214,9 +211,6 @@
725A9E7B2FFCC65000846FFB = {
isa = PBXGroup;
children = (
7263D10E300044F100EA47FC /* Haru_DanimWatchWidgetsExtension.entitlements */,
7263D0DB3000417000EA47FC /* Haru_Danim.entitlements */,
7263D0DA3000415100EA47FC /* Haru_DanimWidgets.entitlements */,
725A9E862FFCC65000846FFB /* IOS */,
AA0000000000000000000002 /* Shared */,
AA0000000000000000000011 /* WatchShared */,
@ -605,7 +599,7 @@
buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
CODE_SIGN_ENTITLEMENTS = Haru_Danim.entitlements;
CODE_SIGN_ENTITLEMENTS = IOS/Haru_Danim.entitlements;
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 1;
DEVELOPMENT_TEAM = 5GNS4Z2SYT;
@ -647,7 +641,7 @@
buildSettings = {
ASSETCATALOG_COMPILER_APPICON_NAME = AppIcon;
ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
CODE_SIGN_ENTITLEMENTS = Haru_Danim.entitlements;
CODE_SIGN_ENTITLEMENTS = IOS/Haru_Danim.entitlements;
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 1;
DEVELOPMENT_TEAM = 5GNS4Z2SYT;
@ -761,7 +755,7 @@
buildSettings = {
ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
ASSETCATALOG_COMPILER_WIDGET_BACKGROUND_COLOR_NAME = WidgetBackground;
CODE_SIGN_ENTITLEMENTS = Haru_DanimWatchWidgetsExtension.entitlements;
CODE_SIGN_ENTITLEMENTS = Haru_DanimWatchWidgets/Haru_DanimWatchWidgetsExtension.entitlements;
CODE_SIGN_IDENTITY = "Apple Development";
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 1;
@ -797,7 +791,7 @@
buildSettings = {
ASSETCATALOG_COMPILER_GLOBAL_ACCENT_COLOR_NAME = AccentColor;
ASSETCATALOG_COMPILER_WIDGET_BACKGROUND_COLOR_NAME = WidgetBackground;
CODE_SIGN_ENTITLEMENTS = Haru_DanimWatchWidgetsExtension.entitlements;
CODE_SIGN_ENTITLEMENTS = Haru_DanimWatchWidgets/Haru_DanimWatchWidgetsExtension.entitlements;
CODE_SIGN_IDENTITY = "Apple Development";
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 1;
@ -831,7 +825,7 @@
AA0000000000000000000008 /* Debug */ = {
isa = XCBuildConfiguration;
buildSettings = {
CODE_SIGN_ENTITLEMENTS = Haru_DanimWidgets.entitlements;
CODE_SIGN_ENTITLEMENTS = Widgets/Haru_DanimWidgets.entitlements;
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 1;
DEVELOPMENT_TEAM = 5GNS4Z2SYT;
@ -857,7 +851,7 @@
AA0000000000000000000009 /* Release */ = {
isa = XCBuildConfiguration;
buildSettings = {
CODE_SIGN_ENTITLEMENTS = Haru_DanimWidgets.entitlements;
CODE_SIGN_ENTITLEMENTS = Widgets/Haru_DanimWidgets.entitlements;
CODE_SIGN_STYLE = Automatic;
CURRENT_PROJECT_VERSION = 1;
DEVELOPMENT_TEAM = 5GNS4Z2SYT;