1/* 2 * Modified from https://gist.github.com/xian/05c4f27da6d4156b9827842217c2cd5c 3 * Reference: http://robolectric.org/blog/2017/03/01/hermetic-builds/ 4 * 5 * Run this script by `gradle -b update.gradle` 6 */ 7 8defaultTasks 'copySdks' 9 10def androidSdkVersions = [ 11 '4.1.2_r1-robolectric-0', 12 '4.1.2_r1-robolectric-r1', 13 '4.2.2_r1.2-robolectric-0', 14 '4.2.2_r1.2-robolectric-r1', 15 '4.3_r2-robolectric-0', 16 '4.3_r2-robolectric-r1', 17 '4.4_r1-robolectric-1', 18 '4.4_r1-robolectric-r2', 19 '5.0.0_r2-robolectric-1', 20 '5.0.2_r3-robolectric-r0', 21 '5.1.1_r9-robolectric-1', 22 '5.1.1_r9-robolectric-r2', 23 '6.0.0_r1-robolectric-0', 24 '6.0.1_r3-robolectric-0', 25 '6.0.1_r3-robolectric-r1', 26 '7.0.0_r1-robolectric-0', 27 '7.0.0_r1-robolectric-r1', 28 '7.1.0_r7-robolectric-0', 29 '7.1.0_r7-robolectric-r1', 30 'o-preview-4-robolectric-0', 31 '8.0.0_r4-robolectric-0', 32 '8.0.0_r4-robolectric-r1', 33 '8.1.0-robolectric-r4458339', 34 '9-robolectric-4913185-2', 35 '10-robolectric-5803371', 36 '11-robolectric-6757853', 37 '12-robolectric-7732740', 38 '12.1-robolectric-8229987', 39 '13-robolectric-9030017', 40] 41 42def buildDir = System.getProperty("user.dir") 43 44apply plugin: 'java' 45 46repositories { 47 mavenCentral() 48} 49 50configurations { 51 sandbox 52} 53 54def allSdkConfigurations = [] 55 56androidSdkVersions.forEach { version -> 57 allSdkConfigurations << configurations.create(version) 58 dependencies.add(version, "org.robolectric:android-all:${version}") 59 dependencies.add('sandbox', "org.robolectric:android-all:${version}") 60} 61 62task copySdks(type: Copy) { 63 into "$buildDir" 64 from allSdkConfigurations 65 66 doLast { 67 // robolectric-deps file is not used in Make build, so we don't need to generate it 68 // def f = new File("$buildDir/robolectric-deps.properties") 69 // f.delete() 70 71 // f << "# Place this file in your test resources dir (e.g. src/test/resources).\n" 72 // f << "# Paths below should be absolute, or relative to this file.\n" 73 // f << "#\n" 74 75 allSdkConfigurations.forEach { config -> 76 config.allDependencies.forEach { dep -> 77 def files = new ArrayList(config.files) 78 if (files.size != 1) { 79 throw new RuntimeException("huh, more than one file in ${dep}? ${files}") 80 } 81 // def file = files[0] 82 // f << "${dep.group}\\:${dep.name}\\:${dep.version}=path/to/${file.name}\n" 83 } 84 } 85 } 86} 87