22
33import com.vanniktech.maven.publish.JavadocJar
44import com.vanniktech.maven.publish.KotlinMultiplatform
5- import org.jetbrains.kotlin.gradle.dsl.JvmTarget
65import org.jetbrains.kotlin.gradle.tasks.KotlinCompile
76import org.jetbrains.kotlin.gradle.tasks.KotlinJvmCompile
87import ru.vyarus.gradle.plugin.animalsniffer.AnimalSniffer
98import ru.vyarus.gradle.plugin.animalsniffer.AnimalSnifferExtension
109
1110plugins {
1211 kotlin(" multiplatform" )
13- id(" com.android.library" )
12+ id(" com.android.kotlin.multiplatform. library" )
1413 kotlin(" plugin.serialization" )
1514 id(" com.vanniktech.maven.publish.base" )
1615 id(" binary-compatibility-validator" )
@@ -54,9 +53,32 @@ kotlin {
5453 jvm {
5554 }
5655
57- androidTarget {
58- compilerOptions {
59- jvmTarget.set(JvmTarget .JVM_17 )
56+ androidLibrary {
57+ namespace = " okhttp.okhttp3"
58+ compileSdk = 35
59+ minSdk = 21
60+
61+ androidResources {
62+ enable = true
63+ }
64+
65+ optimization {
66+ consumerKeepRules.publish = true
67+ consumerKeepRules.files.add(file(" okhttp3.pro" ))
68+ }
69+
70+ withDeviceTest {
71+ instrumentationRunner = " androidx.test.runner.AndroidJUnitRunner"
72+ execution = " HOST"
73+ }
74+
75+ // SDK 35 needs 17, for now avoid trying to run on
76+ // multiple robolectric versions, since device tests
77+ // do that
78+ if (testJavaVersion >= 17 ) {
79+ withHostTest {
80+ isIncludeAndroidResources = true
81+ }
6082 }
6183 }
6284
@@ -157,17 +179,19 @@ kotlin {
157179 }
158180 }
159181
160- val androidUnitTest by getting {
161- dependencies {
162- implementation(libs.assertk)
163- implementation(libs.kotlin.test.annotations)
164- implementation(libs.kotlin.test.common)
165- implementation(libs.androidx.junit)
182+ if (testJavaVersion >= 17 ) {
183+ val androidHostTest by getting {
184+ dependencies {
185+ implementation(libs.assertk)
186+ implementation(libs.kotlin.test.annotations)
187+ implementation(libs.kotlin.test.common)
188+ implementation(libs.androidx.junit)
166189
167- implementation(libs.junit.jupiter.engine)
168- implementation(libs.junit.vintage.engine)
190+ implementation(libs.junit.jupiter.engine)
191+ implementation(libs.junit.vintage.engine)
169192
170- implementation(libs.robolectric)
193+ implementation(libs.robolectric)
194+ }
171195 }
172196 }
173197 }
@@ -186,30 +210,7 @@ if (platform == "jdk8alpn") {
186210 }
187211}
188212
189- android {
190- compileSdk = 35
191213
192- namespace = " okhttp.okhttp3"
193-
194- defaultConfig {
195- minSdk = 21
196-
197- consumerProguardFiles(" okhttp3.pro" )
198- }
199-
200- testOptions {
201- unitTests {
202- isIncludeAndroidResources = true
203- }
204- }
205-
206- sourceSets {
207- named(" main" ) {
208- manifest.srcFile(" src/androidMain/AndroidManifest.xml" )
209- assets.srcDir(" src/androidMain/assets" )
210- }
211- }
212- }
213214
214215// From https://github.com/Kotlin/kotlinx-atomicfu/blob/master/atomicfu/build.gradle.kts
215216val compileJavaModuleInfo by tasks.registering(JavaCompile ::class ) {
@@ -346,13 +347,6 @@ afterEvaluate {
346347 // https://cs.android.com/android-studio/platform/tools/base/+/mirror-goog-studio-main:build-system/gradle-core/src/main/java/com/android/build/gradle/tasks/factory/AndroidUnitTest.java;l=339
347348 allJvmArgs = allJvmArgs.filter { ! it.startsWith(" --add-opens" ) }
348349 }
349- if (name.matches(" test.*UnitTest" .toRegex()) && javaLauncher.get().metadata.languageVersion.asInt() < 17 ) {
350- // Work around robolectric requirements and limitations
351- // https://github.com/robolectric/robolectric/issues/10419
352- filter {
353- excludeTest(" okhttp3.internal.publicsuffix.PublicSuffixDatabaseTest" , null )
354- }
355- }
356350 }
357351}
358352
@@ -368,5 +362,5 @@ tasks.withType<KotlinCompile> {
368362apply (plugin = " io.github.usefulness.maven-sympathy" )
369363
370364mavenPublishing {
371- configure(KotlinMultiplatform (javadocJar = JavadocJar .Empty (), androidVariantsToPublish = listOf ( " release " ) ))
365+ configure(KotlinMultiplatform (javadocJar = JavadocJar .Empty ()))
372366}
0 commit comments