import org.jetbrains.kotlin.gradle.dsl.JvmTarget plugins { id 'com.android.application' id 'org.jetbrains.kotlin.android' id 'com.google.gms.google-services' id 'com.google.android.gms.oss-licenses-plugin' id 'com.google.devtools.ksp' id 'kotlin-parcelize' id 'org.jlleitschuh.gradle.ktlint' id 'com.google.firebase.crashlytics' } android { namespace 'kr.co.vividnext.sodalive' compileSdk = 35 viewBinding { enabled true } buildFeatures { buildConfig true } dependenciesInfo { // Disables dependency metadata when building APKs. includeInApk = false // Disables dependency metadata when building Android App Bundles. includeInBundle = false } packaging { // JNI(.so) 관련 jniLibs { // pickFirsts: 충돌 시 첫 파일만 채택 pickFirsts += ["**/libaosl.so"] } // 일반 리소스(META-INF 등) 관련 resources { // pickFirsts: 충돌 시 첫 파일만 채택 pickFirsts += [ "META-INF/LICENSE.txt", "META-INF/NOTICE*" ] // 자주 쓰는 제외/병합 예시 excludes += [ "META-INF/DEPENDENCIES", "META-INF/AL2.0", "META-INF/LGPL2.1" ] merges += [ "META-INF/services/**" ] } } defaultConfig { applicationId "kr.co.vividnext.sodalive" minSdk 23 targetSdk 35 versionCode 198 versionName "1.43.0" } buildTypes { release { minifyEnabled true proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' buildConfigField 'String', 'BASE_URL', '"https://api.sodalive.net"' buildConfigField 'String', 'BOOTPAY_APP_ID', '"64c35be1d25985001dc50c87"' buildConfigField 'String', 'BOOTPAY_APP_HECTO_ID', '"664c1707b18b225deca4b429"' buildConfigField 'String', 'AGORA_APP_ID', '"e34e40046e9847baba3adfe2b8ffb4f6"' buildConfigField 'String', 'AGORA_APP_CERTIFICATE', '"15cadeea4ba94ff7b091c9a10f4bf4a6"' buildConfigField 'String', 'NOTIFLY_PROJECT_ID', '"765102ec85855aa680da35f1b0f55712"' buildConfigField 'String', 'NOTIFLY_USERNAME', '"voiceon"' buildConfigField 'String', 'NOTIFLY_PASSWORD', '"c6c585db0aaa4189be44d0467c7d66b6@A"' buildConfigField 'String', 'KAKAO_APP_KEY', '"231cf78acfa8252fca38b9eedf87c5cb"' buildConfigField 'String', 'GOOGLE_CLIENT_ID', '"983594297130-5hrmkh6vpskeq6v34350kmilf74574h2.apps.googleusercontent.com"' buildConfigField 'String', 'APPSCHEME', '"voiceon"' manifestPlaceholders = [ URISCHEME : "voiceon", APPLINK_HOST : "voiceon.onelink.me", FACEBOOK_APP_ID : "612448298237287", FACEBOOK_CLIENT_TOKEN: "32af760f4a7b7cb7e3b1e7ffd0b0da70", KAKAO_APP_KEY : "231cf78acfa8252fca38b9eedf87c5cb" ] } debug { minifyEnabled false debuggable true proguardFiles getDefaultProguardFile('proguard-android-optimize.txt'), 'proguard-rules.pro' applicationIdSuffix '.debug' buildConfigField 'String', 'BASE_URL', '"https://test-api.sodalive.net"' buildConfigField 'String', 'BOOTPAY_APP_ID', '"6242a7772701800023f68b2e"' buildConfigField 'String', 'BOOTPAY_APP_HECTO_ID', '"667fca5d3bab7404f831c3e4"' buildConfigField 'String', 'AGORA_APP_ID', '"b96574e191a9430fa54c605528aa3ef7"' buildConfigField 'String', 'AGORA_APP_CERTIFICATE', '"ae18ade3afcf4086bd4397726eb0654c"' buildConfigField 'String', 'NOTIFLY_PROJECT_ID', '"5f7ebe90d1ce5f0392164b8a53a662bc"' buildConfigField 'String', 'NOTIFLY_USERNAME', '"voiceon"' buildConfigField 'String', 'NOTIFLY_PASSWORD', '"c6c585db0aaa4189be44d0467c7d66b6@A"' buildConfigField 'String', 'KAKAO_APP_KEY', '"20cf19413d63bfdfd30e8e6dff933d33"' buildConfigField 'String', 'GOOGLE_CLIENT_ID', '"758414412471-mosodbj2chno7l1j0iihldh6edmk0gk9.apps.googleusercontent.com"' buildConfigField 'String', 'APPSCHEME', '"voiceon-test"' manifestPlaceholders = [ URISCHEME : "voiceon-test", APPLINK_HOST : "voiceon-test.onelink.me", FACEBOOK_APP_ID : "608674328645232", FACEBOOK_CLIENT_TOKEN: "3775e6ea83236a685d264b6c5a1bbb4d", KAKAO_APP_KEY : "20cf19413d63bfdfd30e8e6dff933d33" ] } } compileOptions { sourceCompatibility JavaVersion.VERSION_17 targetCompatibility JavaVersion.VERSION_17 } lint { checkDependencies true checkReleaseBuilds false } } dependencies { implementation "androidx.media:media:1.7.1" implementation 'androidx.core:core-ktx:1.16.0' implementation 'androidx.appcompat:appcompat:1.7.1' implementation 'androidx.recyclerview:recyclerview:1.4.0' implementation 'com.google.android.material:material:1.13.0' implementation 'androidx.constraintlayout:constraintlayout:2.2.1' implementation "androidx.swiperefreshlayout:swiperefreshlayout:1.1.0" implementation 'androidx.webkit:webkit:1.14.0' implementation 'androidx.lifecycle:lifecycle-livedata-ktx:2.9.4' implementation 'androidx.lifecycle:lifecycle-viewmodel-ktx:2.9.4' // Logger implementation("com.orhanobut:logger:2.2.0") { exclude group: 'com.android.support', module: 'support-annotations' } // image library implementation "io.coil-kt:coil:1.4.0" // Koin DI implementation "io.insert-koin:koin-android:3.1.3" // Preference implementation("androidx.preference:preference-ktx:1.2.1") { exclude group: 'androidx.lifecycle', module: 'lifecycle-viewmodel' exclude group: 'androidx.lifecycle', module: 'lifecycle-viewmodel-ktx' } // Gson implementation "com.google.code.gson:gson:2.13.2" // Network implementation "com.squareup.retrofit2:retrofit:3.0.0" implementation "com.squareup.retrofit2:converter-gson:3.0.0" implementation "com.squareup.retrofit2:adapter-rxjava3:3.0.0" implementation "com.squareup.okhttp3:logging-interceptor:5.2.1" // RxJava3 implementation "io.reactivex.rxjava3:rxjava:3.1.12" implementation "io.reactivex.rxjava3:rxandroid:3.0.2" implementation "com.jakewharton.rxbinding4:rxbinding:4.0.0" // permission implementation "io.github.ParkSangGwon:tedpermission-normal:3.4.2" implementation 'com.github.yalantis:ucrop:2.2.11' implementation 'com.github.zhpanvip:bannerviewpager:3.5.7' implementation 'com.google.android.gms:play-services-oss-licenses:17.1.0' // Firebase implementation platform('com.google.firebase:firebase-bom:33.16.0') implementation 'com.google.firebase:firebase-crashlytics-ktx' implementation 'com.google.firebase:firebase-analytics-ktx' implementation 'com.google.firebase:firebase-messaging-ktx' implementation 'com.google.firebase:firebase-config-ktx' implementation 'androidx.credentials:credentials:1.3.0' implementation 'androidx.credentials:credentials-play-services-auth:1.3.0' implementation 'com.google.android.libraries.identity.googleid:googleid:1.1.1' // bootpay implementation "io.github.bootpay:android:4.4.3" // agora implementation "io.agora.rtc:voice-sdk:4.5.2" implementation 'io.agora:agora-rtm:2.2.6' // Glide implementation 'com.github.bumptech.glide:glide:5.0.5' annotationProcessor 'com.github.bumptech.glide:compiler:5.0.5' // google in-app-purchase implementation "com.android.billingclient:billing-ktx:8.0.0" // ROOM ksp "androidx.room:room-compiler:2.8.3" implementation "androidx.room:room-ktx:2.8.3" implementation "androidx.room:room-runtime:2.8.3" implementation "androidx.room:room-rxjava3:2.8.3" implementation "org.jetbrains.kotlinx:kotlinx-coroutines-android:1.10.2" implementation "androidx.media3:media3-session:1.8.0" implementation "androidx.media3:media3-exoplayer:1.8.0" // Facebook implementation "com.facebook.android:facebook-core:18.0.0" // Appsflyer implementation 'com.appsflyer:af-android-sdk:6.17.4' // 노티플라이 implementation 'com.github.team-michael:notifly-android-sdk:1.12.0' // Kakao implementation "com.kakao.sdk:v2-common:2.21.0" implementation "com.kakao.sdk:v2-auth:2.21.0" implementation "com.kakao.sdk:v2-user:2.21.0" implementation 'io.github.glailton.expandabletextview:expandabletextview:1.0.4' // ----- Test dependencies ----- testImplementation 'junit:junit:4.13.2' testImplementation 'org.mockito:mockito-core:5.20.0' testImplementation 'org.mockito:mockito-inline:5.2.0' testImplementation 'org.mockito.kotlin:mockito-kotlin:6.1.0' testImplementation 'io.mockk:mockk:1.14.6' } // KSP args for Room schema export ksp { arg("room.schemaLocation", "$projectDir/schemas") arg("room.incremental", "true") arg("room.expandProjection", "true") } // Kotlin compiler and toolchain configuration (migrated from deprecated kotlinOptions.jvmTarget) kotlin { // Ensures Kotlin compiles with Java 17 toolchain jvmToolchain(17) // New DSL replacing kotlinOptions.jvmTarget compilerOptions { jvmTarget.set(JvmTarget.JVM_17) } }