SubwayTooter-Android-App/app/build.gradle

246 lines
8.4 KiB
Groovy

import io.gitlab.arturbosch.detekt.Detekt
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: 'com.google.gms.google-services'
apply plugin: "io.gitlab.arturbosch.detekt"
android {
compileSdkVersion stCompileSdkVersion
buildToolsVersion stBuildToolsVersion
// exoPlayer 2.9.0 以降は Java 8 compiler support を要求する
compileOptions {
sourceCompatibility JavaVersion.VERSION_1_8
targetCompatibility JavaVersion.VERSION_1_8
coreLibraryDesugaringEnabled true
}
defaultConfig {
targetSdkVersion stTargetSdkVersion
minSdkVersion stMinSdkVersion
versionCode 511
versionName "5.511"
applicationId "jp.juggler.subwaytooter"
vectorDrawables.useSupportLibrary = true
testInstrumentationRunner "androidx.test.runner.AndroidJUnitRunner"
}
viewBinding {
enabled = true
}
kotlinOptions {
jvmTarget = kotlinJvmTarget
freeCompilerArgs += [
"-opt-in=kotlin.ExperimentalStdlibApi",
"-opt-in=kotlinx.coroutines.ExperimentalCoroutinesApi",
"-opt-in=kotlinx.serialization.ExperimentalSerializationApi",
// "-Xopt-in=androidx.compose.foundation.ExperimentalFoundationApi",
// "-Xopt-in=androidx.compose.animation.ExperimentalAnimationApi",
]
}
// 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
// }
// composeOptions {
// kotlinCompilerExtensionVersion compose_version
// }
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"
}
}
// 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())
def branch = gitBranch()
outputFileName = "../../SubwayTooter-${branch}-${flavor}-${versionCode}-${versionName}-${date}.apk"
}
}
}
packagingOptions {
resources {
excludes += ['/META-INF/{AL2.0,LGPL2.1}', 'META-INF/DEPENDENCIES']
// https://github.com/Kotlin/kotlinx.coroutines/issues/1064
pickFirsts += ['META-INF/atomicfu.kotlin_module']
}
}
useLibrary 'android.test.base'
useLibrary 'android.test.mock'
lint {
warning 'DuplicatePlatformClasses'
}
namespace 'jp.juggler.subwaytooter'
}
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
}
kapt {
useBuildCache = true
}
dependencies {
// desugar_jdk_libs 2.0.0 は AGP 7.4.0-alpha10 以降を要求する
//noinspection GradleDependency
coreLibraryDesugaring "com.android.tools:desugar_jdk_libs:$desugarLibVersion"
implementation(project(":base"))
implementation project(':colorpicker')
implementation project(':emoji')
implementation project(':apng_android')
implementation project(':anko')
implementation fileTree(include: ['*.aar'], dir: 'src/main/libs')
implementation "org.conscrypt:conscrypt-openjdk-uber:$conscryptVersion"
kapt "androidx.annotation:annotation:$androidxAnnotationVersion"
kapt "androidx.room:room-compiler:$roomVersion"
kapt "com.github.bumptech.glide:compiler:$glideVersion"
detektPlugins("io.gitlab.arturbosch.detekt:detekt-formatting:$detektVersion")
testImplementation(project(":base"))
androidTestImplementation(project(":base"))
androidTestApi "androidx.test.espresso:espresso-core:$androidxTestEspressoCoreVersion"
androidTestApi "androidx.test.ext:junit-ktx:1.1.5"
androidTestApi "androidx.test.ext:junit:$androidxTestExtJunitVersion"
androidTestApi "androidx.test.ext:truth:1.5.0"
androidTestApi "androidx.test:core-ktx:$testKtxVersion"
androidTestApi "androidx.test:core:$androidxTestVersion"
androidTestApi "androidx.test:runner:1.5.2"
androidTestApi "org.jetbrains.kotlin:kotlin-test"
androidTestApi "org.jetbrains.kotlinx:kotlinx-coroutines-test:$kotlinxCoroutinesVersion"
testApi "androidx.arch.core:core-testing:$archVersion"
testApi "junit:junit:$junitVersion"
testApi "org.jetbrains.kotlin:kotlin-test"
testApi "org.jetbrains.kotlinx:kotlinx-coroutines-test:$kotlinxCoroutinesVersion"
// To use android test orchestrator
androidTestUtil "androidx.test:orchestrator:1.4.2"
testApi("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"
}
androidTestApi("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"
}
}
repositories {
mavenCentral()
}
tasks.register("detektAll", Detekt) {
description = "Custom DETEKT build for all modules"
// activate all available (even unstable) rules.
allRules = false
// a way of suppressing issues before introducing detekt
// baseline = file("$rootDir/config/detekt/baseline.xml")
parallel = true
ignoreFailures = false
autoCorrect = false
// preconfigure defaults
buildUponDefaultConfig = true
def configFile = files("$rootDir/config/detekt/config.yml")
config.setFrom(configFile)
def baselineFile = file("$rootDir/config/detekt/baseline.xml")
if (baselineFile.isFile()) {
baseline.set(baselineFile)
}
source = files(
"$rootDir/anko/src",
"$rootDir/apng/src",
"$rootDir/apng_android/src",
"$rootDir/app/src",
"$rootDir/base/src",
"$rootDir/colorpicker/src",
"$rootDir/emoji/src",
"$rootDir/icon_material_symbols/src",
"$rootDir/sample_apng/src",
)
// def kotlinFiles = "**/*.kt"
// include(kotlinFiles)
def resourceFiles = "**/resources/**"
def buildFiles = "**/build/**"
exclude(resourceFiles, buildFiles)
reports {
html.enabled = true
xml.enabled = false
txt.enabled = false
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")
}
}