2022-07-31 11:55:53 -04:00
|
|
|
import org.gradle.api.tasks.testing.logging.TestLogEvent
|
2020-12-31 11:28:34 -05:00
|
|
|
import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
|
|
|
|
|
|
|
|
plugins {
|
|
|
|
id("com.android.application")
|
|
|
|
id("com.mikepenz.aboutlibraries.plugin")
|
|
|
|
kotlin("android")
|
|
|
|
kotlin("plugin.serialization")
|
|
|
|
id("com.github.zellius.shortcut-helper")
|
2022-04-22 17:29:24 -04:00
|
|
|
id("com.squareup.sqldelight")
|
2020-12-31 11:28:34 -05:00
|
|
|
}
|
|
|
|
|
2020-12-31 11:32:18 -05:00
|
|
|
if (gradle.startParameter.taskRequests.toString().contains("Standard")) {
|
2022-03-04 09:58:31 -05:00
|
|
|
apply<com.google.gms.googleservices.GoogleServicesPlugin>()
|
2020-12-31 11:32:18 -05:00
|
|
|
}
|
|
|
|
|
2020-12-31 11:28:34 -05:00
|
|
|
shortcutHelper.setFilePath("./shortcuts.xml")
|
|
|
|
|
2022-08-28 09:45:33 -04:00
|
|
|
val SUPPORTED_ABIS = setOf("armeabi-v7a", "arm64-v8a", "x86", "x86_64")
|
2021-06-01 09:55:03 -04:00
|
|
|
|
2020-12-31 11:28:34 -05:00
|
|
|
android {
|
2022-07-02 13:08:22 -04:00
|
|
|
namespace = "eu.kanade.tachiyomi"
|
2022-03-12 16:45:36 -05:00
|
|
|
compileSdk = AndroidConfig.compileSdk
|
|
|
|
ndkVersion = AndroidConfig.ndk
|
2020-12-31 11:28:34 -05:00
|
|
|
|
|
|
|
defaultConfig {
|
|
|
|
applicationId = "eu.kanade.tachiyomi"
|
2022-03-12 16:45:36 -05:00
|
|
|
minSdk = AndroidConfig.minSdk
|
|
|
|
targetSdk = AndroidConfig.targetSdk
|
2022-10-18 16:33:26 -04:00
|
|
|
versionCode = 88
|
2022-08-14 10:32:04 -04:00
|
|
|
versionName = "0.13.6"
|
2020-12-31 11:28:34 -05:00
|
|
|
|
|
|
|
buildConfigField("String", "COMMIT_COUNT", "\"${getCommitCount()}\"")
|
|
|
|
buildConfigField("String", "COMMIT_SHA", "\"${getGitSha()}\"")
|
|
|
|
buildConfigField("String", "BUILD_TIME", "\"${getBuildTime()}\"")
|
|
|
|
buildConfigField("boolean", "INCLUDE_UPDATER", "false")
|
2021-10-09 10:28:43 -04:00
|
|
|
buildConfigField("boolean", "PREVIEW", "false")
|
2020-12-31 11:28:34 -05:00
|
|
|
|
2021-01-17 11:09:29 -05:00
|
|
|
// Please disable ACRA or use your own instance in forked versions of the project
|
|
|
|
buildConfigField("String", "ACRA_URI", "\"https://tachiyomi.kanade.eu/crash_report\"")
|
|
|
|
|
2020-12-31 11:28:34 -05:00
|
|
|
ndk {
|
2021-06-01 09:55:03 -04:00
|
|
|
abiFilters += SUPPORTED_ABIS
|
2020-12-31 11:28:34 -05:00
|
|
|
}
|
2021-11-07 09:20:13 -05:00
|
|
|
|
|
|
|
testInstrumentationRunner = "androidx.test.runner.AndroidJUnitRunner"
|
2020-12-31 11:28:34 -05:00
|
|
|
}
|
|
|
|
|
2021-06-01 09:55:03 -04:00
|
|
|
splits {
|
|
|
|
abi {
|
2021-08-06 15:38:16 -04:00
|
|
|
isEnable = true
|
2021-06-01 09:55:03 -04:00
|
|
|
reset()
|
|
|
|
include(*SUPPORTED_ABIS.toTypedArray())
|
|
|
|
isUniversalApk = true
|
|
|
|
}
|
2020-12-31 11:28:34 -05:00
|
|
|
}
|
|
|
|
|
|
|
|
buildTypes {
|
|
|
|
named("debug") {
|
|
|
|
versionNameSuffix = "-${getCommitCount()}"
|
|
|
|
applicationIdSuffix = ".debug"
|
|
|
|
}
|
|
|
|
named("release") {
|
2021-05-22 14:47:40 -04:00
|
|
|
isShrinkResources = true
|
|
|
|
isMinifyEnabled = true
|
|
|
|
proguardFiles("proguard-android-optimize.txt", "proguard-rules.pro")
|
2020-12-31 11:28:34 -05:00
|
|
|
}
|
2021-10-09 10:28:43 -04:00
|
|
|
create("preview") {
|
|
|
|
initWith(getByName("release"))
|
|
|
|
buildConfigField("boolean", "PREVIEW", "true")
|
|
|
|
|
|
|
|
val debugType = getByName("debug")
|
|
|
|
signingConfig = debugType.signingConfig
|
|
|
|
versionNameSuffix = debugType.versionNameSuffix
|
|
|
|
applicationIdSuffix = debugType.applicationIdSuffix
|
2022-09-09 22:29:40 -04:00
|
|
|
matchingFallbacks.add("release")
|
2021-10-09 10:28:43 -04:00
|
|
|
}
|
2022-10-04 09:22:55 -04:00
|
|
|
create("benchmark") {
|
|
|
|
initWith(getByName("release"))
|
|
|
|
|
|
|
|
signingConfig = signingConfigs.getByName("debug")
|
|
|
|
matchingFallbacks.add("release")
|
|
|
|
isDebuggable = false
|
|
|
|
versionNameSuffix = "-benchmark"
|
|
|
|
applicationIdSuffix = ".benchmark"
|
|
|
|
}
|
2020-12-31 11:28:34 -05:00
|
|
|
}
|
|
|
|
|
2021-05-22 14:47:40 -04:00
|
|
|
sourceSets {
|
2021-10-09 10:28:43 -04:00
|
|
|
getByName("preview").res.srcDirs("src/debug/res")
|
2022-10-04 09:22:55 -04:00
|
|
|
getByName("benchmark").res.srcDirs("src/debug/res")
|
2021-05-22 14:47:40 -04:00
|
|
|
}
|
|
|
|
|
2021-08-22 18:05:18 -04:00
|
|
|
flavorDimensions.add("default")
|
2020-12-31 11:28:34 -05:00
|
|
|
|
|
|
|
productFlavors {
|
|
|
|
create("standard") {
|
|
|
|
buildConfigField("boolean", "INCLUDE_UPDATER", "true")
|
|
|
|
dimension = "default"
|
|
|
|
}
|
|
|
|
create("dev") {
|
2021-08-22 18:05:18 -04:00
|
|
|
resourceConfigurations.addAll(listOf("en", "xxhdpi"))
|
2020-12-31 11:28:34 -05:00
|
|
|
dimension = "default"
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
|
|
|
packagingOptions {
|
2021-08-22 18:05:18 -04:00
|
|
|
resources.excludes.addAll(listOf(
|
|
|
|
"META-INF/DEPENDENCIES",
|
|
|
|
"LICENSE.txt",
|
|
|
|
"META-INF/LICENSE",
|
|
|
|
"META-INF/LICENSE.txt",
|
2021-10-16 10:21:25 -04:00
|
|
|
"META-INF/README.md",
|
2021-08-22 18:05:18 -04:00
|
|
|
"META-INF/NOTICE",
|
|
|
|
"META-INF/*.kotlin_module",
|
2021-10-16 10:21:25 -04:00
|
|
|
"META-INF/*.version",
|
2021-08-22 18:05:18 -04:00
|
|
|
))
|
2020-12-31 11:28:34 -05:00
|
|
|
}
|
|
|
|
|
|
|
|
dependenciesInfo {
|
|
|
|
includeInApk = false
|
|
|
|
}
|
|
|
|
|
2021-06-01 09:55:03 -04:00
|
|
|
buildFeatures {
|
|
|
|
viewBinding = true
|
2022-04-22 17:29:24 -04:00
|
|
|
compose = true
|
2021-11-07 09:20:13 -05:00
|
|
|
|
|
|
|
// Disable some unused things
|
|
|
|
aidl = false
|
|
|
|
renderScript = false
|
|
|
|
shaders = false
|
2021-06-01 09:55:03 -04:00
|
|
|
}
|
|
|
|
|
2021-07-28 15:08:04 -04:00
|
|
|
lint {
|
2022-01-25 22:49:50 -05:00
|
|
|
abortOnError = false
|
|
|
|
checkReleaseBuilds = false
|
2020-12-31 11:28:34 -05:00
|
|
|
}
|
|
|
|
|
2022-04-22 17:29:24 -04:00
|
|
|
composeOptions {
|
2022-06-29 22:45:11 -04:00
|
|
|
kotlinCompilerExtensionVersion = compose.versions.compiler.get()
|
2022-04-22 17:29:24 -04:00
|
|
|
}
|
|
|
|
|
2020-12-31 11:28:34 -05:00
|
|
|
compileOptions {
|
2022-10-26 09:22:38 -04:00
|
|
|
sourceCompatibility = JavaVersion.VERSION_1_8
|
|
|
|
targetCompatibility = JavaVersion.VERSION_1_8
|
2020-12-31 11:28:34 -05:00
|
|
|
}
|
|
|
|
|
|
|
|
kotlinOptions {
|
2022-10-26 09:22:38 -04:00
|
|
|
jvmTarget = JavaVersion.VERSION_1_8.toString()
|
2020-12-31 11:28:34 -05:00
|
|
|
}
|
2022-05-29 12:12:06 -04:00
|
|
|
|
|
|
|
sqldelight {
|
|
|
|
database("Database") {
|
|
|
|
packageName = "eu.kanade.tachiyomi"
|
|
|
|
dialect = "sqlite:3.24"
|
|
|
|
}
|
|
|
|
}
|
2020-12-31 11:28:34 -05:00
|
|
|
}
|
|
|
|
|
|
|
|
dependencies {
|
2022-09-10 09:58:45 -04:00
|
|
|
implementation(project(":i18n"))
|
2022-09-15 18:12:27 -04:00
|
|
|
implementation(project(":core"))
|
|
|
|
implementation(project(":source-api"))
|
2022-09-10 09:58:45 -04:00
|
|
|
|
2022-04-24 10:22:22 -04:00
|
|
|
// Compose
|
2022-10-26 18:12:32 -04:00
|
|
|
implementation(platform(compose.bom))
|
2022-04-24 10:22:22 -04:00
|
|
|
implementation(compose.activity)
|
2022-04-22 17:29:24 -04:00
|
|
|
implementation(compose.foundation)
|
|
|
|
implementation(compose.material3.core)
|
|
|
|
implementation(compose.material3.adapter)
|
2022-04-23 12:05:00 -04:00
|
|
|
implementation(compose.material.icons)
|
2022-04-22 17:29:24 -04:00
|
|
|
implementation(compose.animation)
|
2022-06-25 11:03:48 -04:00
|
|
|
implementation(compose.animation.graphics)
|
2022-04-22 17:29:24 -04:00
|
|
|
implementation(compose.ui.tooling)
|
2022-05-23 18:03:46 -04:00
|
|
|
implementation(compose.ui.util)
|
2022-04-24 10:22:22 -04:00
|
|
|
implementation(compose.accompanist.webview)
|
2022-05-15 09:59:53 -04:00
|
|
|
implementation(compose.accompanist.swiperefresh)
|
2022-06-25 11:03:48 -04:00
|
|
|
implementation(compose.accompanist.flowlayout)
|
2022-07-22 19:05:50 -04:00
|
|
|
implementation(compose.accompanist.pager.core)
|
|
|
|
implementation(compose.accompanist.pager.indicators)
|
2022-10-15 11:38:01 -04:00
|
|
|
implementation(compose.accompanist.permissions)
|
2022-04-22 17:29:24 -04:00
|
|
|
|
|
|
|
implementation(androidx.paging.runtime)
|
|
|
|
implementation(androidx.paging.compose)
|
|
|
|
|
2022-07-03 10:17:41 -04:00
|
|
|
implementation(libs.bundles.sqlite)
|
2022-05-14 10:04:43 -04:00
|
|
|
implementation(androidx.sqlite)
|
2022-04-22 17:29:24 -04:00
|
|
|
implementation(libs.sqldelight.android.driver)
|
|
|
|
implementation(libs.sqldelight.coroutines)
|
|
|
|
implementation(libs.sqldelight.android.paging)
|
|
|
|
|
2022-03-04 09:58:31 -05:00
|
|
|
implementation(kotlinx.reflect)
|
|
|
|
implementation(kotlinx.bundles.coroutines)
|
2021-07-04 12:16:12 -04:00
|
|
|
|
2020-12-31 11:28:34 -05:00
|
|
|
// AndroidX libraries
|
2022-03-04 09:58:31 -05:00
|
|
|
implementation(androidx.annotation)
|
|
|
|
implementation(androidx.appcompat)
|
|
|
|
implementation(androidx.biometricktx)
|
|
|
|
implementation(androidx.constraintlayout)
|
|
|
|
implementation(androidx.coordinatorlayout)
|
|
|
|
implementation(androidx.corektx)
|
|
|
|
implementation(androidx.splashscreen)
|
|
|
|
implementation(androidx.recyclerview)
|
|
|
|
implementation(androidx.viewpager)
|
2022-07-31 11:31:40 -04:00
|
|
|
implementation(androidx.glance)
|
2022-10-04 09:22:55 -04:00
|
|
|
implementation(androidx.profileinstaller)
|
2022-03-04 09:58:31 -05:00
|
|
|
|
|
|
|
implementation(androidx.bundles.lifecycle)
|
2020-12-31 11:28:34 -05:00
|
|
|
|
|
|
|
// Job scheduling
|
2022-04-11 08:56:22 -04:00
|
|
|
implementation(androidx.bundles.workmanager)
|
2020-12-31 11:28:34 -05:00
|
|
|
|
2021-08-07 10:50:50 -04:00
|
|
|
// RX
|
2022-03-04 09:58:31 -05:00
|
|
|
implementation(libs.bundles.reactivex)
|
|
|
|
implementation(libs.flowreactivenetwork)
|
2020-12-31 11:28:34 -05:00
|
|
|
|
|
|
|
// Network client
|
2022-03-04 09:58:31 -05:00
|
|
|
implementation(libs.bundles.okhttp)
|
|
|
|
implementation(libs.okio)
|
2020-12-31 11:28:34 -05:00
|
|
|
|
|
|
|
// TLS 1.3 support for Android < 10
|
2022-03-04 09:58:31 -05:00
|
|
|
implementation(libs.conscrypt.android)
|
2020-12-31 11:28:34 -05:00
|
|
|
|
2021-08-07 10:50:50 -04:00
|
|
|
// Data serialization (JSON, protobuf)
|
2022-03-04 09:58:31 -05:00
|
|
|
implementation(kotlinx.bundles.serialization)
|
2021-09-06 11:54:00 -04:00
|
|
|
|
2021-08-07 10:50:50 -04:00
|
|
|
// HTML parser
|
2022-03-04 09:58:31 -05:00
|
|
|
implementation(libs.jsoup)
|
2021-08-07 10:50:50 -04:00
|
|
|
|
2020-12-31 11:28:34 -05:00
|
|
|
// Disk
|
2022-03-04 09:58:31 -05:00
|
|
|
implementation(libs.disklrucache)
|
|
|
|
implementation(libs.unifile)
|
|
|
|
implementation(libs.junrar)
|
2020-12-31 11:28:34 -05:00
|
|
|
|
|
|
|
// Preferences
|
2022-03-04 09:58:31 -05:00
|
|
|
implementation(libs.preferencektx)
|
2020-12-31 11:28:34 -05:00
|
|
|
|
|
|
|
// Model View Presenter
|
2022-03-04 09:58:31 -05:00
|
|
|
implementation(libs.bundles.nucleus)
|
2020-12-31 11:28:34 -05:00
|
|
|
|
|
|
|
// Dependency injection
|
2022-03-04 09:58:31 -05:00
|
|
|
implementation(libs.injekt.core)
|
2020-12-31 11:28:34 -05:00
|
|
|
|
2021-08-07 10:50:50 -04:00
|
|
|
// Image loading
|
2022-03-04 09:58:31 -05:00
|
|
|
implementation(libs.bundles.coil)
|
2020-12-31 11:28:34 -05:00
|
|
|
|
2022-03-04 09:58:31 -05:00
|
|
|
implementation(libs.subsamplingscaleimageview) {
|
2021-05-25 13:42:48 -04:00
|
|
|
exclude(module = "image-decoder")
|
|
|
|
}
|
2022-03-04 09:58:31 -05:00
|
|
|
implementation(libs.image.decoder)
|
2020-12-31 11:28:34 -05:00
|
|
|
|
|
|
|
// Sort
|
2022-03-04 09:58:31 -05:00
|
|
|
implementation(libs.natural.comparator)
|
2020-12-31 11:28:34 -05:00
|
|
|
|
2021-08-07 10:50:50 -04:00
|
|
|
// UI libraries
|
2022-03-04 09:58:31 -05:00
|
|
|
implementation(libs.material)
|
|
|
|
implementation(libs.flexible.adapter.core)
|
|
|
|
implementation(libs.flexible.adapter.ui)
|
|
|
|
implementation(libs.photoview)
|
|
|
|
implementation(libs.directionalviewpager) {
|
2021-09-20 14:33:35 -04:00
|
|
|
exclude(group = "androidx.viewpager", module = "viewpager")
|
|
|
|
}
|
2022-03-04 09:58:31 -05:00
|
|
|
implementation(libs.insetter)
|
2022-04-17 11:30:05 -04:00
|
|
|
implementation(libs.markwon)
|
2022-04-23 10:52:19 -04:00
|
|
|
implementation(libs.aboutLibraries.compose)
|
2022-09-09 22:29:40 -04:00
|
|
|
implementation(libs.cascade)
|
2022-10-15 11:38:01 -04:00
|
|
|
implementation(libs.numberpicker)
|
|
|
|
implementation(libs.bundles.voyager)
|
2020-12-31 11:28:34 -05:00
|
|
|
|
|
|
|
// Conductor
|
2022-03-04 09:58:31 -05:00
|
|
|
implementation(libs.bundles.conductor)
|
2020-12-31 11:28:34 -05:00
|
|
|
|
|
|
|
// FlowBinding
|
2022-03-04 09:58:31 -05:00
|
|
|
implementation(libs.bundles.flowbinding)
|
2020-12-31 11:28:34 -05:00
|
|
|
|
2021-08-07 10:50:50 -04:00
|
|
|
// Logging
|
2022-03-04 09:58:31 -05:00
|
|
|
implementation(libs.logcat)
|
2021-08-07 10:50:50 -04:00
|
|
|
|
|
|
|
// Crash reports/analytics
|
2022-03-04 09:58:31 -05:00
|
|
|
implementation(libs.acra.http)
|
|
|
|
"standardImplementation"(libs.firebase.analytics)
|
2021-08-07 10:50:50 -04:00
|
|
|
|
2021-09-25 14:31:52 -04:00
|
|
|
// Shizuku
|
2022-03-04 09:58:31 -05:00
|
|
|
implementation(libs.bundles.shizuku)
|
2021-09-25 14:31:52 -04:00
|
|
|
|
2020-12-31 11:28:34 -05:00
|
|
|
// Tests
|
2022-03-04 09:58:31 -05:00
|
|
|
testImplementation(libs.junit)
|
2020-12-31 11:28:34 -05:00
|
|
|
|
|
|
|
// For detecting memory leaks; see https://square.github.io/leakcanary/
|
2022-03-04 09:58:31 -05:00
|
|
|
// debugImplementation(libs.leakcanary.android)
|
2022-04-24 16:28:09 -04:00
|
|
|
implementation(libs.leakcanary.plumber)
|
2020-12-31 11:28:34 -05:00
|
|
|
}
|
|
|
|
|
2022-10-04 09:22:55 -04:00
|
|
|
androidComponents {
|
|
|
|
beforeVariants { variantBuilder ->
|
|
|
|
// Disables standardBenchmark
|
|
|
|
if (variantBuilder.buildType == "benchmark") {
|
|
|
|
variantBuilder.enable = variantBuilder.productFlavors.containsAll(listOf("default" to "dev"))
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2020-12-31 11:28:34 -05:00
|
|
|
tasks {
|
2022-04-24 16:16:05 -04:00
|
|
|
withType<Test> {
|
|
|
|
useJUnitPlatform()
|
|
|
|
testLogging {
|
2022-07-31 11:55:53 -04:00
|
|
|
events(TestLogEvent.PASSED, TestLogEvent.SKIPPED, TestLogEvent.FAILED)
|
2022-04-24 16:16:05 -04:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2022-08-18 14:06:32 -04:00
|
|
|
withType<org.jmailen.gradle.kotlinter.tasks.LintTask>().configureEach {
|
2022-08-31 15:56:08 -04:00
|
|
|
exclude { it.file.path.contains("generated[\\\\/]".toRegex()) }
|
2022-08-18 14:06:32 -04:00
|
|
|
}
|
|
|
|
|
2020-12-31 11:28:34 -05:00
|
|
|
// See https://kotlinlang.org/docs/reference/experimental.html#experimental-status-of-experimental-api(-markers)
|
|
|
|
withType<KotlinCompile> {
|
|
|
|
kotlinOptions.freeCompilerArgs += listOf(
|
2022-04-28 18:09:16 -04:00
|
|
|
"-opt-in=coil.annotation.ExperimentalCoilApi",
|
2022-08-05 23:11:06 -04:00
|
|
|
"-opt-in=com.google.accompanist.pager.ExperimentalPagerApi",
|
2022-10-15 11:38:01 -04:00
|
|
|
"-opt-in=com.google.accompanist.permissions.ExperimentalPermissionsApi",
|
2022-10-09 15:49:32 -04:00
|
|
|
"-opt-in=androidx.compose.material.ExperimentalMaterialApi",
|
2022-04-28 18:09:16 -04:00
|
|
|
"-opt-in=androidx.compose.material3.ExperimentalMaterial3Api",
|
|
|
|
"-opt-in=androidx.compose.ui.ExperimentalComposeUiApi",
|
2022-06-25 11:03:48 -04:00
|
|
|
"-opt-in=androidx.compose.foundation.ExperimentalFoundationApi",
|
2022-10-15 11:38:01 -04:00
|
|
|
"-opt-in=androidx.compose.animation.ExperimentalAnimationApi",
|
2022-06-25 11:03:48 -04:00
|
|
|
"-opt-in=androidx.compose.animation.graphics.ExperimentalAnimationGraphicsApi",
|
2022-08-10 23:26:34 -04:00
|
|
|
"-opt-in=kotlinx.coroutines.ExperimentalCoroutinesApi",
|
|
|
|
"-opt-in=kotlinx.coroutines.FlowPreview",
|
2022-08-05 23:11:06 -04:00
|
|
|
"-opt-in=kotlinx.coroutines.InternalCoroutinesApi",
|
|
|
|
"-opt-in=kotlinx.serialization.ExperimentalSerializationApi",
|
2020-12-31 11:28:34 -05:00
|
|
|
)
|
|
|
|
}
|
|
|
|
|
|
|
|
preBuild {
|
2022-08-18 14:06:32 -04:00
|
|
|
val ktlintTask = if (System.getenv("GITHUB_BASE_REF") == null) formatKotlin else lintKotlin
|
2022-09-10 09:58:45 -04:00
|
|
|
dependsOn(ktlintTask)
|
2020-12-31 11:28:34 -05:00
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2020-12-31 11:32:18 -05:00
|
|
|
buildscript {
|
|
|
|
dependencies {
|
2022-03-04 09:58:31 -05:00
|
|
|
classpath(kotlinx.gradle)
|
2021-01-17 11:09:29 -05:00
|
|
|
}
|
|
|
|
}
|