1 class AndroidSdk( 2 val apiLevel: Int, 3 val androidVersion: String, 4 private val frameworkSdkBuildVersion: String, 5 ) : Comparable<AndroidSdk> { 6 val groupId: String 7 get() = "org.robolectric" 8 9 val artifactId: String 10 get() = "android-all" 11 12 val preinstrumentedArtifactId: String 13 get() = "android-all-instrumented" 14 15 val version: String 16 get() = "$androidVersion-robolectric-$frameworkSdkBuildVersion" 17 18 val preinstrumentedVersion: String 19 get() = "$version-i$PREINSTRUMENTED_VERSION" 20 21 val coordinates: String 22 get() = "$groupId:$artifactId:$version" 23 24 val preinstrumentedCoordinates: String 25 get() = "$groupId:$preinstrumentedArtifactId:$preinstrumentedVersion" 26 27 val jarFileName: String 28 get() = "android-all-$version.jar" 29 30 val preinstrumentedJarFileName: String 31 get() = "android-all-instrumented-$preinstrumentedVersion.jar" 32 compareTonull33 override fun compareTo(other: AndroidSdk): Int { 34 return apiLevel - other.apiLevel 35 } 36 equalsnull37 override fun equals(other: Any?): Boolean { 38 return when { 39 this === other -> true 40 other !is AndroidSdk -> false 41 apiLevel != other.apiLevel -> false 42 else -> true 43 } 44 } 45 hashCodenull46 override fun hashCode(): Int { 47 return apiLevel 48 } 49 50 companion object { 51 private const val PREINSTRUMENTED_VERSION = 7 52 53 val LOLLIPOP = AndroidSdk(21, "5.0.2_r3", "r0") 54 val LOLLIPOP_MR1 = AndroidSdk(22, "5.1.1_r9", "r2") 55 val M = AndroidSdk(23, "6.0.1_r3", "r1") 56 val N = AndroidSdk(24, "7.0.0_r1", "r1") 57 val N_MR1 = AndroidSdk(25, "7.1.0_r7", "r1") 58 val O = AndroidSdk(26, "8.0.0_r4", "r1") 59 val O_MR1 = AndroidSdk(27, "8.1.0", "4611349") 60 val P = AndroidSdk(28, "9", "4913185-2") 61 val Q = AndroidSdk(29, "10", "5803371") 62 val R = AndroidSdk(30, "11", "6757853") 63 val S = AndroidSdk(31, "12", "7732740") 64 val S_V2 = AndroidSdk(32, "12.1", "8229987") 65 val TIRAMISU = AndroidSdk(33, "13", "9030017") 66 val U = AndroidSdk(34, "14", "10818077") 67 val V = AndroidSdk(35, "15", "12650502") 68 69 val ALL_SDKS = 70 listOf(LOLLIPOP, LOLLIPOP_MR1, M, N, N_MR1, O, O_MR1, P, Q, R, S, S_V2, TIRAMISU, U, V) 71 <lambda>null72 val MAX_SDK = ALL_SDKS.maxBy { it.apiLevel } 73 } 74 } 75