build.gradle.kts 4.9 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150
  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("net.mamoe.kotlin-jvm-blocking-bridge")
  16. `maven-publish`
  17. id("com.jfrog.bintray")
  18. }
  19. description = "Mirai Protocol implementation for QQ Android"
  20. afterEvaluate {
  21. tasks.getByName("compileKotlinCommon").enabled = false
  22. tasks.getByName("compileTestKotlinCommon").enabled = false
  23. tasks.getByName("compileCommonMainKotlinMetadata").enabled = false
  24. tasks.getByName("compileKotlinMetadata").enabled = false
  25. }
  26. kotlin {
  27. explicitApi()
  28. if (isAndroidSDKAvailable) {
  29. // apply(from = rootProject.file("gradle/android.gradle"))
  30. // android("android") {
  31. // publishAllLibraryVariants()
  32. // }
  33. jvm("android") {
  34. attributes.attribute(KotlinPlatformType.attribute, KotlinPlatformType.androidJvm)
  35. // publishAllLibraryVariants()
  36. }
  37. } else {
  38. printAndroidNotInstalled()
  39. }
  40. jvm("common") {
  41. attributes.attribute(KotlinPlatformType.attribute, KotlinPlatformType.common)
  42. }
  43. jvm("jvm")
  44. /*
  45. jvm("android") {
  46. attributes.attribute(ATTRIBUTE_MIRAI_TARGET_PLATFORM, "android")
  47. }*/
  48. sourceSets.apply {
  49. val commonMain by getting {
  50. dependencies {
  51. api(project(":mirai-core-api"))
  52. implementation(project(":mirai-core-utils"))
  53. api1(`kotlinx-serialization-core`)
  54. api1(`kotlinx-serialization-json`)
  55. implementation1(`kotlinx-serialization-protobuf`)
  56. api1(`kotlinx-atomicfu`)
  57. api1(`kotlinx-coroutines-core`)
  58. api1(`kotlinx-io-jvm`)
  59. implementation1(`kotlinx-coroutines-io`)
  60. }
  61. }
  62. commonTest {
  63. dependencies {
  64. implementation(kotlin("script-runtime"))
  65. }
  66. }
  67. if (isAndroidSDKAvailable) {
  68. val androidMain by getting {
  69. dependsOn(commonMain)
  70. dependencies {
  71. compileOnly(`android-runtime`)
  72. }
  73. }
  74. val androidTest by getting {
  75. dependencies {
  76. implementation(kotlin("test", Versions.kotlinCompiler))
  77. implementation(kotlin("test-junit", Versions.kotlinCompiler))
  78. implementation(kotlin("test-annotations-common"))
  79. implementation(kotlin("test-common"))
  80. }
  81. }
  82. }
  83. val jvmMain by getting {
  84. dependencies {
  85. implementation("org.bouncycastle:bcprov-jdk15on:1.64")
  86. // api(kotlinx("coroutines-debug", Versions.coroutines))
  87. }
  88. }
  89. val jvmTest by getting {
  90. dependencies {
  91. implementation("org.pcap4j:pcap4j-distribution:1.8.2")
  92. // implementation("net.mamoe:mirai-login-solver-selenium:1.0-dev-14")
  93. }
  94. }
  95. }
  96. }
  97. if (isAndroidSDKAvailable) {
  98. tasks.register("checkAndroidApiLevel") {
  99. doFirst {
  100. analyzes.AndroidApiLevelCheck.check(
  101. buildDir.resolve("classes/kotlin/android/main"),
  102. project.property("mirai.android.target.api.level")!!.toString().toInt(),
  103. project
  104. )
  105. }
  106. group = "verification"
  107. this.mustRunAfter("androidMainClasses")
  108. }
  109. tasks.getByName("androidTest").dependsOn("checkAndroidApiLevel")
  110. }
  111. fun org.jetbrains.kotlin.gradle.plugin.KotlinDependencyHandler.implementation1(dependencyNotation: String) =
  112. implementation(dependencyNotation) {
  113. exclude("org.jetbrains.kotlin", "kotlin-stdlib")
  114. exclude("org.jetbrains.kotlinx", "kotlinx-coroutines-core")
  115. exclude("org.jetbrains.kotlinx", "kotlinx-coroutines-core-common")
  116. exclude("org.jetbrains.kotlinx", "kotlinx-coroutines-core-jvm")
  117. exclude("org.jetbrains.kotlinx", "kotlinx-coroutines-core-metadata")
  118. }
  119. fun org.jetbrains.kotlin.gradle.plugin.KotlinDependencyHandler.api1(dependencyNotation: String) =
  120. api(dependencyNotation) {
  121. exclude("org.jetbrains.kotlin", "kotlin-stdlib")
  122. exclude("org.jetbrains.kotlinx", "kotlinx-coroutines-core")
  123. exclude("org.jetbrains.kotlinx", "kotlinx-coroutines-core-common")
  124. exclude("org.jetbrains.kotlinx", "kotlinx-coroutines-core-jvm")
  125. exclude("org.jetbrains.kotlinx", "kotlinx-coroutines-core-metadata")
  126. }
  127. configureMppPublishing()