mirror of
https://github.com/ankidroid/Anki-Android.git
synced 2024-09-20 12:02:16 +02:00
d00e8eac39
* build(deps): bump kotlin_version from 1.8.20 to 1.8.21 Bumps `kotlin_version` from 1.8.20 to 1.8.21. Updates `org.jetbrains.kotlin:kotlin-gradle-plugin` from 1.8.20 to 1.8.21 - [Release notes](https://github.com/JetBrains/kotlin/releases) - [Changelog](https://github.com/JetBrains/kotlin/blob/v1.8.21/ChangeLog.md) - [Commits](https://github.com/JetBrains/kotlin/compare/v1.8.20...v1.8.21) Updates `org.jetbrains.kotlin:kotlin-stdlib` from 1.8.20 to 1.8.21 - [Release notes](https://github.com/JetBrains/kotlin/releases) - [Changelog](https://github.com/JetBrains/kotlin/blob/v1.8.21/ChangeLog.md) - [Commits](https://github.com/JetBrains/kotlin/compare/v1.8.20...v1.8.21) Updates `org.jetbrains.kotlin:kotlin-test` from 1.8.20 to 1.8.21 - [Release notes](https://github.com/JetBrains/kotlin/releases) - [Changelog](https://github.com/JetBrains/kotlin/blob/v1.8.21/ChangeLog.md) - [Commits](https://github.com/JetBrains/kotlin/compare/v1.8.20...v1.8.21) Updates `org.jetbrains.kotlin:kotlin-reflect` from 1.8.20 to 1.8.21 - [Release notes](https://github.com/JetBrains/kotlin/releases) - [Changelog](https://github.com/JetBrains/kotlin/blob/v1.8.21/ChangeLog.md) - [Commits](https://github.com/JetBrains/kotlin/compare/v1.8.20...v1.8.21) Updates `org.jetbrains.kotlin:kotlin-test-junit5` from 1.8.20 to 1.8.21 - [Release notes](https://github.com/JetBrains/kotlin/releases) - [Changelog](https://github.com/JetBrains/kotlin/blob/v1.8.21/ChangeLog.md) - [Commits](https://github.com/JetBrains/kotlin/compare/v1.8.20...v1.8.21) Updates `org.jetbrains.kotlin:kotlin-test-junit` from 1.8.20 to 1.8.21 - [Release notes](https://github.com/JetBrains/kotlin/releases) - [Changelog](https://github.com/JetBrains/kotlin/blob/v1.8.21/ChangeLog.md) - [Commits](https://github.com/JetBrains/kotlin/compare/v1.8.20...v1.8.21) --- updated-dependencies: - dependency-name: org.jetbrains.kotlin:kotlin-gradle-plugin dependency-type: direct:production update-type: version-update:semver-patch - dependency-name: org.jetbrains.kotlin:kotlin-stdlib dependency-type: direct:production update-type: version-update:semver-patch - dependency-name: org.jetbrains.kotlin:kotlin-test dependency-type: direct:production update-type: version-update:semver-patch - dependency-name: org.jetbrains.kotlin:kotlin-reflect dependency-type: direct:production update-type: version-update:semver-patch - dependency-name: org.jetbrains.kotlin:kotlin-test-junit5 dependency-type: direct:production update-type: version-update:semver-patch - dependency-name: org.jetbrains.kotlin:kotlin-test-junit dependency-type: direct:production update-type: version-update:semver-patch ... Signed-off-by: dependabot[bot] <support@github.com> * build(deps): bump com.squareup.okhttp3:okhttp from 4.10.0 to 4.11.0 Bumps [com.squareup.okhttp3:okhttp](https://github.com/square/okhttp) from 4.10.0 to 4.11.0. - [Release notes](https://github.com/square/okhttp/releases) - [Changelog](https://github.com/square/okhttp/blob/master/CHANGELOG.md) - [Commits](https://github.com/square/okhttp/compare/parent-4.10.0...parent-4.11.0) --- updated-dependencies: - dependency-name: com.squareup.okhttp3:okhttp dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com> * build(deps): bump com.fasterxml.jackson.core:jackson-databind Bumps [com.fasterxml.jackson.core:jackson-databind](https://github.com/FasterXML/jackson) from 2.14.2 to 2.15.0. - [Release notes](https://github.com/FasterXML/jackson/releases) - [Commits](https://github.com/FasterXML/jackson/commits) --- updated-dependencies: - dependency-name: com.fasterxml.jackson.core:jackson-databind dependency-type: direct:production update-type: version-update:semver-minor ... Signed-off-by: dependabot[bot] <support@github.com> --------- Signed-off-by: dependabot[bot] <support@github.com> Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
148 lines
6.5 KiB
Groovy
148 lines
6.5 KiB
Groovy
import org.gradle.internal.jvm.Jvm
|
|
|
|
// Top-level build file where you can add configuration options common to all sub-projects/modules.
|
|
|
|
buildscript {
|
|
// The version for the Kotlin plugin and dependencies
|
|
ext.kotlin_version = '1.8.21'
|
|
ext.lint_version = '31.0.0'
|
|
ext.acra_version = '5.9.7'
|
|
ext.ankidroid_backend_version = '0.1.21-anki2.1.61'
|
|
ext.hamcrest_version = '2.2'
|
|
ext.junit_version = '5.9.2'
|
|
ext.coroutines_version = '1.6.4'
|
|
ext.fragments_version = "1.5.7"
|
|
ext.espresso_version = '3.5.1'
|
|
ext.androidx_test_version = '1.5.0'
|
|
ext.androidx_test_junit_version = '1.1.5'
|
|
ext.robolectric_version = '4.9.2'
|
|
|
|
repositories {
|
|
google()
|
|
maven {
|
|
url "https://plugins.gradle.org/m2/"
|
|
}
|
|
}
|
|
dependencies {
|
|
classpath 'com.android.tools.build:gradle:7.4.2'
|
|
// NOTE: Do not place your application dependencies here; they belong
|
|
// in the individual module build.gradle files
|
|
classpath "app.brant:amazonappstorepublisher:0.1.0"
|
|
|
|
classpath "org.jetbrains.kotlin:kotlin-gradle-plugin:$kotlin_version"
|
|
classpath "org.jlleitschuh.gradle:ktlint-gradle:11.3.1"
|
|
}
|
|
}
|
|
|
|
repositories {
|
|
mavenCentral()
|
|
}
|
|
|
|
allprojects {
|
|
apply plugin: "org.jlleitschuh.gradle.ktlint"
|
|
}
|
|
|
|
Properties localProperties = new Properties()
|
|
if (project.rootProject.file('local.properties').exists()) {
|
|
localProperties.load(project.rootProject.file('local.properties').newDataInputStream())
|
|
}
|
|
Boolean fatalWarnings = !(localProperties['fatal_warnings'] == "false")
|
|
|
|
// Here we extract per-module "best practices" settings to a single top-level evaluation
|
|
subprojects {
|
|
afterEvaluate { project ->
|
|
|
|
if (project.hasProperty('android')) {
|
|
project.android.testOptions.unitTests {
|
|
includeAndroidResources = true
|
|
}
|
|
project.android.testOptions.unitTests.all {
|
|
// tell backend to avoid rollover time, and disable interval fuzzing
|
|
environment "ANKI_TEST_MODE", "1"
|
|
|
|
useJUnitPlatform()
|
|
testLogging {
|
|
events "failed", "skipped"
|
|
showStackTraces = true
|
|
exceptionFormat = "full"
|
|
}
|
|
|
|
maxParallelForks = gradleTestMaxParallelForks
|
|
forkEvery = 40
|
|
systemProperties['junit.jupiter.execution.parallel.enabled'] = true
|
|
systemProperties['junit.jupiter.execution.parallel.mode.default'] = "concurrent"
|
|
}
|
|
}
|
|
|
|
/**
|
|
Kotlin allows concrete function implementations inside interfaces.
|
|
For those to work when Kotlin compilation targets the JVM backend, you have to enable the interoperability via
|
|
'freeCompilerArgs' in your gradle file, and you have to choose one of the appropriate '-Xjvm-default' modes.
|
|
|
|
https://kotlinlang.org/docs/java-to-kotlin-interop.html#default-methods-in-interfaces
|
|
|
|
and we used "all" because we don't have downstream consumers
|
|
https://docs.gradle.org/current/userguide/task_configuration_avoidance.html
|
|
|
|
Related to ExperimentalCoroutinesApi: this opt-in is added to enable usage of experimental
|
|
coroutines API, this targets all project modules with the exception of the "api" module,
|
|
which doesn't use coroutines so the annotation isn't not available. This would normally
|
|
result in a warning but we treat warnings as errors.
|
|
(see https://youtrack.jetbrains.com/issue/KT-28777/Using-experimental-coroutines-api-causes-unresolved-dependency)
|
|
*/
|
|
tasks.withType(org.jetbrains.kotlin.gradle.tasks.KotlinCompile).all {
|
|
kotlinOptions {
|
|
allWarningsAsErrors = fatalWarnings
|
|
def compilerArgs = ['-Xjvm-default=all']
|
|
if (project.name != "api") {
|
|
compilerArgs += ['-opt-in=kotlinx.coroutines.ExperimentalCoroutinesApi']
|
|
}
|
|
freeCompilerArgs = compilerArgs
|
|
}
|
|
}
|
|
}
|
|
}
|
|
|
|
ext {
|
|
|
|
jvmVersion = Jvm.current().javaVersion.majorVersion
|
|
if (jvmVersion != "11" && jvmVersion != "17" && jvmVersion != "18") {
|
|
println "\n\n\n"
|
|
println "**************************************************************************************************************"
|
|
println "\n\n\n"
|
|
println "ERROR: AnkiDroid builds with JVM version 11, 17 or 18."
|
|
println " Incompatible major version detected: '" + jvmVersion + "'"
|
|
println "\n\n\n"
|
|
println "**************************************************************************************************************"
|
|
println "\n\n\n"
|
|
System.exit(1)
|
|
}
|
|
ciBuild = System.getenv("CI") == "true" // works for Travis CI or Github Actions
|
|
// allows for -Dpre-dex=false to be set
|
|
preDexEnabled = "true" == System.getProperty("pre-dex", "true")
|
|
// allows for universal APKs to be generated
|
|
universalApkEnabled = "true" == System.getProperty("universal-apk", "false")
|
|
|
|
if (System.getProperty("os.name") == "Mac OS X") {
|
|
// macOS reports hardware cores. This is accurate for CI, Intel (halved due to SMT) and Apple Silicon
|
|
gradleTestMaxParallelForks = "sysctl -n hw.physicalcpu".execute().text.toInteger()
|
|
} else if (ciBuild) {
|
|
// GitHub Actions (Standard_DS2_v2) are 1:1 on Linux/Windows with two vCPU cores
|
|
// Sources:
|
|
// Standard_DS2_v2 https://docs.github.com/en/actions/using-github-hosted-runners/about-github-hosted-runners#cloud-hosts-for-github-hosted-runners
|
|
// Which is 1:1 https://docs.microsoft.com/en-gb/azure/virtual-machines/acu : DS1_v2 - DS15_v2 | 1:1
|
|
gradleTestMaxParallelForks = 2
|
|
|
|
// separate gradle compile process is a major speed improvement, but consumes 2x RAM
|
|
// the CI machines don't have enough RAM to do that without going in to swap quite a bit
|
|
// so for CI machines only - to improve reliability despite compilation speed hit, compile kotlin in process
|
|
println "CI build detected: setting compiler execution strategy to IN_PROCESS"
|
|
tasks.withType(org.jetbrains.kotlin.gradle.tasks.KotlinCompile).configureEach {
|
|
compilerExecutionStrategy.set(org.jetbrains.kotlin.gradle.tasks.KotlinCompilerExecutionStrategy.IN_PROCESS)
|
|
}
|
|
} else {
|
|
// Use 50% of cores to account for SMT which doesn't help this workload
|
|
gradleTestMaxParallelForks = Runtime.runtime.availableProcessors().intdiv(2) ?: 1
|
|
}
|
|
}
|