Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
2 changes: 1 addition & 1 deletion CLAUDE.md
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ JDK 21. Gradle wrapper 사용(`./gradlew`). CI(`.github/workflows/`)는 `assembl
## 빌드에 필요한 로컬 설정

- `local.properties` 키 → `app/build.gradle.kts` 가 `BuildConfig`·manifestPlaceholder 로 주입한다:
`BASE_URL`(Retrofit base, `@BaseUrl`), `KAKAO_NATIVE_APP_KEY`, `KAKAO_REST_API_KEY`, `KAKAO_REDIRECT_URI`, `GOOGLE_CLIENT_ID`, `GOOGLE_REDIRECT_URI`(스킴 부분이 AppAuth redirect 로 쓰임), `AMPLITUDE_API_KEY`, `TTI_SHEET_URL`(TTI 를 받는 구글 시트 Apps Script 웹앱).
`BASE_URL`(Retrofit base, `@BaseUrl`), `KAKAO_NATIVE_APP_KEY`, `KAKAO_REST_API_KEY`, `KAKAO_REDIRECT_URI`, `GOOGLE_CLIENT_ID`, `GOOGLE_REDIRECT_URI`(스킴 부분이 AppAuth redirect 로 쓰임), `AMPLITUDE_API_KEY`, `TTI_SHEET_URL`(TTI 를 받는 구글 시트 Apps Script 웹앱), `FACEBOOK_APP_ID`·`FACEBOOK_CLIENT_TOKEN`(Meta SDK, `resValue` 문자열 리소스로 주입).
값이 비면 빈 문자열로 주입될 뿐 빌드는 통과한다 — 런타임에 조용히 죽으므로 증상이 나오면 여기부터 본다.
- `app/google-services.json` 은 커밋하지 않는다. 파일이 **있을 때만** google-services·Crashlytics 플러그인이 적용된다(`app/build.gradle.kts` 상단 조건부 apply). CI 는 시크릿에서 복원한다.
- 버전은 전부 `gradle/libs.versions.toml` 버전 카탈로그. 동적 버전(`1.+`)은 쓰지 않는다.
Expand Down
9 changes: 9 additions & 0 deletions app/build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,8 @@ val kakaoNativeAppKey: String = localProperties.getProperty("KAKAO_NATIVE_APP_KE
val baseUrl: String = localProperties.getProperty("BASE_URL")?.trim().orEmpty()
val amplitudeApiKey: String = localProperties.getProperty("AMPLITUDE_API_KEY")?.trim().orEmpty()
val ttiSheetUrl: String = localProperties.getProperty("TTI_SHEET_URL")?.trim().orEmpty()
val facebookAppId: String = localProperties.getProperty("FACEBOOK_APP_ID")?.trim().orEmpty()
val facebookClientToken: String = localProperties.getProperty("FACEBOOK_CLIENT_TOKEN")?.trim().orEmpty()
val appAuthRedirectScheme: String =
localProperties
.getProperty("GOOGLE_REDIRECT_URI")
Expand Down Expand Up @@ -88,6 +90,9 @@ android {
buildConfigField("String", "AMPLITUDE_API_KEY", "\"$amplitudeApiKey\"")
// TTI 를 받는 구글 시트 Apps Script 웹앱 URL. 비면 보내지 않는다(#623)
buildConfigField("String", "TTI_SHEET_URL", "\"$ttiSheetUrl\"")
// Meta SDK 는 숫자 앱 ID 를 meta-data 문자열 리소스로 읽어야 한다 — placeholder 로 넣으면 숫자로 파싱된다
resValue("string", "facebook_app_id", facebookAppId)
resValue("string", "facebook_client_token", facebookClientToken)
}

signingConfigs {
Expand Down Expand Up @@ -127,6 +132,7 @@ android {
buildFeatures {
compose = true
buildConfig = true
resValues = true
}
}

Expand Down Expand Up @@ -211,6 +217,9 @@ dependencies {
implementation(libs.firebase.messaging)
implementation(libs.firebase.perf)

// Meta 앱 이벤트(광고 성과 측정). 로그인·공유 모듈은 쓰지 않는다.
implementation(libs.facebook.core)

// 프레임 jank 측정(JankStats).
implementation(libs.androidx.metrics.performance)

Expand Down
8 changes: 8 additions & 0 deletions app/src/main/AndroidManifest.xml
Original file line number Diff line number Diff line change
Expand Up @@ -122,6 +122,14 @@
android:value="androidx.startup"
tools:node="remove" />
</provider>

<!-- Meta 앱 이벤트. 값은 local.properties 에서 주입된다. -->
<meta-data
android:name="com.facebook.sdk.ApplicationId"
android:value="@string/facebook_app_id" />
<meta-data
android:name="com.facebook.sdk.ClientToken"
android:value="@string/facebook_client_token" />
</application>

</manifest>
5 changes: 5 additions & 0 deletions gradle/libs.versions.toml
Original file line number Diff line number Diff line change
Expand Up @@ -72,6 +72,9 @@ zxing = "3.5.3"
# Amplitude
amplitudeAnalytics = "1.30.1"

# Meta 앱 이벤트
facebookCore = "19.0.0"

# firebase
googleservice = "4.4.4"
firebaseCrashlyticsPlugin = "3.0.6"
Expand Down Expand Up @@ -187,6 +190,8 @@ zxing-core = { module = "com.google.zxing:core", version.ref = "zxing" }

# amplitude
amplitude-analytics = { group = "com.amplitude", name = "analytics-android", version.ref = "amplitudeAnalytics" }
# Meta 앱 이벤트
facebook-core = { group = "com.facebook.android", name = "facebook-core", version.ref = "facebookCore" }

# firebase
firebase-bom = { group = "com.google.firebase", name = "firebase-bom", version.ref = "firebaseBom" }
Expand Down
Loading