build.gradle.kts 5.0 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152
  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. implementation(`netty-all`)
  61. }
  62. }
  63. commonTest {
  64. dependencies {
  65. implementation(kotlin("script-runtime"))
  66. runtimeOnly(`slf4j-simple`)
  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. }
  83. }
  84. }
  85. val jvmMain by getting {
  86. dependencies {
  87. implementation("org.bouncycastle:bcprov-jdk15on:1.64")
  88. // api(kotlinx("coroutines-debug", Versions.coroutines))
  89. }
  90. }
  91. val jvmTest by getting {
  92. dependencies {
  93. implementation("org.pcap4j:pcap4j-distribution:1.8.2")
  94. // implementation("net.mamoe:mirai-login-solver-selenium:1.0-dev-14")
  95. }
  96. }
  97. }
  98. }
  99. if (isAndroidSDKAvailable) {
  100. tasks.register("checkAndroidApiLevel") {
  101. doFirst {
  102. analyzes.AndroidApiLevelCheck.check(
  103. buildDir.resolve("classes/kotlin/android/main"),
  104. project.property("mirai.android.target.api.level")!!.toString().toInt(),
  105. project
  106. )
  107. }
  108. group = "verification"
  109. this.mustRunAfter("androidMainClasses")
  110. }
  111. tasks.getByName("androidTest").dependsOn("checkAndroidApiLevel")
  112. }
  113. fun org.jetbrains.kotlin.gradle.plugin.KotlinDependencyHandler.implementation1(dependencyNotation: String) =
  114. implementation(dependencyNotation) {
  115. exclude("org.jetbrains.kotlin", "kotlin-stdlib")
  116. exclude("org.jetbrains.kotlinx", "kotlinx-coroutines-core")
  117. exclude("org.jetbrains.kotlinx", "kotlinx-coroutines-core-common")
  118. exclude("org.jetbrains.kotlinx", "kotlinx-coroutines-core-jvm")
  119. exclude("org.jetbrains.kotlinx", "kotlinx-coroutines-core-metadata")
  120. }
  121. fun org.jetbrains.kotlin.gradle.plugin.KotlinDependencyHandler.api1(dependencyNotation: String) =
  122. api(dependencyNotation) {
  123. exclude("org.jetbrains.kotlin", "kotlin-stdlib")
  124. exclude("org.jetbrains.kotlinx", "kotlinx-coroutines-core")
  125. exclude("org.jetbrains.kotlinx", "kotlinx-coroutines-core-common")
  126. exclude("org.jetbrains.kotlinx", "kotlinx-coroutines-core-jvm")
  127. exclude("org.jetbrains.kotlinx", "kotlinx-coroutines-core-metadata")
  128. }
  129. configureMppPublishing()