283 lines
		
	
	
		
			8.1 KiB
		
	
	
	
		
			Plaintext
		
	
	
	
		
		
			
		
	
	
			283 lines
		
	
	
		
			8.1 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") | ||
|  |         } | ||
|  | 
 | ||
|  | 
 | ||
|  |         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") | ||
|  |         } | ||
|  |     } | ||
|  | } | ||
|  | 
 | ||
|  | 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) | ||
|  | 
 | ||
|  | 
 | ||
|  | 
 | ||
|  |     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"))) | ||
|  | } |