앱 식별자 kr.co.fanuzu.app 적용 — Android 패키지 · iOS 번들 ID
This commit is contained in:
@@ -44,6 +44,21 @@ app.*.map.json
|
||||
/android/app/profile
|
||||
/android/app/release
|
||||
|
||||
# 서명 자산 — 저장소에 절대 넣지 않는다.
|
||||
# 키스토어를 잃으면 같은 앱을 업데이트할 수 없고, 유출되면 위조 서명이 가능하다.
|
||||
# 발주사 인계는 저장소가 아니라 별도 안전 경로로 한다 (별첨 3 D-11).
|
||||
key.properties
|
||||
*.jks
|
||||
*.keystore
|
||||
*.p12
|
||||
*.p8
|
||||
*.mobileprovision
|
||||
**/GoogleService-Info.plist
|
||||
**/google-services.json
|
||||
|
||||
# FVM Version Cache
|
||||
.fvm/
|
||||
|
||||
# Firebase 도구·에뮬레이터 산출물
|
||||
firebase/**/node_modules/
|
||||
firebase/**/*-debug.log
|
||||
|
||||
+1
-1
@@ -72,7 +72,7 @@ apksigner verify --print-certs build/app/outputs/flutter-apk/app-release.apk
|
||||
| Xcode | **27.0** (`~/Downloads/Xcode-beta.app`) |
|
||||
| CocoaPods | 1.17.0 (`brew install cocoapods`) |
|
||||
| 산출물 | `build/ios/iphoneos/Runner.app` · 21.7MB · arm64 |
|
||||
| bundle id | `kr.co.sweech.fancake` · 0.1.0(1) · label FANUZU |
|
||||
| bundle id | `kr.co.fanuzu.app` · 0.1.0(1) · label FANUZU |
|
||||
| **MinimumOSVersion** | **15.0** — 문서(별첨 1 · 2주차 선검증)와 **일치** |
|
||||
|
||||
`xcode-select --switch` 는 sudo 를 요구하므로 **`DEVELOPER_DIR` 로 우회**한다.
|
||||
|
||||
+1
-1
@@ -116,7 +116,7 @@ bool get isMockSessionAvailable => !FirebaseBoot.isLive && !_releaseMode;
|
||||
| Q3 | 카카오 네이티브 앱 키 | 미정(플러그인 도입 시 확정) | 카카오 버튼이 「키 미투입」 안내를 반환 |
|
||||
| Q3 | 네이버 client ID / secret | 미정 | 네이버 버튼이 「키 미투입」 안내를 반환 |
|
||||
| Q5 | 스토어 등록 명의 | — | 3주차 TestFlight·Play 내부트랙 제출 불가 |
|
||||
| Q14 | 앱 식별자 확정 | `android/app/build.gradle.kts` · `ios/Runner.xcodeproj` | 현재 `kr.co.sweech.fancake` 로 잠정. **스토어 등록 후에는 변경 불가** |
|
||||
| ~~Q14~~ | 앱 식별자 확정 | `android/app/build.gradle.kts` · `ios/Runner.xcodeproj` | **2026-09-11 확정 — 별첨 C 4번 `kr.co.fanuzu.app`.** Android applicationId·namespace·Kotlin 패키지, iOS bundle id 를 모두 옮겼다. **스토어 등록 후에는 변경 불가** |
|
||||
| ~~Q6~~ | 공식 FANUZU 심볼 원본 | `assets/brand/` | **2026-08-13 반영 완료.** 제공본이 심볼 전용이라 앱 아이콘은 공식 자산으로 생성했고 로그인 워드마크는 `FANUZU` 텍스트를 유지 |
|
||||
| Q15 | 하단 탭 아이콘 자산 | `assets/icons/` | Material 기본 아이콘 5종으로 잠정 |
|
||||
|
||||
|
||||
@@ -20,13 +20,14 @@ val keystoreProperties = Properties().apply {
|
||||
/// 이번 실행이 릴리스 산출물(assembleRelease · bundleRelease 등)을 요구하는가.
|
||||
val wantsRelease = gradle.startParameter.taskNames.any { it.contains("Release", ignoreCase = true) }
|
||||
|
||||
// 앱 식별자 단일 출처. Q14(앱 식별자 확정) 회신이 오면 Android 쪽은 이 한 줄만 고친다.
|
||||
// 주의: Kotlin 패키지(kr.co.sweech.fancake)와 소스 디렉터리는 바꿀 필요가 없다 —
|
||||
// 스토어 식별자는 applicationId 뿐이고 namespace 는 R 클래스 패키지일 뿐이다.
|
||||
val fancakeApplicationId = "kr.co.sweech.fancake"
|
||||
// 앱 식별자 단일 출처. 별첨 C 4번으로 `kr.co.fanuzu.app` 확정(2026-09-11, Q14 해소).
|
||||
// 기존 잠정값 kr.co.sweech.fancake 는 더 이상 쓰지 않는다.
|
||||
// namespace(=R 클래스 패키지)와 Kotlin 패키지도 같이 옮겼다 — AndroidManifest 가
|
||||
// 액티비티를 `.MainActivity` 상대명으로 적으므로 셋이 어긋나면 기동 시 클래스를 못 찾는다.
|
||||
val fanuzuApplicationId = "kr.co.fanuzu.app"
|
||||
|
||||
android {
|
||||
namespace = fancakeApplicationId
|
||||
namespace = fanuzuApplicationId
|
||||
compileSdk = flutter.compileSdkVersion
|
||||
ndkVersion = flutter.ndkVersion
|
||||
|
||||
@@ -40,9 +41,8 @@ android {
|
||||
}
|
||||
|
||||
defaultConfig {
|
||||
// 잠정값. 스토어 등록 명의(2주차_확인요청항목 Q5)가 발주사 명의로 확정되면 교체한다(Q14).
|
||||
// 스토어에 한 번 올리면 변경 불가 — 첫 제출 전에 확정해야 한다.
|
||||
applicationId = fancakeApplicationId
|
||||
// 확정값(별첨 C 4번). 스토어에 한 번 올리면 변경 불가다.
|
||||
applicationId = fanuzuApplicationId
|
||||
// **계약값이다.** 별첨 1 v1.0 이 최소 지원 OS 를 Android 10(API 29)으로 적었고,
|
||||
// 근거는 2주차 플러그인 선검증 리포트의 바이너리 실측이다.
|
||||
//
|
||||
|
||||
+1
-1
@@ -1,4 +1,4 @@
|
||||
package kr.co.sweech.fancake
|
||||
package kr.co.fanuzu.app
|
||||
|
||||
import io.flutter.embedding.android.FlutterActivity
|
||||
|
||||
@@ -474,7 +474,7 @@
|
||||
"$(inherited)",
|
||||
"@executable_path/Frameworks",
|
||||
);
|
||||
PRODUCT_BUNDLE_IDENTIFIER = kr.co.sweech.fancake;
|
||||
PRODUCT_BUNDLE_IDENTIFIER = kr.co.fanuzu.app;
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
|
||||
SWIFT_VERSION = 5.0;
|
||||
@@ -491,7 +491,7 @@
|
||||
CURRENT_PROJECT_VERSION = 1;
|
||||
GENERATE_INFOPLIST_FILE = YES;
|
||||
MARKETING_VERSION = 1.0;
|
||||
PRODUCT_BUNDLE_IDENTIFIER = kr.co.sweech.fancake.RunnerTests;
|
||||
PRODUCT_BUNDLE_IDENTIFIER = kr.co.fanuzu.app.RunnerTests;
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
SWIFT_ACTIVE_COMPILATION_CONDITIONS = DEBUG;
|
||||
SWIFT_OPTIMIZATION_LEVEL = "-Onone";
|
||||
@@ -509,7 +509,7 @@
|
||||
CURRENT_PROJECT_VERSION = 1;
|
||||
GENERATE_INFOPLIST_FILE = YES;
|
||||
MARKETING_VERSION = 1.0;
|
||||
PRODUCT_BUNDLE_IDENTIFIER = kr.co.sweech.fancake.RunnerTests;
|
||||
PRODUCT_BUNDLE_IDENTIFIER = kr.co.fanuzu.app.RunnerTests;
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
SWIFT_VERSION = 5.0;
|
||||
TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Runner.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/Runner";
|
||||
@@ -525,7 +525,7 @@
|
||||
CURRENT_PROJECT_VERSION = 1;
|
||||
GENERATE_INFOPLIST_FILE = YES;
|
||||
MARKETING_VERSION = 1.0;
|
||||
PRODUCT_BUNDLE_IDENTIFIER = kr.co.sweech.fancake.RunnerTests;
|
||||
PRODUCT_BUNDLE_IDENTIFIER = kr.co.fanuzu.app.RunnerTests;
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
SWIFT_VERSION = 5.0;
|
||||
TEST_HOST = "$(BUILT_PRODUCTS_DIR)/Runner.app/$(BUNDLE_EXECUTABLE_FOLDER_PATH)/Runner";
|
||||
@@ -657,7 +657,7 @@
|
||||
"$(inherited)",
|
||||
"@executable_path/Frameworks",
|
||||
);
|
||||
PRODUCT_BUNDLE_IDENTIFIER = kr.co.sweech.fancake;
|
||||
PRODUCT_BUNDLE_IDENTIFIER = kr.co.fanuzu.app;
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
|
||||
SWIFT_OPTIMIZATION_LEVEL = "-Onone";
|
||||
@@ -680,7 +680,7 @@
|
||||
"$(inherited)",
|
||||
"@executable_path/Frameworks",
|
||||
);
|
||||
PRODUCT_BUNDLE_IDENTIFIER = kr.co.sweech.fancake;
|
||||
PRODUCT_BUNDLE_IDENTIFIER = kr.co.fanuzu.app;
|
||||
PRODUCT_NAME = "$(TARGET_NAME)";
|
||||
SWIFT_OBJC_BRIDGING_HEADER = "Runner/Runner-Bridging-Header.h";
|
||||
SWIFT_VERSION = 5.0;
|
||||
|
||||
Reference in New Issue
Block a user