import java.text.SimpleDateFormat apply plugin: 'com.android.application' apply plugin: 'kotlin-android' apply plugin: 'kotlin-kapt' apply plugin: 'org.jetbrains.kotlin.plugin.serialization' apply plugin: "io.gitlab.arturbosch.detekt" android { compileSdkVersion compile_sdk_version // exoPlayer 2.9.0 以降は Java 8 compiler support を要求する // https://github.com/google/ExoPlayer/blob/release-v2/RELEASENOTES.md // Invoke-customs are only supported starting with Android O (--min-api 26) // Default interface methods are only supported starting with Android N (--min-api 24) compileOptions { sourceCompatibility JavaVersion.VERSION_1_8 targetCompatibility JavaVersion.VERSION_1_8 } defaultConfig { targetSdkVersion target_sdk_version minSdkVersion min_sdk_version versionCode 465 versionName "4.6.5" applicationId "jp.juggler.subwaytooter" testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner" } kotlinOptions { freeCompilerArgs += [ "-Xopt-in=kotlin.ExperimentalStdlibApi", "-Xopt-in=kotlinx.coroutines.ExperimentalCoroutinesApi", ] } buildTypes { release { minifyEnabled false shrinkResources false proguardFiles getDefaultProguardFile('proguard-android.txt'), 'proguard-rules.pro' lintOptions { disable 'MissingTranslation' } } } // Specifies comma-separated list of flavor dimensions. flavorDimensions "rcOrDev" productFlavors { rc { dimension "rcOrDev" } } dexOptions { jumboMode = true preDexLibraries true maxProcessCount 10 javaMaxHeapSize "3g" } // Generate Signed APK のファイル名を変更 android.applicationVariants.all { variant -> if (variant.buildType.name == "release") { 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()) outputFileName = "../../SubwayTooter-${flavor}-${versionCode}-${versionName}-${date}.apk" } } } packagingOptions { // https://github.com/Kotlin/kotlinx.coroutines/issues/1064 pickFirst("META-INF/atomicfu.kotlin_module") } useLibrary 'android.test.base' useLibrary 'android.test.mock' } kapt { useBuildCache = true } dependencies { implementation fileTree(include: ['*.jar'], dir: 'libs') implementation fileTree(include: ['*.aar'], dir: 'src/main/libs') androidTestImplementation('androidx.test.espresso:espresso-core:3.1.0-alpha4', { exclude group: 'com.android.support', module: 'support-annotations' }) detektPlugins("io.gitlab.arturbosch.detekt:detekt-formatting:$detekt_version") detektPlugins("io.gitlab.arturbosch.detekt:detekt-cli:$detekt_version") // implementation project(':exif') implementation project(':colorpicker') implementation project(':emoji') implementation project(':apng_android') implementation "androidx.appcompat:appcompat:$appcompat_version" //noinspection KtxExtensionAvailable implementation "androidx.lifecycle:lifecycle-viewmodel:$lifecycle_version" // DrawerLayout implementation "androidx.drawerlayout:drawerlayout:1.1.1" // NavigationView implementation "com.google.android.material:material:1.3.0" // PreferenceManager implementation "androidx.preference:preference-ktx:1.1.1" implementation "androidx.exifinterface:exifinterface:1.3.2" // CustomTabs implementation "androidx.browser:browser:1.3.0" // Recyclerview implementation "androidx.recyclerview:recyclerview:1.2.1" kapt 'androidx.annotation:annotation:1.2.0' // https://firebase.google.com/support/release-notes/android implementation "com.google.firebase:firebase-messaging:22.0.0" implementation "org.jetbrains.kotlin:kotlin-stdlib:$kotlin_version" implementation "org.jetbrains.kotlin:kotlin-reflect:$kotlin_version" testImplementation "org.jetbrains.kotlin:kotlin-test:$kotlin_version" implementation "org.jetbrains.kotlinx:kotlinx-coroutines-core:$kotlinx_coroutines_version" implementation "org.jetbrains.kotlinx:kotlinx-coroutines-play-services:$kotlinx_coroutines_version" implementation "org.jetbrains.kotlinx:kotlinx-serialization-json:1.2.1" implementation("ru.gildor.coroutines:kotlin-coroutines-okhttp:1.0") // Anko Layouts // sdk15, sdk19, sdk21, sdk23 are also available // implementation "org.jetbrains.anko:anko-sdk25:$anko_version" // implementation "org.jetbrains.anko:anko-appcompat-v7:$anko_version" // Coroutine listeners for Anko Layouts //implementation "org.jetbrains.anko:anko-sdk25-coroutines:$anko_version" //implementation "org.jetbrains.anko:anko-appcompat-v7-coroutines:$anko_version" testImplementation "junit:junit:$junit_version" // しばらくはkotlin-testとjunitを併用 implementation 'com.squareup.okhttp3:okhttp:4.8.1' implementation 'com.squareup.okhttp3:okhttp-urlconnection:4.8.1' testImplementation 'com.squareup.okhttp3:mockwebserver:3.12.1' androidTestImplementation 'com.squareup.okhttp3:mockwebserver:3.12.1' def glideVersion = '4.11.0' implementation "com.github.bumptech.glide:glide:$glideVersion" implementation "com.github.bumptech.glide:annotations:$glideVersion" implementation( "com.github.bumptech.glide:okhttp3-integration:$glideVersion"){ exclude group: 'com.squareup.okhttp3', module: 'okhttp' // 推移的な依存関係の除外 // glide 4.9.0 は okhttp3 3.9.1を使ってる // http://bumptech.github.io/glide/int/about.html#how-do-i-use-a-specific-version-of-okhttp-volley-or-other-third-party-library } kapt "com.github.bumptech.glide:compiler:$glideVersion" implementation "org.conscrypt:conscrypt-android:2.5.1" implementation 'io.github.inflationx:calligraphy3:3.1.1' implementation 'io.github.inflationx:viewpump:2.0.3' implementation 'com.github.woxthebox:draglistview:1.6.6' implementation 'com.github.omadahealth:swipy:1.2.3@aar' implementation 'com.github.kenglxn.QRGen:android:2.5.0' implementation 'commons-io:commons-io:2.6' implementation 'org.hjson:hjson:3.0.0' implementation 'com.google.android.flexbox:flexbox:3.0.0' implementation 'com.astuetz:pagerslidingtabstrip:1.0.1' implementation 'com.google.android.exoplayer:exoplayer:2.15.0' /* 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も苦労してるんだなあ… */ implementation 'com.caverock:androidsvg-aar:1.4' } repositories { mavenCentral() } apply plugin: 'com.google.gms.google-services' 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 baseline = file("$rootDir/config/detekt/baseline.xml") // point to your custom config defining rules to run, overwriting default behavior config = files("$rootDir/config/detekt/config.yml") reports { // checkstyle like format mainly for integrations like Jenkins xml { enabled = true destination = file("detektReport/${name}.xml") } // observe findings in your browser with structure and code snippets html { enabled = true destination = file("detektReport/${name}.html") } // similar to the console output, contains issue signature to manually edit baseline files txt { enabled = true destination = file("detektReport/${name}.txt") } // standardized SARIF format (https://sarifweb.azurewebsites.net/) to support integrations with Github Code Scanning sarif { enabled = true destination = file("detektReport/${name}.sarif") } } }