chore(ads): Daro 초기화와 배포 설정을 반영한다
This commit is contained in:
4
.gitignore
vendored
4
.gitignore
vendored
@@ -312,6 +312,10 @@ fabric.properties
|
||||
!/gradle/wrapper/gradle-wrapper.jar
|
||||
app/debug/
|
||||
app/release/
|
||||
app/daro-key.txt
|
||||
app/android-daro-key.txt
|
||||
app/src/**/daro-key.txt
|
||||
app/src/**/android-daro-key.txt
|
||||
|
||||
.junie/
|
||||
.kiro/
|
||||
|
||||
52
app/proguard-rules.pro
vendored
52
app/proguard-rules.pro
vendored
@@ -245,3 +245,55 @@
|
||||
-keep interface com.yalantis.ucrop** { *; }
|
||||
|
||||
-dontwarn com.linecorp.linesdk.BR
|
||||
|
||||
# Daro Android SDK (Non-Reward)
|
||||
|
||||
# Pangle (ByteDance)
|
||||
-keep class com.bytedance.sdk.** { *; }
|
||||
|
||||
# Amazon APS
|
||||
-keep class com.amazon.** { *; }
|
||||
-keep public class com.google.android.gms.ads.** { public *; }
|
||||
-keep class com.iabtcf.** { *; }
|
||||
|
||||
# IronSource
|
||||
-keepclassmembers class * implements android.os.Parcelable {
|
||||
public static final android.os.Parcelable$Creator *;
|
||||
}
|
||||
-keep class com.ironsource.adapters.** { *; }
|
||||
-dontwarn com.ironsource.**
|
||||
-dontwarn com.ironsource.adapters.**
|
||||
-keepclassmembers class com.ironsource.** { public *; }
|
||||
-keep public class com.ironsource.**
|
||||
-keep class com.ironsource.adapters.** { *; }
|
||||
|
||||
# IronSource - AppLovin integration
|
||||
-keepclassmembers class com.applovin.sdk.AppLovinSdk { static *; }
|
||||
-keep public interface com.applovin.sdk.** { *; }
|
||||
-keep public interface com.applovin.adview.** { *; }
|
||||
-keep public interface com.applovin.mediation.** { *; }
|
||||
-keep public interface com.applovin.communicator.** { *; }
|
||||
|
||||
# IronSource - AndroidX
|
||||
-keep class androidx.localbroadcastmanager.content.LocalBroadcastManager { *; }
|
||||
-keep class androidx.recyclerview.widget.RecyclerView { *; }
|
||||
-keep class androidx.recyclerview.widget.RecyclerView$OnScrollListener { *; }
|
||||
|
||||
# IronSource - Android
|
||||
-keep class * extends android.app.Activity
|
||||
|
||||
# Retrofit
|
||||
-keep,allowobfuscation,allowshrinking interface retrofit2.Call
|
||||
-keep,allowobfuscation,allowshrinking class retrofit2.Response
|
||||
|
||||
# kotlinx.serialization
|
||||
-dontnote kotlinx.serialization.AnnotationsKt
|
||||
-keepclassmembers class kotlinx.serialization.json.** {
|
||||
*** Companion;
|
||||
}
|
||||
-keepclasseswithmembers class kotlinx.serialization.json.** {
|
||||
kotlinx.serialization.KSerializer serializer(...);
|
||||
}
|
||||
|
||||
# Kotlin Coroutines
|
||||
-keep,allowobfuscation,allowshrinking class kotlin.coroutines.Continuation
|
||||
|
||||
@@ -11,9 +11,11 @@ import androidx.lifecycle.ProcessLifecycleOwner
|
||||
import com.appsflyer.AppsFlyerLib
|
||||
import com.appsflyer.deeplink.DeepLinkResult
|
||||
import com.facebook.FacebookSdk
|
||||
import droom.daro.a.Daro
|
||||
import com.kakao.sdk.common.KakaoSdk
|
||||
import com.orhanobut.logger.AndroidLogAdapter
|
||||
import com.orhanobut.logger.Logger
|
||||
import droom.daro.SDKConfig
|
||||
import kr.co.vividnext.sodalive.BuildConfig
|
||||
import kr.co.vividnext.sodalive.R
|
||||
import kr.co.vividnext.sodalive.chat.talk.room.ChatRoomPreferenceManager
|
||||
@@ -52,6 +54,8 @@ class SodaLiveApp : Application(), DefaultLifecycleObserver {
|
||||
setupAppsFlyer()
|
||||
|
||||
setupNotifly()
|
||||
|
||||
setupDaro()
|
||||
}
|
||||
|
||||
private fun isDebuggable(): Boolean {
|
||||
@@ -137,6 +141,16 @@ class SodaLiveApp : Application(), DefaultLifecycleObserver {
|
||||
)
|
||||
}
|
||||
|
||||
private fun setupDaro() {
|
||||
Daro.init(
|
||||
application = this,
|
||||
sdkConfig = SDKConfig.Builder()
|
||||
.setDebugMode(BuildConfig.DEBUG && isDebuggable())
|
||||
.setAppMuted(false)
|
||||
.build()
|
||||
)
|
||||
}
|
||||
|
||||
override fun onStart(owner: LifecycleOwner) {
|
||||
super.onStart(owner)
|
||||
isAppInForeground = true
|
||||
|
||||
28
docs/20260420_Daro광고기본세팅.md
Normal file
28
docs/20260420_Daro광고기본세팅.md
Normal file
@@ -0,0 +1,28 @@
|
||||
# 20260420 Daro 광고 기본 세팅
|
||||
|
||||
## 작업 체크리스트
|
||||
- [x] 공식 Daro Android 가이드를 기준으로 `Non-Reward` + Android View 전용 기본 세팅 범위를 확정한다.
|
||||
QA: Compose 전용 의존성/예제는 제외되고, `daro-a`, plugin, key 설정, SDK 초기화, ProGuard 규칙만 반영되어야 한다.
|
||||
- [x] `settings.gradle`, `build.gradle`, `app/build.gradle`에 Daro 저장소/플러그인/SDK 및 desugaring 설정을 추가한다.
|
||||
QA: 공식 문서 버전(`daro-plugin:1.0.13`, `daro-a:1.5.3`)과 minSdk 23 대응 desugaring 설정이 반영되어야 한다.
|
||||
- [x] `SodaLiveApp`에 Daro SDK 초기화를 추가한다.
|
||||
QA: 광고 로드 이전 `Application.onCreate()`에서 `Daro.init(...)`가 호출되어야 한다.
|
||||
- [x] `app/proguard-rules.pro`에 공식 Non-Reward ProGuard/R8 규칙을 반영한다.
|
||||
QA: Daro 문서의 Non-Reward keep/dontwarn 규칙이 파일에 추가되어야 한다.
|
||||
- [x] Daro 키 파일/앱 키의 비밀값 커밋 방지 경로를 보강한다.
|
||||
QA: `app/daro-key.txt`, `app/android-daro-key.txt` 및 flavor/buildType 분기 키 파일이 git 추적 대상에서 제외되어야 한다.
|
||||
- [x] 변경 사항을 빌드로 검증하고 결과를 기록한다.
|
||||
QA: `:app:assembleDebug`, `:app:assembleRelease` 결과와 비밀값 의존 여부를 문서 하단 검증 기록에 남겨야 한다.
|
||||
|
||||
## 검증 기록
|
||||
- 2026-04-20
|
||||
- 무엇: Daro Android 기본 세팅(Non-Reward, Android View 전용)을 위해 저장소/플러그인/SDK/desugaring 설정, `SodaLiveApp` 초기화, Non-Reward ProGuard 규칙, 키 파일 ignore 경로를 반영했다.
|
||||
- 왜: 공식 `get-started` 가이드 기준으로 Compose 의존성을 제외한 Android View 앱용 기본 연동과 난독화 설정이 필요했다.
|
||||
- 어떻게:
|
||||
- 수정 파일: `settings.gradle`, `build.gradle`, `app/build.gradle`, `.gitignore`, `app/src/main/java/kr/co/vividnext/sodalive/app/SodaLiveApp.kt`, `app/proguard-rules.pro`
|
||||
- 실행 명령: `./gradlew :app:assembleDebug`
|
||||
- 결과: `DARO` 플러그인 적용과 의존성 해상도는 진행됐지만, 로컬 키 파일 `app/daro-key.txt`를 읽는 과정에서 `Tag mismatch!`가 발생해 `설정 파일이 유효하지 않습니다`로 실패했다.
|
||||
- 실행 명령: `./gradlew :app:assembleRelease`
|
||||
- 결과: release만 요청해도 플러그인 설정 단계에서 `debug` variant 키 검증이 먼저 수행됐고, 동일하게 `app/daro-key.txt`의 `Tag mismatch!`로 실패했다. 따라서 현재 차단점은 ProGuard/R8 규칙이 아니라 로컬 Daro 키 파일/앱 키 정합성이다.
|
||||
- 메모: 최신 문서는 `android-daro-key.txt`를 안내하지만, 실제 플러그인은 레거시 `app/daro-key.txt`도 읽고 있었다. 현재 로컬에 존재하는 키 파일과 `daroAppKey`가 서로 맞지 않거나 파일 자체가 유효하지 않아 빌드 검증이 차단됐다.
|
||||
- 진단 도구: Kotlin(`.kt`)용 LSP 서버 미구성으로 `lsp_diagnostics` 실행 불가 확인
|
||||
Reference in New Issue
Block a user