1class AndroidSdk implements Comparable<AndroidSdk> { 2 static final PREINSTRUMENTED_VERSION = 6 3 4 static final LOLLIPOP = new AndroidSdk(21, "5.0.2_r3", "r0") 5 static final LOLLIPOP_MR1 = new AndroidSdk(22, "5.1.1_r9", "r2") 6 static final M = new AndroidSdk(23, "6.0.1_r3", "r1") 7 static final N = new AndroidSdk(24, "7.0.0_r1", "r1") 8 static final N_MR1 = new AndroidSdk(25, "7.1.0_r7", "r1") 9 static final O = new AndroidSdk(26, "8.0.0_r4", "r1") 10 static final O_MR1 = new AndroidSdk(27, "8.1.0", "4611349") 11 static final P = new AndroidSdk(28, "9", "4913185-2") 12 static final Q = new AndroidSdk(29, "10", "5803371") 13 static final R = new AndroidSdk(30, "11", "6757853") 14 static final S = new AndroidSdk(31, "12", "7732740") 15 static final S_V2 = new AndroidSdk(32, "12.1", "8229987") 16 static final TIRAMISU = new AndroidSdk(33, "13", "9030017") 17 static final U = new AndroidSdk(34, "14", "10818077") 18 19 static final List<AndroidSdk> ALL_SDKS = [ 20 LOLLIPOP, LOLLIPOP_MR1, M, N, N_MR1, O, O_MR1, P, Q, R, S, S_V2, 21 TIRAMISU, U 22 ] 23 24 static final MAX_SDK = Collections.max(ALL_SDKS) 25 26 public final int apiLevel 27 public final String androidVersion 28 private final String frameworkSdkBuildVersion 29 30 AndroidSdk(int apiLevel, String androidVersion, String frameworkSdkBuildVersion) { 31 this.apiLevel = apiLevel 32 this.androidVersion = androidVersion 33 this.frameworkSdkBuildVersion = frameworkSdkBuildVersion 34 } 35 36 static String getGroupId() { 37 return "org.robolectric" 38 } 39 40 static String getArtifactId() { 41 return "android-all" 42 } 43 44 static String getPreinstrumentedArtifactId() { 45 return "android-all-instrumented" 46 } 47 48 String getVersion() { 49 return "${androidVersion}-robolectric-${frameworkSdkBuildVersion}" 50 } 51 52 String getPreinstrumentedVersion() { 53 return "${androidVersion}-robolectric-${frameworkSdkBuildVersion}-i${PREINSTRUMENTED_VERSION}" 54 } 55 56 String getCoordinates() { 57 return "${groupId}:${artifactId}:${version}" 58 } 59 60 String getPreinstrumentedCoordinates() { 61 return "${groupId}:${preinstrumentedArtifactId}:${preinstrumentedVersion}" 62 } 63 64 String getJarFileName() { 65 return "android-all-${androidVersion}-robolectric-${frameworkSdkBuildVersion}.jar" 66 } 67 68 String getPreinstrumentedJarFileName() { 69 return "android-all-instrumented-${preinstrumentedVersion}.jar" 70 } 71 72 @Override 73 int compareTo(AndroidSdk other) { 74 return apiLevel - other.apiLevel 75 } 76 77 @Override 78 boolean equals(o) { 79 if (this.is(o)) return true 80 if (getClass() != o.class) return false 81 82 AndroidSdk that = (AndroidSdk) o 83 84 if (apiLevel != that.apiLevel) return false 85 86 return true 87 } 88 89 @Override 90 int hashCode() { 91 return apiLevel 92 } 93} 94