build.gradle.kts 4.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133
  1. /*
  2. * Copyright 2019-2021 Mamoe Technologies and contributors.
  3. *
  4. * 此源代码的使用受 GNU AFFERO GENERAL PUBLIC LICENSE version 3 许可证的约束, 可以在以下链接找到该许可证.
  5. * Use of this source code is governed by the GNU AGPLv3 license that can be found through the following link.
  6. *
  7. * https://github.com/mamoe/mirai/blob/master/LICENSE
  8. */
  9. @file:Suppress("UNUSED_VARIABLE")
  10. import org.jetbrains.kotlin.gradle.plugin.KotlinPlatformType
  11. plugins {
  12. kotlin("multiplatform")
  13. // id("kotlinx-atomicfu")
  14. kotlin("plugin.serialization")
  15. id("me.him188.kotlin-jvm-blocking-bridge")
  16. `maven-publish`
  17. }
  18. description = "Mirai Protocol implementation for QQ Android"
  19. afterEvaluate {
  20. tasks.getByName("compileKotlinCommon").enabled = false
  21. tasks.getByName("compileTestKotlinCommon").enabled = false
  22. tasks.getByName("compileCommonMainKotlinMetadata").enabled = false
  23. tasks.getByName("compileKotlinMetadata").enabled = false
  24. }
  25. kotlin {
  26. explicitApi()
  27. if (isAndroidSDKAvailable) {
  28. // apply(from = rootProject.file("gradle/android.gradle"))
  29. // android("android") {
  30. // publishAllLibraryVariants()
  31. // }
  32. jvm("android") {
  33. attributes.attribute(KotlinPlatformType.attribute, KotlinPlatformType.androidJvm)
  34. // publishAllLibraryVariants()
  35. }
  36. } else {
  37. printAndroidNotInstalled()
  38. }
  39. jvm("common") {
  40. attributes.attribute(KotlinPlatformType.attribute, KotlinPlatformType.common)
  41. }
  42. jvm("jvm")
  43. /*
  44. jvm("android") {
  45. attributes.attribute(ATTRIBUTE_MIRAI_TARGET_PLATFORM, "android")
  46. }*/
  47. sourceSets.apply {
  48. val commonMain by getting {
  49. dependencies {
  50. api(project(":mirai-core-api"))
  51. api(`kotlinx-serialization-core-jvm`)
  52. api(`kotlinx-serialization-json-jvm`)
  53. api(`kotlinx-coroutines-core-jvm`)
  54. implementation(project(":mirai-core-utils"))
  55. implementation(`kotlinx-serialization-protobuf-jvm`)
  56. implementation(`kotlinx-atomicfu-jvm`)
  57. implementation(`netty-all`)
  58. implementation(`log4j-api`)
  59. implementation(bouncycastle)
  60. implementationKotlinxIoJvm()
  61. }
  62. }
  63. commonTest {
  64. dependencies {
  65. implementation(kotlin("script-runtime"))
  66. api(`yamlkt-jvm`)
  67. }
  68. }
  69. if (isAndroidSDKAvailable) {
  70. val androidMain by getting {
  71. dependsOn(commonMain)
  72. dependencies {
  73. compileOnly(`android-runtime`)
  74. }
  75. }
  76. val androidTest by getting {
  77. dependencies {
  78. implementation(kotlin("test", Versions.kotlinCompiler))
  79. implementation(kotlin("test-junit5", Versions.kotlinCompiler))
  80. implementation(kotlin("test-annotations-common"))
  81. implementation(kotlin("test-common"))
  82. //implementation("org.bouncycastle:bcprov-jdk15on:1.64")
  83. }
  84. }
  85. }
  86. val jvmMain by getting {
  87. dependencies {
  88. //implementation("org.bouncycastle:bcprov-jdk15on:1.64")
  89. // api(kotlinx("coroutines-debug", Versions.coroutines))
  90. }
  91. }
  92. val jvmTest by getting {
  93. dependencies {
  94. api(`kotlinx-coroutines-debug`)
  95. // implementation("net.mamoe:mirai-login-solver-selenium:1.0-dev-14")
  96. }
  97. }
  98. }
  99. }
  100. if (isAndroidSDKAvailable) {
  101. tasks.register("checkAndroidApiLevel") {
  102. doFirst {
  103. analyzes.AndroidApiLevelCheck.check(
  104. buildDir.resolve("classes/kotlin/android/main"),
  105. project.property("mirai.android.target.api.level")!!.toString().toInt(),
  106. project
  107. )
  108. }
  109. group = "verification"
  110. this.mustRunAfter("androidMainClasses")
  111. }
  112. tasks.getByName("androidTest").dependsOn("checkAndroidApiLevel")
  113. }
  114. configureMppPublishing()