2022-03-13 00:50:37 +09:00
import io.gitlab.arturbosch.detekt.Detekt
import io.gitlab.arturbosch.detekt.DetektPlugin
2017-04-23 14:42:09 +09:00
import java.text.SimpleDateFormat
2017-04-21 01:23:59 +09:00
apply plugin: 'com.android.application'
2017-11-04 23:51:15 +09:00
apply plugin: 'kotlin-android'
2019-01-25 23:38:21 +09:00
apply plugin: 'kotlin-kapt'
2021-05-22 07:03:16 +09:00
apply plugin: 'org.jetbrains.kotlin.plugin.serialization'
2021-06-20 12:02:30 +09:00
apply plugin: "io.gitlab.arturbosch.detekt"
2021-11-20 09:36:43 +09:00
apply plugin: 'com.google.gms.google-services'
2017-04-21 01:23:59 +09:00
android {
2018-10-01 18:45:51 +09:00
2021-02-25 10:24:08 +09:00
compileSdkVersion compile_sdk_version
2018-09-12 14:55:15 +09:00
2019-08-01 03:30:56 +09:00
// exoPlayer 2.9.0 以降は Java 8 compiler support を要求する
2019-07-12 13:38:19 +09:00
compileOptions {
2020-09-09 05:17:32 +09:00
sourceCompatibility JavaVersion . VERSION_1_8
2019-07-12 13:38:19 +09:00
targetCompatibility JavaVersion . VERSION_1_8
}
2017-04-21 01:23:59 +09:00
defaultConfig {
2018-09-12 14:55:15 +09:00
targetSdkVersion target_sdk_version
minSdkVersion min_sdk_version
2018-01-15 06:47:42 +09:00
2022-06-14 02:25:30 +09:00
versionCode 489
versionName "4.8.9"
2018-09-12 14:55:15 +09:00
applicationId "jp.juggler.subwaytooter"
2019-02-15 10:51:22 +09:00
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
2021-11-06 12:00:29 +09:00
vectorDrawables . useSupportLibrary = true
2017-04-21 01:23:59 +09:00
}
2017-04-25 23:47:27 +09:00
2021-11-07 05:36:59 +09:00
viewBinding {
enabled = true
}
2021-05-27 11:15:59 +09:00
kotlinOptions {
2021-11-06 11:11:28 +09:00
jvmTarget = jvm_target
2021-10-28 05:58:19 +09:00
useIR = true
2021-05-27 11:15:59 +09:00
freeCompilerArgs + = [
2022-05-29 22:38:21 +09:00
"-opt-in=kotlin.ExperimentalStdlibApi" ,
"-opt-in=kotlinx.coroutines.ExperimentalCoroutinesApi" ,
"-opt-in=kotlinx.serialization.ExperimentalSerializationApi" ,
2022-05-29 14:00:51 +09:00
// "-Xopt-in=androidx.compose.foundation.ExperimentalFoundationApi",
// "-Xopt-in=androidx.compose.animation.ExperimentalAnimationApi",
2021-05-27 11:15:59 +09:00
]
}
2021-11-20 09:36:43 +09:00
// kotlin 1.6.0にすると This version (1.0.5) of the Compose Compiler requires Kotlin version 1.5.31 but you appear to be using Kotlin version 1.6.0 which is not known to be compatible. と怒られる
// buildFeatures {
// compose true
// }
2022-05-29 14:00:51 +09:00
// composeOptions {
// kotlinCompilerExtensionVersion compose_version
// }
2021-05-22 07:03:16 +09:00
2017-04-21 01:23:59 +09:00
buildTypes {
release {
2019-02-15 12:17:31 +09:00
minifyEnabled false
2018-01-13 15:52:07 +09:00
shrinkResources false
2017-04-21 01:23:59 +09:00
proguardFiles getDefaultProguardFile ( 'proguard-android.txt' ) , 'proguard-rules.pro'
2018-08-31 22:22:51 +09:00
lintOptions {
disable 'MissingTranslation'
}
2017-04-21 01:23:59 +09:00
}
}
2017-04-25 23:47:27 +09:00
2017-11-04 23:51:15 +09:00
// Specifies comma-separated list of flavor dimensions.
flavorDimensions "rcOrDev"
2017-04-23 14:42:09 +09:00
productFlavors {
rc {
2017-11-04 23:51:15 +09:00
dimension "rcOrDev"
2017-04-23 14:42:09 +09:00
}
}
// Generate Signed APK のファイル名を変更
2017-11-04 23:51:15 +09:00
android . applicationVariants . all { variant - >
2017-04-23 14:42:09 +09:00
if ( variant . buildType . name = = "release" ) {
2017-11-04 23:51:15 +09:00
variant . outputs . all {
// Rename APK
def versionCode = defaultConfig . versionCode
def versionName = defaultConfig . versionName
def flavor = variant . flavorName
def date = new SimpleDateFormat ( "yyyyMMdd_HHmmss" ) . format ( new Date ( ) )
2021-10-28 05:58:19 +09:00
def branch = gitBranch ( )
outputFileName = "../../SubwayTooter-${branch}-${flavor}-${versionCode}-${versionName}-${date}.apk"
2017-04-23 14:42:09 +09:00
}
}
}
2017-11-04 23:51:15 +09:00
2019-04-13 08:12:17 +09:00
packagingOptions {
// https://github.com/Kotlin/kotlinx.coroutines/issues/1064
pickFirst ( "META-INF/atomicfu.kotlin_module" )
2021-10-28 05:58:19 +09:00
resources {
excludes + = '/META-INF/{AL2.0,LGPL2.1}'
}
2022-03-13 01:04:41 +09:00
exclude 'META-INF/DEPENDENCIES'
2019-04-13 08:12:17 +09:00
}
2019-08-30 13:02:08 +09:00
useLibrary 'android.test.base'
useLibrary 'android.test.mock'
2022-03-14 09:16:44 +09:00
lintOptions {
warning 'DuplicatePlatformClasses'
}
2017-04-21 01:23:59 +09:00
}
2021-10-28 05:58:19 +09:00
static def gitBranch ( ) {
def branch = "(no branch)"
def proc = "git status" . execute ( )
proc . in . eachLine { line - >
def matcher = line = ~ /\AOn branch (\S+)/
if ( matcher ) branch = matcher . group ( 1 )
}
proc . err . eachLine { line - > println line }
proc . waitFor ( )
branch
}
2019-01-25 23:38:21 +09:00
kapt {
useBuildCache = true
}
2017-04-21 01:23:59 +09:00
dependencies {
2018-03-27 12:07:40 +09:00
implementation fileTree ( include: [ '*.jar' ] , dir: 'libs' )
2021-05-05 21:39:00 +09:00
implementation fileTree ( include: [ '*.aar' ] , dir: 'src/main/libs' )
2021-10-28 08:37:39 +09:00
// targetSdkVersion 31 で androidTest 時に android:exported 云々で怒られる問題の対策
// https://github.com/android/android-test/issues/1022
androidTestImplementation "androidx.test:core:1.4.0"
2019-02-15 10:51:22 +09:00
androidTestImplementation ( 'androidx.test.espresso:espresso-core:3.1.0-alpha4' , {
2017-04-21 01:23:59 +09:00
exclude group: 'com.android.support' , module: 'support-annotations'
} )
2017-12-12 06:18:17 +09:00
2021-06-20 12:02:30 +09:00
detektPlugins ( "io.gitlab.arturbosch.detekt:detekt-formatting:$detekt_version" )
detektPlugins ( "io.gitlab.arturbosch.detekt:detekt-cli:$detekt_version" )
2020-08-25 09:04:18 +09:00
// implementation project(':exif')
2018-01-29 04:03:04 +09:00
implementation project ( ':colorpicker' )
implementation project ( ':emoji' )
implementation project ( ':apng_android' )
2018-01-05 03:52:25 +09:00
2019-02-15 10:51:22 +09:00
implementation "androidx.appcompat:appcompat:$appcompat_version"
2019-09-13 00:13:00 +09:00
2022-06-05 03:43:55 +09:00
implementation "androidx.core:core-ktx:1.8.0"
2022-03-11 08:11:49 +09:00
2022-05-29 22:38:21 +09:00
def emoji2Version = "1.1.0"
implementation "androidx.emoji2:emoji2:$emoji2Version"
implementation "androidx.emoji2:emoji2-views:$emoji2Version"
implementation "androidx.emoji2:emoji2-views-helper:$emoji2Version"
implementation "androidx.emoji2:emoji2-bundled:$emoji2Version"
2021-11-08 18:29:11 +09:00
2019-09-13 00:13:00 +09:00
// DrawerLayout
2020-09-09 05:17:32 +09:00
implementation "androidx.drawerlayout:drawerlayout:1.1.1"
2019-09-13 00:13:00 +09:00
// NavigationView
2022-06-05 03:43:55 +09:00
implementation "com.google.android.material:material:1.6.1"
2019-09-13 00:13:00 +09:00
2021-10-28 05:58:19 +09:00
implementation "androidx.exifinterface:exifinterface:1.3.3"
2020-08-25 09:04:18 +09:00
2019-09-13 00:13:00 +09:00
// CustomTabs
2021-11-06 11:25:11 +09:00
implementation "androidx.browser:browser:1.4.0"
2019-09-13 00:13:00 +09:00
2019-10-05 21:28:04 +09:00
// Recyclerview
2021-06-20 12:02:30 +09:00
implementation "androidx.recyclerview:recyclerview:1.2.1"
2019-10-05 21:28:04 +09:00
2021-11-08 18:29:11 +09:00
kapt 'androidx.annotation:annotation:1.3.0'
2017-12-12 06:18:17 +09:00
2018-06-11 09:33:01 +09:00
// https://firebase.google.com/support/release-notes/android
2022-05-29 14:00:51 +09:00
implementation "com.google.firebase:firebase-messaging:23.0.5"
2017-08-24 20:44:06 +09:00
2022-05-01 21:46:10 +09:00
implementation "org.jetbrains.kotlin:kotlin-reflect"
testImplementation "org.jetbrains.kotlin:kotlin-test"
2019-08-24 19:56:05 +09:00
2018-09-15 01:36:05 +09:00
implementation "org.jetbrains.kotlinx:kotlinx-coroutines-core:$kotlinx_coroutines_version"
2020-12-07 03:32:21 +09:00
implementation "org.jetbrains.kotlinx:kotlinx-coroutines-play-services:$kotlinx_coroutines_version"
2022-03-11 08:11:49 +09:00
implementation "org.jetbrains.kotlinx:kotlinx-serialization-json:1.3.2"
2021-11-13 03:59:08 +09:00
implementation "ru.gildor.coroutines:kotlin-coroutines-okhttp:1.0"
2018-01-12 18:01:25 +09:00
Android Studio 4.0.0, Android gradple plugin 4.0.1, Gradle 6.1.1, kotlin 1.4.0, espresso-core:3.3.0-rc03, androidx.test:runner:1.3.0-rc03, androidx.appcompat 1.2.0, androidx.core-ktx 1.3.1, androidx.drawerlayout 1.1.0, androidx.preference 1.1.1, com.google.android.material 1.2.0, firebase-messaging 20.2.4, com.google.android:flexbox 2.0.1, junit 4.13
2020-08-23 07:15:27 +09:00
testImplementation "junit:junit:$junit_version" // しばらくはkotlin-testとjunitを併用
2017-12-22 12:12:32 +09:00
2022-06-05 03:43:55 +09:00
def okhttpVersion = "4.9.3"
2021-10-28 05:58:19 +09:00
implementation "com.squareup.okhttp3:okhttp:$okhttpVersion"
implementation "com.squareup.okhttp3:okhttp-urlconnection:$okhttpVersion"
2021-11-06 11:11:28 +09:00
testImplementation ( "com.squareup.okhttp3:mockwebserver:$okhttpVersion" ) {
exclude group: 'com.squareup.okio' , module: 'okio'
exclude group: 'com.squareup.okhttp3' , module: 'okhttp'
exclude group: 'org.jetbrains.kotlin' , module: 'kotlin-stdlib-common'
exclude group: 'org.jetbrains.kotlin' , module: 'kotlin-stdlib'
exclude group: 'org.jetbrains.kotlin' , module: 'kotlin-stdlib-jdk8'
}
androidTestImplementation ( "com.squareup.okhttp3:mockwebserver:$okhttpVersion" ) {
exclude group: 'com.squareup.okio' , module: 'okio'
exclude group: 'com.squareup.okhttp3' , module: 'okhttp'
exclude group: 'org.jetbrains.kotlin' , module: 'kotlin-stdlib-common'
exclude group: 'org.jetbrains.kotlin' , module: 'kotlin-stdlib'
exclude group: 'org.jetbrains.kotlin' , module: 'kotlin-stdlib-jdk8'
}
2017-05-26 12:48:06 +09:00
2022-03-11 08:11:49 +09:00
def glideVersion = '4.13.1'
2021-06-28 23:37:51 +09:00
implementation "com.github.bumptech.glide:glide:$glideVersion"
implementation "com.github.bumptech.glide:annotations:$glideVersion"
2021-10-28 05:58:19 +09:00
implementation ( "com.github.bumptech.glide:okhttp3-integration:$glideVersion" ) {
2019-08-24 19:56:05 +09:00
exclude group: 'com.squareup.okhttp3' , module: 'okhttp'
}
2021-06-28 23:37:51 +09:00
kapt "com.github.bumptech.glide:compiler:$glideVersion"
2019-08-24 19:56:05 +09:00
2020-10-24 12:14:53 +09:00
implementation "org.conscrypt:conscrypt-android:2.5.1"
2017-07-26 20:40:55 +09:00
2019-07-12 13:38:19 +09:00
implementation 'io.github.inflationx:calligraphy3:3.1.1'
implementation 'io.github.inflationx:viewpump:2.0.3'
2017-09-26 00:10:05 +09:00
2019-07-12 13:38:19 +09:00
implementation 'com.github.woxthebox:draglistview:1.6.6'
2017-12-21 20:33:35 +09:00
2018-04-06 05:47:25 +09:00
implementation 'com.github.omadahealth:swipy:1.2.3@aar'
2017-12-21 20:33:35 +09:00
2019-07-12 13:38:19 +09:00
implementation 'com.github.kenglxn.QRGen:android:2.5.0'
2018-01-15 06:47:42 +09:00
2018-04-06 05:47:25 +09:00
implementation 'org.hjson:hjson:3.0.0'
2021-08-24 07:46:09 +09:00
implementation 'com.google.android.flexbox:flexbox:3.0.0'
2018-04-06 05:47:25 +09:00
implementation 'com.astuetz:pagerslidingtabstrip:1.0.1'
2018-01-18 02:39:16 +09:00
2022-03-13 00:51:26 +09:00
implementation 'com.google.android.exoplayer:exoplayer:2.17.1'
2020-10-24 12:14:53 +09:00
/ *
WARNING: [ Processor ] Library '…\exoplayer-ui-2.12.0.aar' contains references to both AndroidX and old support library . This seems like the library is partially migrated . Jetifier will try to rewrite the library anyway .
Example of androidX reference: 'androidx/core/app/NotificationCompat$Builder'
Example of support library reference: 'android/support/v4/media/session/MediaSessionCompat$Token'
… expPlayerも苦労してるんだなあ …
* /
2018-01-21 21:46:36 +09:00
2019-07-12 13:38:19 +09:00
implementation 'com.caverock:androidsvg-aar:1.4'
2021-10-28 05:58:19 +09:00
2022-05-29 22:38:21 +09:00
implementation "androidx.lifecycle:lifecycle-runtime-ktx:$lifecycle_version"
2021-10-28 05:58:19 +09:00
// ViewModel
implementation "androidx.lifecycle:lifecycle-viewmodel-ktx:$lifecycle_version"
2022-03-11 08:11:49 +09:00
2021-10-28 05:58:19 +09:00
// LiveData
implementation "androidx.lifecycle:lifecycle-livedata-ktx:$lifecycle_version"
// Saved state module for ViewModel
implementation "androidx.lifecycle:lifecycle-viewmodel-savedstate:$lifecycle_version"
// if using Java8, use the following instead of lifecycle-compiler
implementation "androidx.lifecycle:lifecycle-common-java8:$lifecycle_version"
// optional - helpers for implementing LifecycleOwner in a Service
implementation "androidx.lifecycle:lifecycle-service:$lifecycle_version"
// optional - ProcessLifecycleOwner provides a lifecycle for the whole application process
implementation "androidx.lifecycle:lifecycle-process:$lifecycle_version"
// optional - ReactiveStreams support for LiveData
implementation "androidx.lifecycle:lifecycle-reactivestreams-ktx:$lifecycle_version"
// optional - Test helpers for LiveData
testImplementation "androidx.arch.core:core-testing:$arch_version"
2022-06-14 02:23:46 +09:00
implementation 'androidx.work:work-runtime-ktx:2.7.1'
2022-03-11 08:11:49 +09:00
def roomVersion = "2.4.2"
2021-11-20 09:36:43 +09:00
implementation "androidx.room:room-runtime:$roomVersion"
implementation "androidx.room:room-ktx:$roomVersion"
kapt "androidx.room:room-compiler:$roomVersion"
def workVersion = "2.7.1"
implementation "androidx.work:work-runtime:$workVersion"
implementation "androidx.work:work-runtime-ktx:$workVersion"
2022-03-11 08:11:49 +09:00
implementation "androidx.startup:startup-runtime:1.1.1"
2021-10-28 05:58:19 +09:00
2021-11-20 09:36:43 +09:00
// Koin main features for Android
implementation "io.insert-koin:koin-android:$koin_version"
implementation "io.insert-koin:koin-android-compat:$koin_version"
implementation "io.insert-koin:koin-androidx-workmanager:$koin_version"
// implementation "io.insert-koin:koin-androidx-navigation:$koin_version"
// implementation "io.insert-koin:koin-androidx-compose:$koin_version"
2022-01-05 18:39:48 +09:00
// video transcoder https://github.com/natario1/Transcoder
implementation "com.otaliastudios:transcoder:0.10.4"
2017-04-21 01:23:59 +09:00
}
2017-05-24 18:20:56 +09:00
2017-11-04 23:51:15 +09:00
repositories {
mavenCentral ( )
}
2017-12-22 21:59:52 +09:00
2021-06-20 12:02:30 +09:00
detekt {
// relative path from module path.
basePath = projectDir
// preconfigure defaults
buildUponDefaultConfig = true
// activate all available (even unstable) rules.
allRules = false
// a way of suppressing issues before introducing detekt
2022-03-11 08:18:41 +09:00
// baseline = file("$rootDir/config/detekt/baseline.xml")
2021-06-20 12:02:30 +09:00
// point to your custom config defining rules to run, overwriting default behavior
config = files ( "$rootDir/config/detekt/config.yml" )
2022-03-13 00:50:37 +09:00
}
2021-06-20 12:02:30 +09:00
2022-03-13 00:50:37 +09:00
plugins . withType ( DetektPlugin ) {
tasks . withType ( Detekt ) {
reports {
xml . required . set ( true )
xml . outputLocation = file ( "$buildDir/reports/detekt/st-${name}.xml" )
html . required . set ( true )
html . outputLocation = file ( "$buildDir/reports/detekt/st-${name}.html" )
txt . required . set ( true )
txt . outputLocation = file ( "$buildDir/reports/detekt/st-${name}.txt" )
sarif . required . set ( true )
sarif . outputLocation = file ( "$buildDir/reports/detekt/st-${name}.sarif" )
2021-06-20 12:02:30 +09:00
}
}
}