시작하기 전에
프로젝트에 Daro SDK를 통합하기 전에 필요한 사항들을 확인하세요.
요구사항
minSdk 26 미만일 경우 Desugaring 설정을 필요로 합니다.android {
...
compileOptions {
isCoreLibraryDesugaringEnabled = true
sourceCompatibility = JavaVersion.VERSION_1_8
targetCompatibility = JavaVersion.VERSION_1_8
}
...
}
...
dependencies {
...
coreLibraryDesugaring("com.android.tools:desugar_jdk_libs:2.0.4")
...
}
앱 설정하기
프로젝트 단위 빌드 설정
settings.gradle 파일에 maven repository 들을 추가합니다.
dependencyResolutionManagement {
repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
repositories {
...
maven { url = uri("https://artifact.bytedance.com/repository/pangle") }
maven { url = uri("https://verve.jfrog.io/artifactory/verve-gradle-release") }
maven { url = uri("https://cboost.jfrog.io/artifactory/chartboost-ads/") }
maven { url = uri("https://repo.premiumads.net/artifactory/mobile-ads-sdk/") }
maven { url = uri("https://repo.pubmatic.com/artifactory/public-repos") }
maven { url = uri("https://s3.amazonaws.com/smaato-sdk-releases/") }
maven { url = uri("https://android-sdk.is.com/") }
maven { url = uri("https://dl-maven-android.mintegral.com/repository/mbridge_android_sdk_oversea") }
}
}
dependencyResolutionManagement {
repositoriesMode.set(RepositoriesMode.FAIL_ON_PROJECT_REPOS)
repositories {
...
maven { url = uri("https://android-sdk.is.com") }
maven { url = uri("https://dl-maven-android.mintegral.com/repository/mbridge_android_sdk_oversea") }
maven { url = uri("https://maven.ogury.co") }
maven { url = uri("https://artifact.bytedance.com/repository/pangle") }
maven { url = uri("https://s3.amazonaws.com/smaato-sdk-releases/") }
maven { url = uri("https://verve.jfrog.io/artifactory/verve-gradle-release") }
maven { url = uri("https://cboost.jfrog.io/artifactory/chartboost-ads/") }
maven { url = uri("https://artifacts.applovin.com/android") }
}
}
build.gradle(root)에 daro 플러그인 추가
build.gradle(root) 파일에 daro 관련 플러그인을 추가합니다.
buildscript {
repositories {
google()
mavenCentral()
}
dependencies {
classpath("so.daro:daro-plugin:1.0.13")
}
}
buildscript {
repositories {
google()
mavenCentral()
maven { url = uri("https://artifacts.applovin.com/android") }
}
dependencies {
classpath("so.daro:daro-plugin:1.0.13")
classpath("com.applovin.quality:AppLovinQualityServiceGradlePlugin:5.5.2")
}
}
Daro SDK 추가
- Daro SDK를 추가합니다.
Latest version
- daro-a :
- daro-compose-util :
dependencies {
...
implementation("so.daro:daro-a:1.5.1")
implementation("so.daro:daro-compose-util:1.3.2")
...
}
Latest version
- daro-m :
- daro-compose-util :
dependencies {
...
implementation("so.daro:daro-m:1.3.4")
// Compose-Only
implementation("so.daro:daro-compose-util:1.3.2")
...
}
android-daro-key.txt 파일 추가
android-daro-key.txt 파일을 추가합니다.
app/
└── android-daro-key.txt
app/
└── src/
├── EnvA/
│ └── android-daro-key.txt
└── EnvB/
└── android-daro-key.txt
android-daro-key.txt는 DARO 대시보드에서 다운받을 수 있습니다.
daroAppKey 설정
- daroAppKey 를 설정합니다.
표시 gradle.properties 에 설정하기
android.useAndroidX=true
android.enableJetifier=true
daroAppKey={APP_KEY}
표시 app 모듈 gradle에 직접 설정하기
app 모듈 build.gradle에 아래와 같이 설정합니다.buildscript{
extra["daroAppKey"] = "APP_KEY"
}
표시 gradle.properties 에 설정하기
android.useAndroidX=true
android.enableJetifier=true
daroAppKey.EnvA={APP_KEY}
daroAppKey.EnvB={APP_KEY}
표시 app 모듈 gradle에 직접 설정하기
app 모듈 build.gradle에 아래와 같이 설정합니다.buildscript{
extra["daroAppKey.EnvA"] = "APP_KEY"
extra["daroAppKey.EnvB"] = "APP_KEY"
}
Flavor 첫 글자를 반드시 대문자로 입력해주세요
daroAppKey는 DARO 대시보드에서 확인할 수 있습니다.
build.gradle(app)에 daro plugin 적용
build.gradle(app)에 daro plugin을 적용합니다.
plugins {
...
id("so.daro.a")
...
}
plugins {
...
id("so.daro.m")
...
}
필요시 proguard 규칙 적용하기
- daro sdk에는 아래 난독화 규칙이 consumer-rules.pro에 포함되어 있으며, Gradle로 AAR을 추가하면, 앱 빌드시 자동으로 병합됩니다.
- 만약, 난독화 규칙을 변경하고 싶다면, 아래 내용들을 참고하여 proguard-rules.pro 파일에 적용하시길 바랍니다.
# Pangle (ByteDance)
-keep class com.bytedance.sdk.** { *; }
# Verve (PubNative)
-keepattributes Signature
-keep class net.pubnative.** { *; }
-keep class com.iab.omid.library.pubnativenet.** { *; }
# 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
# Gson
-keepattributes Signature
-keepattributes *Annotation*
-dontwarn sun.misc.**
-keep class com.google.gson.** { *; }
-keep class * implements com.google.gson.TypeAdapterFactory
-keep class * implements com.google.gson.JsonSerializer
-keep class * implements com.google.gson.JsonDeserializer
# Kotlin Coroutines
-keep,allowobfuscation,allowshrinking class kotlin.coroutines.Continuation
Reward App의 경우 별도로 proguard를 설정하지 않아도 됩니다.
SDK 초기화하기
중요: SDK 초기화 후 광고 로드
- 광고를 로드하기 전에
Daro.init()를 호출하여 광고 SDK를 초기화합니다.
- 초기화 전 광고를 요청하면 광고가 정상적으로 표시되지 않을 수 있습니다.
class AppApplication : Application() {
override fun onCreate() {
...
// Daro SDK 초기화
Daro.init(
application = application,
sdkConfig = Daro.SDKConfig.Builder()
.setDebugMode(...) // (Daro 로그 노출 여부, default : false)
.setAppMuted(...) // (앱 음소거 설정, default : false)
.build()
)
}
}
앱 음소거 설정
앱 오프닝, 배너, 전면 광고, 보상형, 보상형 전면 광고 형식의 경우 setAppMuted(...) 메서드를 사용하여 앱 볼륨이 음소거되었음을 Daro SDK에 알릴 수 있습니다.
// 앱 음소거 설정
Daro.setAppMuted(true)
// 앱 음소거 해제
Daro.setAppMuted(false)
앱 음소거 사용 시 주의사항앱을 음소거하면 동영상 광고 적합성이 저하되어 앱의 광고 수익이 감소할 수 있습니다. 앱이 사용자에게 맞춤 음소거 컨트롤을 제공하고 사용자의 음소거 결정이 API에 제대로 반영되는 경우에만 이 API를 활용해야 합니다.