2020-05-21 15:06:24 +02:00
import org.jetbrains.kotlin.gradle.tasks.AbstractKotlinCompile
2015-12-12 02:08:47 +01:00
import java.text.SimpleDateFormat
2015-09-24 17:27:43 +02:00
apply plugin: 'com.android.application'
2020-06-09 00:26:20 +02:00
apply plugin: 'com.mikepenz.aboutlibraries.plugin'
2016-02-17 01:44:21 +01:00
apply plugin: 'kotlin-android'
2017-10-14 18:16:11 +02:00
apply plugin: 'kotlin-kapt'
2020-12-14 00:01:51 +01:00
apply plugin: 'kotlin-parcelize'
2020-10-11 20:53:02 +02:00
apply plugin: 'kotlinx-serialization'
2017-10-28 14:44:19 +02:00
apply plugin: 'com.github.zellius.shortcut-helper'
2020-02-27 00:00:51 +01:00
2017-10-28 14:44:19 +02:00
shortcutHelper . filePath = './shortcuts.xml'
2016-09-23 20:50:01 +02:00
2015-12-12 02:08:47 +01:00
ext {
// Git is needed in your system PATH for these commands to work.
// If it's not installed, you can return a random value as a workaround
getCommitCount = {
2016-05-25 16:10:03 +02:00
return 'git rev-list --count HEAD' . execute ( ) . text . trim ( )
2015-12-12 02:08:47 +01:00
// return "1"
}
getGitSha = {
return 'git rev-parse --short HEAD' . execute ( ) . text . trim ( )
// return "1"
}
getBuildTime = {
def df = new SimpleDateFormat ( "yyyy-MM-dd'T'HH:mm'Z'" )
df . setTimeZone ( TimeZone . getTimeZone ( "UTC" ) )
return df . format ( new Date ( ) )
}
2020-06-06 17:40:46 +02:00
}
2015-09-24 17:27:43 +02:00
android {
2020-07-01 17:53:30 +02:00
compileSdkVersion AndroidConfig . compileSdk
buildToolsVersion AndroidConfig . buildTools
2020-10-04 18:44:04 +02:00
ndkVersion AndroidConfig . ndk
2015-09-24 17:27:43 +02:00
defaultConfig {
2016-01-15 15:18:19 +01:00
applicationId "eu.kanade.tachiyomi"
2020-07-01 17:53:30 +02:00
minSdkVersion AndroidConfig . minSdk
targetSdkVersion AndroidConfig . targetSdk
2020-01-05 17:29:27 +01:00
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
2020-12-21 23:10:08 +01:00
versionCode 54
2020-12-14 03:02:28 +01:00
versionName "0.10.7"
2015-12-12 02:08:47 +01:00
buildConfigField "String" , "COMMIT_COUNT" , "\"${getCommitCount()}\""
buildConfigField "String" , "COMMIT_SHA" , "\"${getGitSha()}\""
buildConfigField "String" , "BUILD_TIME" , "\"${getBuildTime()}\""
2017-03-08 18:56:27 +01:00
buildConfigField "boolean" , "INCLUDE_UPDATER" , "false"
2016-03-06 18:18:09 +01:00
2019-04-13 14:57:58 +02:00
multiDexEnabled true
2016-10-14 17:33:58 +02:00
ndk {
2017-02-16 23:22:30 +01:00
abiFilters "armeabi-v7a" , "arm64-v8a" , "x86"
2016-10-14 17:33:58 +02:00
}
2015-09-24 17:27:43 +02:00
}
2020-05-28 23:40:16 +02:00
buildFeatures {
viewBinding = true
2020-04-09 05:06:28 +02:00
}
2015-09-24 17:27:43 +02:00
buildTypes {
2016-01-17 15:03:04 +01:00
debug {
2016-07-24 15:41:58 +02:00
versionNameSuffix "-${getCommitCount()}"
2016-01-17 15:03:04 +01:00
applicationIdSuffix ".debug"
2015-09-24 17:27:43 +02:00
}
2020-07-10 15:36:33 +02:00
release {
2020-12-13 05:50:05 +01:00
// postprocessing {
// obfuscate false
// optimizeCode true
// removeUnusedCode false
// removeUnusedResources true
// proguardFiles 'proguard-rules.pro'
// }
2020-07-10 15:36:33 +02:00
}
2015-09-24 17:27:43 +02:00
}
2017-10-28 14:44:19 +02:00
flavorDimensions "default"
2016-11-06 18:44:14 +01:00
productFlavors {
standard {
buildConfigField "boolean" , "INCLUDE_UPDATER" , "true"
2017-10-28 14:44:19 +02:00
dimension "default"
2016-11-06 18:44:14 +01:00
}
2020-06-06 17:40:46 +02:00
fdroid {
dimension "default"
}
2017-03-08 18:56:27 +01:00
dev {
resConfigs "en" , "xxhdpi"
2017-10-28 14:44:19 +02:00
dimension "default"
2016-11-06 18:44:14 +01:00
}
}
2015-09-24 17:27:43 +02:00
packagingOptions {
exclude 'META-INF/DEPENDENCIES'
exclude 'LICENSE.txt'
exclude 'META-INF/LICENSE'
exclude 'META-INF/LICENSE.txt'
exclude 'META-INF/NOTICE'
}
2020-05-28 23:40:16 +02:00
dependenciesInfo {
includeInApk = false
}
2015-09-24 17:27:43 +02:00
lintOptions {
2020-06-17 15:10:12 +02:00
disable 'MissingTranslation'
disable 'ExtraTranslation'
2015-09-24 17:27:43 +02:00
abortOnError false
2016-01-25 15:15:47 +01:00
checkReleaseBuilds false
2015-09-24 17:27:43 +02:00
}
2019-12-26 22:47:33 +01:00
compileOptions {
2020-07-01 17:53:30 +02:00
sourceCompatibility = JavaVersion . VERSION_1_8
targetCompatibility = JavaVersion . VERSION_1_8
2019-12-26 22:47:33 +01:00
}
kotlinOptions {
2020-07-31 21:31:42 +02:00
jvmTarget = JavaVersion . VERSION_1_8 . toString ( )
2019-12-26 22:47:33 +01:00
}
2015-09-24 17:27:43 +02:00
}
dependencies {
2020-10-26 15:52:28 +01:00
// Source models and interfaces from Tachiyomi 1.x
implementation 'tachiyomi.sourceapi:source-api:1.1'
2020-06-11 05:02:31 +02:00
// AndroidX libraries
2020-10-10 22:34:06 +02:00
implementation 'androidx.annotation:annotation:1.2.0-alpha01'
2020-08-20 14:46:16 +02:00
implementation 'androidx.appcompat:appcompat:1.3.0-alpha02'
2020-12-02 23:02:12 +01:00
implementation 'androidx.biometric:biometric-ktx:1.2.0-alpha01'
implementation 'androidx.browser:browser:1.3.0'
2020-06-11 05:02:31 +02:00
implementation 'androidx.cardview:cardview:1.0.0'
2020-12-02 23:02:12 +01:00
implementation 'androidx.constraintlayout:constraintlayout:2.1.0-alpha1'
2020-06-11 05:02:31 +02:00
implementation 'androidx.coordinatorlayout:coordinatorlayout:1.1.0'
2020-12-02 23:02:12 +01:00
implementation 'androidx.core:core-ktx:1.5.0-alpha05'
2020-01-05 17:29:27 +01:00
implementation 'androidx.multidex:multidex:2.0.1'
2020-10-24 19:17:14 +02:00
implementation 'androidx.preference:preference-ktx:1.1.1'
2020-12-02 23:02:12 +01:00
implementation 'androidx.recyclerview:recyclerview:1.2.0-beta01'
2020-07-23 04:15:09 +02:00
implementation 'androidx.swiperefreshlayout:swiperefreshlayout:1.2.0-alpha01'
2020-02-22 04:58:19 +01:00
2020-10-03 16:18:39 +02:00
final lifecycle_version = '2.3.0-beta01'
2020-02-22 04:58:19 +01:00
implementation "androidx.lifecycle:lifecycle-common-java8:$lifecycle_version"
2020-07-01 16:15:46 +02:00
implementation "androidx.lifecycle:lifecycle-process:$lifecycle_version"
2020-04-21 15:12:53 +02:00
implementation "androidx.lifecycle:lifecycle-runtime-ktx:$lifecycle_version"
2016-10-15 11:12:16 +02:00
2020-06-11 05:02:31 +02:00
// Job scheduling
2020-12-02 23:02:12 +01:00
implementation "androidx.work:work-runtime-ktx:2.5.0-beta02"
2020-06-11 05:02:31 +02:00
2020-02-10 04:24:56 +01:00
// UI library
2020-12-02 23:02:12 +01:00
implementation 'com.google.android.material:material:1.3.0-alpha04'
2020-02-10 04:24:56 +01:00
2020-11-22 18:40:01 +01:00
standardImplementation 'com.google.firebase:firebase-core:18.0.0'
2018-04-25 13:46:57 +02:00
2016-04-09 17:33:21 +02:00
// ReactiveX
2017-10-28 16:10:51 +02:00
implementation 'io.reactivex:rxandroid:1.2.1'
2019-12-26 22:47:01 +01:00
implementation 'io.reactivex:rxjava:1.3.8'
2017-10-28 16:10:51 +02:00
implementation 'com.jakewharton.rxrelay:rxrelay:1.2.0'
2019-12-26 22:47:01 +01:00
implementation 'com.github.pwittchen:reactivenetwork:0.13.0'
2016-04-09 17:33:21 +02:00
// Network client
2020-10-10 22:34:06 +02:00
final okhttp_version = '4.10.0-RC1'
2020-01-05 17:29:27 +01:00
implementation "com.squareup.okhttp3:okhttp:$okhttp_version"
implementation "com.squareup.okhttp3:logging-interceptor:$okhttp_version"
2020-06-24 04:42:53 +02:00
implementation "com.squareup.okhttp3:okhttp-dnsoverhttps:$okhttp_version"
2020-10-10 22:34:06 +02:00
implementation 'com.squareup.okio:okio:2.9.0'
2016-04-09 17:33:21 +02:00
2020-06-07 21:47:42 +02:00
// TLS 1.3 support for Android < 10
2020-09-12 03:55:44 +02:00
implementation 'org.conscrypt:conscrypt-android:2.5.1'
2020-06-07 21:47:42 +02:00
2016-04-09 17:33:21 +02:00
// REST
2020-05-21 15:06:24 +02:00
final retrofit_version = '2.9.0'
2017-10-28 16:10:51 +02:00
implementation "com.squareup.retrofit2:retrofit:$retrofit_version"
2020-10-11 20:53:02 +02:00
implementation "com.jakewharton.retrofit:retrofit2-kotlinx-serialization-converter:0.8.0"
2016-04-09 17:33:21 +02:00
// JSON
2020-11-21 04:34:24 +01:00
final kotlin_serialization_version = '1.0.1'
implementation "org.jetbrains.kotlinx:kotlinx-serialization-json:$kotlin_serialization_version"
implementation "org.jetbrains.kotlinx:kotlinx-serialization-protobuf:$kotlin_serialization_version"
2020-01-21 01:09:17 +01:00
implementation 'com.google.code.gson:gson:2.8.6'
2017-10-28 16:10:51 +02:00
implementation 'com.github.salomonbrys.kotson:kotson:2.5.0'
2016-04-09 17:33:21 +02:00
2016-05-10 15:09:44 +02:00
// JavaScript engine
2020-01-21 01:09:17 +01:00
implementation 'com.squareup.duktape:duktape-android:1.3.0'
2016-05-10 15:09:44 +02:00
2016-11-29 21:37:35 +01:00
// Disk
2017-10-28 16:10:51 +02:00
implementation 'com.jakewharton:disklrucache:2.0.2'
2017-12-02 20:59:35 +01:00
implementation 'com.github.inorichi:unifile:e9ee588'
2020-12-08 04:13:53 +01:00
implementation 'com.github.junrar:junrar:7.4.0'
2016-04-09 17:33:21 +02:00
2016-11-06 18:44:14 +01:00
// HTML parser
2020-04-01 04:43:11 +02:00
implementation 'org.jsoup:jsoup:1.13.1'
2016-04-09 17:33:21 +02:00
// Database
2020-10-24 19:17:14 +02:00
implementation 'androidx.sqlite:sqlite-ktx:2.1.0'
2019-03-22 23:06:05 +01:00
implementation 'com.github.inorichi.storio:storio-common:8be19de@aar'
implementation 'com.github.inorichi.storio:storio-sqlite:8be19de@aar'
2020-10-10 22:34:06 +02:00
implementation 'io.requery:sqlite-android:3.33.0'
2016-04-09 17:33:21 +02:00
2020-04-17 15:28:58 +02:00
// Preferences
2020-10-31 15:14:25 +01:00
implementation 'com.github.tfcporciuncula.flow-preferences:flow-preferences:1.3.3'
2020-04-17 15:28:58 +02:00
2016-04-19 14:11:03 +02:00
// Model View Presenter
2020-05-09 15:56:42 +02:00
final nucleus_version = '3.0.0'
2017-10-28 16:10:51 +02:00
implementation "info.android15.nucleus:nucleus:$nucleus_version"
implementation "info.android15.nucleus:nucleus-support-v7:$nucleus_version"
2016-04-19 14:11:03 +02:00
2016-04-09 17:33:21 +02:00
// Dependency injection
2018-02-05 22:50:56 +01:00
implementation "com.github.inorichi.injekt:injekt-core:65b0440"
2016-04-09 17:33:21 +02:00
// Image library
2020-01-21 01:09:17 +01:00
final glide_version = '4.11.0'
2017-10-28 16:10:51 +02:00
implementation "com.github.bumptech.glide:glide:$glide_version"
implementation "com.github.bumptech.glide:okhttp3-integration:$glide_version"
2017-10-14 18:37:23 +02:00
kapt "com.github.bumptech.glide:compiler:$glide_version"
2016-04-09 17:33:21 +02:00
2020-10-01 04:55:13 +02:00
implementation 'com.github.tachiyomiorg:subsampling-scale-image-view:6caf219'
2020-07-25 17:05:05 +02:00
2016-04-09 17:33:21 +02:00
// Logging
2019-12-26 22:47:01 +01:00
implementation 'com.jakewharton.timber:timber:4.7.1'
2016-04-09 17:33:21 +02:00
// Crash reports
2020-07-23 04:15:09 +02:00
implementation 'ch.acra:acra-http:5.7.0'
2016-04-09 17:33:21 +02:00
2020-05-02 16:56:03 +02:00
// Sort
implementation 'com.github.gpanther:java-nat-sort:natural-comparator-1.1'
2016-04-09 17:33:21 +02:00
// UI
2017-10-28 16:10:51 +02:00
implementation 'com.dmitrymalkovich.android:material-design-dimens:1.4'
implementation 'com.github.dmytrodanylyk.android-process-button:library:1.0.4'
2020-01-05 17:29:27 +01:00
implementation 'eu.davidea:flexible-adapter:5.1.0'
implementation 'eu.davidea:flexible-adapter-ui:1.0.0'
2020-07-20 03:33:19 +02:00
implementation 'com.nightlynexus.viewstatepageradapter:viewstatepageradapter:1.1.0'
2020-01-05 17:29:27 +01:00
implementation 'com.github.chrisbanes:PhotoView:2.3.0'
implementation 'com.github.carlosesco:DirectionalViewPager:a844dbca0a'
2017-05-23 20:03:16 +02:00
2020-04-24 16:08:54 +02:00
// 3.2.0+ introduces weird UI blinking or cut off issues on some devices
final material_dialogs_version = '3.1.1'
2020-04-20 23:59:19 +02:00
implementation "com.afollestad.material-dialogs:core:$material_dialogs_version"
implementation "com.afollestad.material-dialogs:input:$material_dialogs_version"
2020-04-24 00:28:41 +02:00
implementation "com.afollestad.material-dialogs:datetime:$material_dialogs_version"
2020-04-20 23:59:19 +02:00
2017-05-23 20:03:16 +02:00
// Conductor
2018-09-17 14:50:44 +02:00
implementation 'com.bluelinelabs:conductor:2.1.5'
2020-04-16 23:23:02 +02:00
implementation ( "com.bluelinelabs:conductor-support:2.1.5" ) {
2018-06-06 12:42:57 +02:00
exclude group: "com.android.support"
2018-02-27 19:06:34 +01:00
}
2020-06-06 18:54:58 +02:00
implementation 'com.github.tachiyomiorg:conductor-support-preference:1.1.1'
2017-05-23 20:03:16 +02:00
2020-04-17 05:04:00 +02:00
// FlowBinding
2020-07-25 19:07:56 +02:00
final flowbinding_version = '0.12.0'
2020-04-17 05:04:00 +02:00
implementation "io.github.reactivecircus.flowbinding:flowbinding-android:$flowbinding_version"
implementation "io.github.reactivecircus.flowbinding:flowbinding-appcompat:$flowbinding_version"
implementation "io.github.reactivecircus.flowbinding:flowbinding-recyclerview:$flowbinding_version"
implementation "io.github.reactivecircus.flowbinding:flowbinding-swiperefreshlayout:$flowbinding_version"
2020-07-20 03:33:19 +02:00
implementation "io.github.reactivecircus.flowbinding:flowbinding-viewpager:$flowbinding_version"
2015-09-24 17:27:43 +02:00
2020-06-09 00:26:20 +02:00
// Licenses
2020-12-09 04:21:08 +01:00
implementation "com.mikepenz:aboutlibraries:$BuildPluginsVersion.ABOUTLIB_PLUGIN"
2020-06-09 00:26:20 +02:00
2016-04-09 17:33:21 +02:00
// Tests
2020-02-10 04:24:56 +01:00
testImplementation 'junit:junit:4.13'
2020-08-11 04:49:46 +02:00
testImplementation 'org.assertj:assertj-core:3.16.1'
2017-10-28 16:10:51 +02:00
testImplementation 'org.mockito:mockito-core:1.10.19'
2016-11-05 19:28:47 +01:00
final robolectric_version = '3.1.4'
2017-10-28 16:10:51 +02:00
testImplementation "org.robolectric:robolectric:$robolectric_version"
testImplementation "org.robolectric:shadows-multidex:$robolectric_version"
testImplementation "org.robolectric:shadows-play-services:$robolectric_version"
2015-09-24 17:27:43 +02:00
2020-08-19 16:28:29 +02:00
implementation "org.jetbrains.kotlin:kotlin-reflect:$BuildPluginsVersion.KOTLIN"
2017-10-13 00:12:29 +02:00
2020-12-13 23:18:59 +01:00
final coroutines_version = '1.4.2'
2020-03-09 18:51:14 +01:00
implementation "org.jetbrains.kotlinx:kotlinx-coroutines-core:$coroutines_version"
2017-10-28 16:10:51 +02:00
implementation "org.jetbrains.kotlinx:kotlinx-coroutines-android:$coroutines_version"
2020-03-09 19:04:16 +01:00
// For detecting memory leaks; see https://square.github.io/leakcanary/
2020-07-23 04:15:09 +02:00
// debugImplementation 'com.squareup.leakcanary:leakcanary-android:2.4'
2016-02-17 01:44:21 +01:00
}
buildscript {
repositories {
mavenCentral ( )
}
dependencies {
2020-08-11 04:49:46 +02:00
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$BuildPluginsVersion.KOTLIN"
2016-02-17 01:44:21 +01:00
}
}
repositories {
mavenCentral ( )
2020-11-27 04:39:26 +01:00
jcenter ( )
2015-09-24 17:27:43 +02:00
}
2017-04-04 17:42:39 +02:00
2019-09-19 04:45:54 +02:00
// See https://kotlinlang.org/docs/reference/experimental.html#experimental-status-of-experimental-api-markers
2020-05-21 15:06:24 +02:00
tasks . withType ( AbstractKotlinCompile ) . all {
2020-11-22 17:43:16 +01:00
kotlinOptions . freeCompilerArgs + = [
"-Xopt-in=kotlin.Experimental" ,
"-Xopt-in=kotlin.RequiresOptIn" ,
"-Xuse-experimental=kotlin.ExperimentalStdlibApi" ,
"-Xuse-experimental=kotlinx.coroutines.FlowPreview" ,
"-Xuse-experimental=kotlinx.coroutines.ExperimentalCoroutinesApi" ,
"-Xuse-experimental=kotlinx.serialization.ExperimentalSerializationApi" ,
]
2017-10-13 00:12:29 +02:00
}
2018-02-18 20:02:31 +01:00
2020-04-08 04:32:27 +02:00
// Duplicating Hebrew string assets due to some locale code issues on different devices
2020-10-04 19:10:40 +02:00
task copyHebrewStrings ( type: Copy ) {
2020-04-08 04:32:27 +02:00
from './src/main/res/values-he'
into './src/main/res/values-iw'
include '**/*'
2017-12-03 01:03:15 +01:00
}
2018-04-25 13:46:57 +02:00
2020-10-04 19:10:40 +02:00
preBuild . dependsOn ( formatKotlin , copyHebrewStrings )
2020-03-03 04:17:54 +01:00
if ( getGradle ( ) . getStartParameter ( ) . getTaskRequests ( ) . toString ( ) . contains ( "Standard" ) ) {
apply plugin: 'com.google.gms.google-services'
}