Visual_Novel_Android/VisualNovel/app/build.gradle.kts

310 lines
9.3 KiB
Plaintext

import com.android.build.api.dsl.ApplicationProductFlavor
plugins {
id("com.android.application")
kotlin("android")
id("kotlin-parcelize")
kotlin("kapt")
id("dagger.hilt.android.plugin")
//TODO - enable later: id("com.google.gms.google-services")
id("com.google.firebase.crashlytics")
}
android {
namespace = Version.applicationId
compileSdk = 36
defaultConfig {
applicationId = Version.applicationId
minSdk = Version.minSdk
targetSdk = Version.targetSdk
compileSdk = Version.targetSdk
versionCode = Version.versionCode
versionName = Version.versionName
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
setProperty("archivesBaseName", "${Version.applicationId}-build${Version.versionCode}")
multiDexEnabled = true
ndk {
abiFilters += listOf("armeabi", "armeabi-v7a", "arm64-v8a", "x86", "x86_64")
}
renderscriptTargetApi = 23
renderscriptSupportModeEnabled = true
}
kapt {
correctErrorTypes = true
arguments {
arg("AROUTER_MODULE_NAME", project.name)
}
}
hilt {
enableExperimentalClasspathAggregation = true
enableAggregatingTask = false
}
buildFeatures {
dataBinding = true
viewBinding = true
}
kotlinOptions {
jvmTarget = JavaVersion.VERSION_17.toString()
}
signingConfigs {
val storeFileName = "storeFile"
val storePasswordName = "KEYSTORE_PWD"
val keyAliasName = "KEY_ALIAS"
val keyPasswordName = "KEY_PWD"
fun names(suffix: String = "") =
listOf(storeFileName + suffix, storePasswordName + suffix, keyAliasName + suffix, keyPasswordName + suffix)
create("release") {
storeFile = file(project.properties[names()[0]]?.toString() ?: "")
storePassword = project.properties[names()[1]] as? String?
keyAlias = project.properties[names()[2]] as? String?
keyPassword = project.properties[names()[3]] as? String?
}
getByName("debug") {
storeFile = file(project.properties[names()[0]]?.toString() ?: "")
storePassword = project.properties[names()[1]] as? String?
keyAlias = project.properties[names()[2]] as? String?
keyPassword = project.properties[names()[3]] as? String?
}
}
buildTypes {
release {
isMinifyEnabled = false
isShrinkResources = false
proguardFiles(
getDefaultProguardFile("proguard-android-optimize.txt"),
"proguard-rules.pro"
)
}
debug {
isMinifyEnabled = false
isShrinkResources = false
proguardFiles(
getDefaultProguardFile("proguard-android-optimize.txt"),
"proguard-rules.pro"
)
}
}
compileOptions {
isCoreLibraryDesugaringEnabled = true
targetCompatibility(JavaVersion.VERSION_17)
sourceCompatibility(JavaVersion.VERSION_17)
}
val flavorDimensionName = "VisualNovel"
flavorDimensions.add(flavorDimensionName)
productFlavors {
fun ApplicationProductFlavor.buildConfigString(name: String, value: String) =
buildConfigField("String", name, "\"$value\"")
fun ApplicationProductFlavor.buildConfigBoolean(name: String, value: String) =
buildConfigField("Boolean", name, value)
create("novelTest") {
dimension = flavorDimensionName
signingConfig = signingConfigs.getByName("debug")
buildConfigString("HOST", "https://www.xxxxx.ai/")
buildConfigString("ABOUT_US", "https://www.xxxxx.ai/about")
buildConfigString("API_FROG", "https://www.test-frog.xxxxx.ai")
buildConfigString("EPAL_TERMS_SERVICES", "https://www.xxxxx.ai/policy/tos")
buildConfigString("API_SHARK", "https://test-shark.xxxxx.ai")
buildConfigString("API_COW", "https://test-cow.xxxxx.ai")
buildConfigString("API_PIGEON", "https://test-pigeon.xxxx.ai")
buildConfigString("API_LION", "https://test-lion.xxxx.ai")
buildConfigString("RECHAEGE_SERVICES", "https://test.xxxxx.ai/policy/recharge")
buildConfigString("RTC_APP_ID", "689ade491323ae01797818e0-XXX-TODO")
}
create("product") {
dimension = flavorDimensionName
signingConfig = signingConfigs.getByName("release")
buildConfigString("HOST", "https://test.xxxxx.ai/")
buildConfigString("ABOUT_US", "https://test.xxxxx.ai/about")
buildConfigString("API_FROG", "https://test-frog.xxxxx.ai")
buildConfigString("EPAL_TERMS_SERVICES", "https://test.xxxxx.ai/policy/tos")
buildConfigString("API_SHARK", "https://test-shark.xxxxx.ai")
buildConfigString("API_COW", "https://test-cow.xxxxx.ai")
buildConfigString("API_PIGEON", "https://test-pigeon.xxxx.ai")
buildConfigString("API_LION", "https://test-lion.xxxx.ai")
buildConfigString("RECHAEGE_SERVICES", "https://test.xxxxx.ai/policy/recharge")
buildConfigString("RTC_APP_ID", "689ade491323ae01797818e0-XXX-TODO")
}
}
}
dependencies {
implementation(fileTree("dir" to "libs", "include" to listOf("*.jar", "*.aar")))
coreLibraryDesugaring("com.android.tools:desugar_jdk_libs:2.1.5")
coreLibraryDesugaring(Deps.desugar)
implementation(libs.androidx.core.ktx)
implementation(libs.androidx.appcompat)
implementation(libs.material)
implementation(libs.androidx.activity)
implementation(libs.androidx.constraintlayout)
testImplementation(libs.junit)
androidTestImplementation(libs.androidx.junit)
androidTestImplementation(libs.androidx.espresso.core)
//dagger hilt
implementation(Deps.hilt)
kapt(Deps.hiltAndroidCompiler)
kapt(Deps.hiltCompiler)
//Retrofit2
implementation(Deps.retrofit2)
implementation(Deps.retrofitAdapterRxjava2)
implementation(Deps.retrofit2ConverterGson)
implementation(Deps.okhttp3LoggingInterceptor)
// timber used for: recording logs
implementation(Deps.timber)
// tecent mmkv
implementation(Deps.mmkv)
implementation(Deps.material)
// gson
implementation(Deps.gson)
// viewpager2
implementation(Deps.viewpager2)
// for multiple dex support
implementation(Deps.multidex)
//google firebase
implementation(platform(Deps.firebaseBom))
implementation(Deps.firebaseMessageKtx)
implementation(Deps.firebaseAnalyticsKtx)
implementation(Deps.firebaseCrashlyticsKtx)
implementation(Deps.firebaseAuthKtx)
implementation(Deps.credentials)
implementation(Deps.credentialsAuth)
implementation(Deps.googleId)
// coroutine support
implementation(Deps.kotlinCoroutinesCore)
implementation(Deps.kotlinCoroutinesAndroid)
implementation(Deps.appcompat)
implementation(Deps.constraintlayout)
implementation(Deps.flexbox)
implementation(Deps.coreKtx)
implementation(Deps.activityKtx)
implementation(Deps.activityCompose)
implementation(Deps.fragmentKtx)
// vm and lifecycle
implementation(Deps.viewModel)
implementation(Deps.livedata)
implementation(Deps.lifecycleJava8)
implementation(Deps.lifecycleRuntime)
implementation(Deps.datastore)
//glide
implementation(Deps.glide)
kapt(Deps.glideCompiler)
implementation(Deps.glideTransformations)
implementation(Deps.glideWebpdecoder)
// eventbus
implementation(Deps.modularEventbus)
kapt(Deps.modularEventbusCompiler)
// indicator
implementation(Deps.magicIndicator)
// BlurView and Luban
implementation(Deps.Luban)
implementation(Deps.BlurView)
//ali aRouter
implementation(Deps.arouter)
kapt(Deps.arouterCompiler)
//Permission
implementation(Deps.permission)
// lottie
implementation(Deps.lottie)
// float window
implementation(Deps.easyFloat)
// guide
implementation(Deps.newbieGuide)
// refreshLayout
implementation(Deps.refreshLayout)
// apng
implementation(Deps.apng)
// softKey board
implementation(Deps.skbGlobal)
// baseRecyclerAdapter
implementation(Deps.brvah)
implementation(Deps.swipeMenuLayout)
implementation(Deps.BRV)
//banner
implementation(Deps.banner)
// spannable
implementation(Deps.spannablex)
// Media related libs
implementation(Deps.mp3Recorder)
implementation(Deps.photoView)
implementation(Deps.transition)
implementation(Deps.paging)
implementation(Deps.exoplayer)
implementation(Deps.subsamplingScaleImageView)
//s3图片上传 oss
implementation(Deps.awsS3)
implementation(Deps.awsCore)
// 网易 云信
implementation(Deps.nimBase)
implementation(Deps.nimPush)
//内购 / 充值
implementation(Deps.billing)
// RTC : 实时通信
implementation(Deps.BytePlusRTC)
implementation(project(mapOf("path" to ":loadingstateview")))
implementation(project(mapOf("path" to ":loadingstateview-ktx")))
implementation(project(mapOf("path" to ":viewbinding-base")))
implementation(project(mapOf("path" to ":viewbinding-nonreflection-ktx")))
}