2018-10-03 23:56:33 +08:00
|
|
|
// Top-level build file where you can add configuration options common to all sub-projects/modules.
|
|
|
|
|
|
|
|
buildscript {
|
2021-09-15 17:28:58 +08:00
|
|
|
apply from: 'dependencies.gradle'
|
2021-12-11 04:19:43 +08:00
|
|
|
apply from: 'dependencies_groups.gradle'
|
2021-09-15 17:28:58 +08:00
|
|
|
|
2018-10-03 23:56:33 +08:00
|
|
|
repositories {
|
2022-05-07 00:40:38 +08:00
|
|
|
// Do not use `google()`, it prevents Dependabot from working properly
|
|
|
|
maven {
|
|
|
|
url 'https://maven.google.com'
|
|
|
|
}
|
2019-03-18 23:53:52 +08:00
|
|
|
maven {
|
|
|
|
url "https://plugins.gradle.org/m2/"
|
2019-05-07 20:02:15 +08:00
|
|
|
}
|
2022-05-10 20:11:04 +08:00
|
|
|
// Do not use `mavenCentral()`, it prevents Dependabot from working properly
|
|
|
|
maven {
|
|
|
|
url 'https://repo1.maven.org/maven2'
|
|
|
|
}
|
2019-05-07 20:02:15 +08:00
|
|
|
}
|
2021-09-15 17:28:58 +08:00
|
|
|
|
2018-10-03 23:56:33 +08:00
|
|
|
dependencies {
|
2021-09-02 15:36:13 +08:00
|
|
|
// Release notes of Android Gradle Plugin (AGP):
|
|
|
|
// https://developer.android.com/studio/releases/gradle-plugin
|
2021-09-15 17:28:58 +08:00
|
|
|
classpath libs.gradle.gradlePlugin
|
|
|
|
classpath libs.gradle.kotlinPlugin
|
2021-10-15 00:47:28 +08:00
|
|
|
classpath libs.gradle.hiltPlugin
|
2023-03-03 07:59:59 +08:00
|
|
|
classpath 'com.google.firebase:firebase-appdistribution-gradle:4.0.0'
|
2023-01-20 15:12:37 +08:00
|
|
|
classpath 'com.google.gms:google-services:4.3.15'
|
2023-02-28 17:35:39 +08:00
|
|
|
classpath 'org.sonarsource.scanner.gradle:sonarqube-gradle-plugin:4.0.0.2929'
|
2023-01-09 16:56:28 +08:00
|
|
|
classpath 'com.google.android.gms:oss-licenses-plugin:0.10.6'
|
2023-01-10 21:21:58 +08:00
|
|
|
classpath "com.likethesalad.android:stem-plugin:2.3.0"
|
2023-03-24 17:25:58 +08:00
|
|
|
classpath 'org.owasp:dependency-check-gradle:8.2.1'
|
2023-03-04 07:59:18 +08:00
|
|
|
classpath "org.jetbrains.dokka:dokka-gradle-plugin:1.8.10"
|
2022-05-04 21:52:51 +08:00
|
|
|
classpath "org.jetbrains.kotlinx:kotlinx-knit:0.4.0"
|
2022-08-11 16:50:10 +08:00
|
|
|
classpath 'com.jakewharton:butterknife-gradle-plugin:10.2.3'
|
2022-10-13 17:52:35 +08:00
|
|
|
classpath libs.squareup.paparazziPlugin
|
2018-10-03 23:56:33 +08:00
|
|
|
// NOTE: Do not place your application dependencies here; they belong
|
|
|
|
// in the individual module build.gradle files
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2021-10-01 19:28:47 +08:00
|
|
|
plugins {
|
2022-05-12 22:41:36 +08:00
|
|
|
// ktlint Plugin
|
2023-03-06 14:56:57 +08:00
|
|
|
id "org.jlleitschuh.gradle.ktlint" version "11.3.1"
|
2022-05-12 22:41:36 +08:00
|
|
|
// Detekt
|
2022-11-22 07:11:30 +08:00
|
|
|
id "io.gitlab.arturbosch.detekt" version "1.22.0"
|
2022-10-03 22:30:44 +08:00
|
|
|
// Ksp
|
2023-02-07 19:54:45 +08:00
|
|
|
id "com.google.devtools.ksp" version "1.8.10-1.0.9"
|
2022-05-18 20:19:11 +08:00
|
|
|
|
|
|
|
// Dependency Analysis
|
2023-04-24 15:58:50 +08:00
|
|
|
id 'com.autonomousapps.dependency-analysis' version "1.20.0"
|
2022-09-19 21:30:13 +08:00
|
|
|
// Gradle doctor
|
|
|
|
id "com.osacky.doctor" version "0.8.1"
|
2021-10-01 19:28:47 +08:00
|
|
|
}
|
|
|
|
|
2022-03-22 21:05:33 +08:00
|
|
|
// https://github.com/jeremylong/DependencyCheck
|
|
|
|
apply plugin: 'org.owasp.dependencycheck'
|
|
|
|
|
2022-03-30 01:38:10 +08:00
|
|
|
dependencyCheck {
|
|
|
|
// See https://jeremylong.github.io/DependencyCheck/general/suppression.html
|
|
|
|
suppressionFiles = [
|
|
|
|
"./tools/dependencycheck/suppressions.xml"
|
|
|
|
]
|
|
|
|
}
|
|
|
|
|
2022-09-19 22:41:00 +08:00
|
|
|
// Gradle doctor configuration
|
|
|
|
apply from: './tools/gradle/doctor.gradle'
|
|
|
|
|
2018-10-03 23:56:33 +08:00
|
|
|
allprojects {
|
2021-10-01 19:28:47 +08:00
|
|
|
apply plugin: "org.jlleitschuh.gradle.ktlint"
|
2022-05-12 22:41:36 +08:00
|
|
|
apply plugin: "io.gitlab.arturbosch.detekt"
|
2021-10-01 19:28:47 +08:00
|
|
|
|
2018-10-03 23:56:33 +08:00
|
|
|
repositories {
|
2022-05-07 00:40:38 +08:00
|
|
|
// Do not use `mavenCentral()`, it prevents Dependabot from working properly
|
2022-05-07 00:23:58 +08:00
|
|
|
maven {
|
|
|
|
url 'https://repo1.maven.org/maven2'
|
2022-01-31 23:29:31 +08:00
|
|
|
content {
|
|
|
|
groups.mavenCentral.regex.each { includeGroupByRegex it }
|
|
|
|
groups.mavenCentral.group.each { includeGroup it }
|
|
|
|
}
|
|
|
|
}
|
2022-09-17 05:12:48 +08:00
|
|
|
// snapshots repository
|
|
|
|
maven {
|
|
|
|
url "https://oss.sonatype.org/content/repositories/snapshots"
|
|
|
|
content {
|
|
|
|
groups.snapshot.regex.each { includeGroupByRegex it }
|
|
|
|
groups.snapshot.group.each { includeGroup it }
|
|
|
|
}
|
|
|
|
}
|
2019-05-16 16:23:57 +08:00
|
|
|
maven {
|
|
|
|
url 'https://jitpack.io'
|
2019-07-11 20:03:20 +08:00
|
|
|
content {
|
2021-12-11 04:35:48 +08:00
|
|
|
groups.jitpack.regex.each { includeGroupByRegex it }
|
|
|
|
groups.jitpack.group.each { includeGroup it }
|
2019-07-11 20:03:20 +08:00
|
|
|
}
|
|
|
|
}
|
2020-08-12 20:02:00 +08:00
|
|
|
// Jitsi repo
|
|
|
|
maven {
|
2023-05-02 20:29:41 +08:00
|
|
|
url "https://github.com/vector-im/jitsi_libre_maven/raw/main/android-sdk-8.1.1"
|
2020-08-15 03:33:25 +08:00
|
|
|
// Note: to test Jitsi release you can use a local file like this:
|
2023-05-02 20:29:41 +08:00
|
|
|
// url "file:///Users/bmarty/workspaces/jitsi_libre_maven/android-sdk-8.1.1"
|
2021-12-10 04:23:33 +08:00
|
|
|
content {
|
2021-12-11 04:35:48 +08:00
|
|
|
groups.jitsi.regex.each { includeGroupByRegex it }
|
|
|
|
groups.jitsi.group.each { includeGroup it }
|
2021-12-10 04:23:33 +08:00
|
|
|
}
|
2020-08-12 20:02:00 +08:00
|
|
|
}
|
2022-05-07 00:40:38 +08:00
|
|
|
// Do not use `google()`, it prevents Dependabot from working properly
|
|
|
|
maven {
|
|
|
|
url 'https://maven.google.com'
|
2021-12-10 04:41:37 +08:00
|
|
|
content {
|
2021-12-11 04:35:48 +08:00
|
|
|
groups.google.regex.each { includeGroupByRegex it }
|
|
|
|
groups.google.group.each { includeGroup it }
|
2021-12-10 04:41:37 +08:00
|
|
|
}
|
|
|
|
}
|
2021-12-11 01:09:14 +08:00
|
|
|
//noinspection JcenterRepositoryObsolete
|
2022-05-07 00:40:38 +08:00
|
|
|
// Do not use `jcenter`, it prevents Dependabot from working properly
|
|
|
|
maven {
|
|
|
|
url 'https://jcenter.bintray.com'
|
2021-12-10 04:03:36 +08:00
|
|
|
content {
|
2021-12-11 04:35:48 +08:00
|
|
|
groups.jcenter.regex.each { includeGroupByRegex it }
|
|
|
|
groups.jcenter.group.each { includeGroup it }
|
2021-12-10 04:03:36 +08:00
|
|
|
}
|
|
|
|
}
|
2022-03-29 00:15:46 +08:00
|
|
|
|
|
|
|
maven {
|
|
|
|
url 'https://s01.oss.sonatype.org/content/repositories/snapshots'
|
|
|
|
content {
|
|
|
|
groups.mavenSnapshots.regex.each { includeGroupByRegex it }
|
|
|
|
groups.mavenSnapshots.group.each { includeGroup it }
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2018-10-03 23:56:33 +08:00
|
|
|
}
|
2019-07-17 01:13:48 +08:00
|
|
|
|
2019-10-08 20:30:59 +08:00
|
|
|
tasks.withType(org.jetbrains.kotlin.gradle.tasks.KotlinCompile).all {
|
|
|
|
// Warnings are potential errors, so stop ignoring them
|
2020-10-08 19:04:55 +08:00
|
|
|
// You can override by passing `-PallWarningsAsErrors=false` in the command line
|
2020-10-22 23:23:45 +08:00
|
|
|
kotlinOptions.allWarningsAsErrors = project.getProperties().getOrDefault("allWarningsAsErrors", "true").toBoolean()
|
2019-10-08 20:30:59 +08:00
|
|
|
}
|
2021-10-01 19:28:47 +08:00
|
|
|
|
|
|
|
// Fix "Java heap space" issue
|
|
|
|
tasks.withType(org.jlleitschuh.gradle.ktlint.tasks.BaseKtLintCheckTask).configureEach {
|
|
|
|
it.workerMaxHeapSize.set("2G")
|
|
|
|
}
|
|
|
|
|
|
|
|
// See https://github.com/JLLeitschuh/ktlint-gradle#configuration
|
|
|
|
ktlint {
|
2022-03-28 22:17:27 +08:00
|
|
|
// See https://github.com/pinterest/ktlint/releases/
|
|
|
|
version = "0.45.1"
|
2021-10-01 19:28:47 +08:00
|
|
|
android = true
|
|
|
|
ignoreFailures = false
|
|
|
|
enableExperimentalRules = true
|
|
|
|
// display the corresponding rule
|
|
|
|
verbose = true
|
2022-07-29 16:00:49 +08:00
|
|
|
reporters {
|
|
|
|
reporter(org.jlleitschuh.gradle.ktlint.reporter.ReporterType.PLAIN)
|
|
|
|
// To have XML report for Danger
|
|
|
|
reporter(org.jlleitschuh.gradle.ktlint.reporter.ReporterType.CHECKSTYLE)
|
|
|
|
}
|
2022-10-11 23:05:47 +08:00
|
|
|
filter {
|
|
|
|
exclude { element -> element.file.path.contains("$buildDir/generated/") }
|
|
|
|
}
|
2021-10-01 19:28:47 +08:00
|
|
|
disabledRules = [
|
2022-05-12 23:06:52 +08:00
|
|
|
// TODO Re-enable these 4 rules after reformatting project
|
2022-04-12 17:12:14 +08:00
|
|
|
"indent",
|
2022-04-12 17:18:01 +08:00
|
|
|
"experimental:argument-list-wrapping",
|
2022-04-12 17:25:35 +08:00
|
|
|
"max-line-length",
|
|
|
|
"parameter-list-wrapping",
|
|
|
|
|
2021-10-01 19:28:47 +08:00
|
|
|
"spacing-between-declarations-with-comments",
|
|
|
|
"no-multi-spaces",
|
|
|
|
"experimental:spacing-between-declarations-with-annotations",
|
2022-03-28 22:35:03 +08:00
|
|
|
"experimental:annotation",
|
|
|
|
// - Missing newline after "("
|
|
|
|
// - Missing newline before ")"
|
|
|
|
"wrapping",
|
|
|
|
// - Unnecessary trailing comma before ")"
|
|
|
|
"experimental:trailing-comma",
|
|
|
|
// - A block comment in between other elements on the same line is disallowed
|
|
|
|
"experimental:comment-wrapping",
|
|
|
|
// - A KDoc comment after any other element on the same line must be separated by a new line
|
|
|
|
"experimental:kdoc-wrapping",
|
2022-08-16 22:28:27 +08:00
|
|
|
// Ignore error "Redundant curly braces", since we use it to fix false positives, for instance in "elementLogs.${i}.txt"
|
|
|
|
"string-template",
|
2021-10-01 19:28:47 +08:00
|
|
|
]
|
|
|
|
}
|
2022-05-12 22:41:36 +08:00
|
|
|
|
|
|
|
detekt {
|
|
|
|
// preconfigure defaults
|
|
|
|
buildUponDefaultConfig = true
|
|
|
|
// activate all available (even unstable) rules.
|
2022-05-13 21:48:27 +08:00
|
|
|
allRules = true
|
2022-05-12 22:41:36 +08:00
|
|
|
// point to your custom config defining rules to run, overwriting default behavior
|
|
|
|
config = files("$rootDir/tools/detekt/detekt.yml")
|
|
|
|
}
|
2018-10-03 23:56:33 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
task clean(type: Delete) {
|
|
|
|
delete rootProject.buildDir
|
|
|
|
}
|
2019-03-18 23:53:52 +08:00
|
|
|
|
2022-03-03 18:40:11 +08:00
|
|
|
def launchTask = getGradle()
|
|
|
|
.getStartParameter()
|
|
|
|
.getTaskRequests()
|
|
|
|
.toString()
|
|
|
|
.toLowerCase()
|
|
|
|
|
2022-06-14 22:56:16 +08:00
|
|
|
if (launchTask.contains("coverage".toLowerCase())) {
|
2022-03-03 18:40:11 +08:00
|
|
|
apply from: 'coverage.gradle'
|
|
|
|
}
|
|
|
|
|
2019-03-18 23:53:52 +08:00
|
|
|
apply plugin: 'org.sonarqube'
|
|
|
|
|
2019-07-03 21:24:56 +08:00
|
|
|
// To run a sonar analysis:
|
2023-03-03 23:40:23 +08:00
|
|
|
// Run './gradlew sonar -Dsonar.login=<REPLACE_WITH_SONAR_KEY>'
|
2022-03-01 22:47:41 +08:00
|
|
|
// The SONAR_KEY is stored in passbolt as Token Sonar Cloud Bma
|
2019-07-03 21:24:56 +08:00
|
|
|
|
2023-03-03 23:40:23 +08:00
|
|
|
sonar {
|
2019-03-18 23:53:52 +08:00
|
|
|
properties {
|
2022-05-25 19:38:37 +08:00
|
|
|
property "sonar.projectName", "element-android"
|
|
|
|
property "sonar.projectKey", "vector-im_element-android"
|
2019-03-18 23:53:52 +08:00
|
|
|
property "sonar.host.url", "https://sonarcloud.io"
|
2019-03-19 21:38:15 +08:00
|
|
|
property "sonar.projectVersion", project(":vector").android.defaultConfig.versionName
|
2019-03-18 23:53:52 +08:00
|
|
|
property "sonar.sourceEncoding", "UTF-8"
|
2020-08-27 23:43:22 +08:00
|
|
|
property "sonar.links.homepage", "https://github.com/vector-im/element-android/"
|
2022-03-03 23:41:09 +08:00
|
|
|
property "sonar.links.ci", "https://github.com/vector-im/element-android/actions"
|
2020-08-27 23:43:22 +08:00
|
|
|
property "sonar.links.scm", "https://github.com/vector-im/element-android/"
|
|
|
|
property "sonar.links.issue", "https://github.com/vector-im/element-android/issues"
|
2019-03-18 23:53:52 +08:00
|
|
|
property "sonar.organization", "new_vector_ltd_organization"
|
2022-03-03 23:41:09 +08:00
|
|
|
property "sonar.java.coveragePlugin", "jacoco"
|
2022-06-14 22:56:16 +08:00
|
|
|
property "sonar.coverage.jacoco.xmlReportPaths", "${project.buildDir}/reports/jacoco/generateCoverageReport/generateCoverageReport.xml"
|
2019-03-18 23:53:52 +08:00
|
|
|
property "sonar.login", project.hasProperty("SONAR_LOGIN") ? SONAR_LOGIN : "invalid"
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2019-03-19 21:38:15 +08:00
|
|
|
project(":vector") {
|
2023-03-03 23:40:23 +08:00
|
|
|
sonar {
|
2019-03-18 23:53:52 +08:00
|
|
|
properties {
|
2019-03-19 21:38:15 +08:00
|
|
|
property "sonar.sources", project(":vector").android.sourceSets.main.java.srcDirs
|
2019-03-18 23:53:52 +08:00
|
|
|
// exclude source code from analyses separated by a colon (:)
|
2020-08-27 23:39:09 +08:00
|
|
|
// Exclude Java source
|
|
|
|
property "sonar.exclusions", "**/BugReporterMultipartBody.java"
|
2019-03-18 23:53:52 +08:00
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
2019-07-03 21:24:56 +08:00
|
|
|
|
2022-09-16 18:45:20 +08:00
|
|
|
project(":library:external:diff-match-patch") {
|
2023-03-03 23:40:23 +08:00
|
|
|
sonar {
|
2020-08-27 21:37:39 +08:00
|
|
|
skipProject = true
|
|
|
|
}
|
|
|
|
}
|
|
|
|
|
2019-07-03 21:24:56 +08:00
|
|
|
//project(":matrix-sdk-android") {
|
2023-03-03 23:40:23 +08:00
|
|
|
// sonar {
|
2019-07-03 21:24:56 +08:00
|
|
|
// properties {
|
|
|
|
// property "sonar.sources", project(":matrix-sdk-android").android.sourceSets.main.java.srcDirs
|
|
|
|
// // exclude source code from analyses separated by a colon (:)
|
|
|
|
// // property "sonar.exclusions", "**/*.*"
|
|
|
|
// }
|
|
|
|
// }
|
|
|
|
//}
|
2022-04-16 04:50:54 +08:00
|
|
|
|
|
|
|
dependencyAnalysis {
|
|
|
|
dependencies {
|
|
|
|
bundle("kotlin-stdlib") {
|
|
|
|
includeGroup("org.jetbrains.kotlin")
|
|
|
|
}
|
|
|
|
bundle("react") {
|
|
|
|
includeGroup("com.facebook.react")
|
|
|
|
}
|
|
|
|
}
|
|
|
|
issues {
|
|
|
|
all {
|
2022-05-19 00:47:52 +08:00
|
|
|
ignoreKtx(true)
|
|
|
|
onUsedTransitiveDependencies {
|
|
|
|
// Transitively used dependencies that should be declared directly
|
|
|
|
severity("ignore")
|
|
|
|
}
|
|
|
|
onUnusedDependencies {
|
|
|
|
severity("fail")
|
|
|
|
}
|
|
|
|
onUnusedAnnotationProcessors {
|
|
|
|
severity("fail")
|
|
|
|
exclude("com.airbnb.android:epoxy-processor", "com.google.dagger:hilt-compiler") // False positives
|
|
|
|
}
|
|
|
|
}
|
|
|
|
project(":library:jsonviewer") {
|
|
|
|
onUnusedDependencies {
|
|
|
|
exclude("org.json:json") // Used in unit tests, overwrites the one bundled into Android
|
|
|
|
}
|
|
|
|
}
|
2022-05-04 22:48:23 +08:00
|
|
|
project(":library:ui-styles")
|
2022-05-19 00:47:52 +08:00
|
|
|
project(":matrix-sdk-android") {
|
|
|
|
onUnusedDependencies {
|
|
|
|
exclude("io.reactivex.rxjava2:rxkotlin") // Transitively required for mocking realm as monarchy doesn't expose Rx
|
|
|
|
}
|
|
|
|
}
|
|
|
|
project(":matrix-sdk-android-flow") {
|
|
|
|
onUnusedDependencies {
|
|
|
|
exclude("androidx.paging:paging-runtime-ktx") // False positive
|
|
|
|
}
|
2022-04-16 04:50:54 +08:00
|
|
|
}
|
2022-05-26 20:33:28 +08:00
|
|
|
project(":vector") {
|
|
|
|
onUnusedDependencies {
|
2022-05-31 17:46:50 +08:00
|
|
|
// False positives
|
|
|
|
exclude(
|
2022-06-28 19:39:02 +08:00
|
|
|
"androidx.fragment:fragment-testing",
|
|
|
|
"com.facebook.soloader:soloader",
|
2022-05-31 17:46:50 +08:00
|
|
|
"com.vanniktech:emoji-google",
|
2022-05-31 18:08:06 +08:00
|
|
|
"com.vanniktech:emoji-material",
|
|
|
|
"org.maplibre.gl:android-plugin-annotation-v9",
|
|
|
|
"org.maplibre.gl:android-sdk",
|
2022-05-31 17:46:50 +08:00
|
|
|
)
|
2022-05-26 20:33:28 +08:00
|
|
|
}
|
|
|
|
}
|
2022-04-16 04:50:54 +08:00
|
|
|
}
|
|
|
|
}
|
2022-09-14 21:05:40 +08:00
|
|
|
|
2022-09-16 23:15:10 +08:00
|
|
|
tasks.register("recordScreenshots", GradleBuild) {
|
2022-09-14 21:05:40 +08:00
|
|
|
startParameter.projectProperties.screenshot = ""
|
2022-09-16 23:15:10 +08:00
|
|
|
tasks = [':vector:recordPaparazziDebug']
|
2022-09-14 21:05:40 +08:00
|
|
|
}
|
|
|
|
|
2022-09-16 23:15:10 +08:00
|
|
|
tasks.register("verifyScreenshots", GradleBuild) {
|
2022-09-14 21:05:40 +08:00
|
|
|
startParameter.projectProperties.screenshot = ""
|
2022-12-14 01:56:04 +08:00
|
|
|
tasks = [':vector:verifyPaparazziKotlinCryptoDebug']
|
2022-09-14 21:05:40 +08:00
|
|
|
}
|
|
|
|
|
|
|
|
ext.initScreenshotTests = { project ->
|
2022-09-16 23:15:10 +08:00
|
|
|
def hasScreenshots = project.hasProperty("screenshot")
|
|
|
|
if (hasScreenshots) {
|
|
|
|
project.apply plugin: 'app.cash.paparazzi'
|
|
|
|
}
|
2022-10-13 17:52:35 +08:00
|
|
|
project.dependencies { testCompileOnly libs.squareup.paparazzi }
|
2022-09-14 21:05:40 +08:00
|
|
|
project.android.testOptions.unitTests.all {
|
|
|
|
def screenshotTestCapture = "**/*ScreenshotTest*"
|
2022-09-16 23:15:10 +08:00
|
|
|
if (hasScreenshots) {
|
2022-09-14 21:05:40 +08:00
|
|
|
include screenshotTestCapture
|
|
|
|
} else {
|
|
|
|
exclude screenshotTestCapture
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
2022-10-03 22:42:17 +08:00
|
|
|
|
|
|
|
// Workaround to have KSP generated Kotlin code available in the IDE (for code completion)
|
|
|
|
// Ref: https://github.com/airbnb/epoxy/releases/tag/5.0.0beta02
|
|
|
|
subprojects { project ->
|
|
|
|
afterEvaluate {
|
|
|
|
if (project.hasProperty("android")) {
|
|
|
|
android {
|
|
|
|
if (it instanceof com.android.build.gradle.LibraryExtension) {
|
|
|
|
libraryVariants.all { variant ->
|
|
|
|
def outputFolder = new File("build/generated/ksp/${variant.name}/kotlin")
|
2022-10-17 15:14:28 +08:00
|
|
|
if (outputFolder.exists()) {
|
|
|
|
variant.addJavaSourceFoldersToModel(outputFolder)
|
|
|
|
android.sourceSets.getAt(variant.name).java {
|
|
|
|
srcDir(outputFolder)
|
|
|
|
}
|
2022-10-03 22:42:17 +08:00
|
|
|
}
|
|
|
|
}
|
|
|
|
} else if (it instanceof com.android.build.gradle.AppExtension) {
|
|
|
|
applicationVariants.all { variant ->
|
|
|
|
def outputFolder = new File("build/generated/ksp/${variant.name}/kotlin")
|
2022-10-17 15:14:28 +08:00
|
|
|
if (outputFolder.exists()) {
|
|
|
|
variant.addJavaSourceFoldersToModel(outputFolder)
|
|
|
|
android.sourceSets.getAt(variant.name).java {
|
|
|
|
srcDir(outputFolder)
|
|
|
|
}
|
2022-10-03 22:42:17 +08:00
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|
|
|
|
}
|