1/* 2 * download-models.gradle 3 * Downloads model files from ${MODEL_URL} into application's asset folder 4 * Input: 5 * project.ext.TMP_DIR: absolute path to hold downloaded zip files 6 * project.ext.ASSET_DIR: absolute path to save unzipped model files 7 * Output: 8 * 3 model files will be downloaded into given folder of ext.ASSET_DIR 9 */ 10// hard coded model files 11// LINT.IfChange 12def models = ['inception_v1.zip', 13 'object_detection/ssd_mobilenet_v1_android_export.zip', 14 'stylize_v1.zip', 15 'speech_commands_conv_actions.zip'] 16// LINT.ThenChange(//tensorflow/tools/android/test/BUILD) 17 18// Root URL for model archives 19def MODEL_URL = 'https://storage.googleapis.com/download.tensorflow.org/models' 20 21buildscript { 22 repositories { 23 jcenter() 24 } 25 dependencies { 26 classpath 'de.undercouch:gradle-download-task:4.0.2' 27 } 28} 29 30import de.undercouch.gradle.tasks.download.Download 31task downloadFile(type: Download){ 32 for (f in models) { 33 src "${MODEL_URL}/" + f 34 } 35 dest new File(project.ext.TMP_DIR) 36 overwrite true 37} 38 39task extractModels(type: Copy) { 40 for (f in models) { 41 def localFile = f.split("/")[-1] 42 from zipTree(project.ext.TMP_DIR + '/' + localFile) 43 } 44 45 into file(project.ext.ASSET_DIR) 46 fileMode 0644 47 exclude '**/LICENSE' 48 49 def needDownload = false 50 for (f in models) { 51 def localFile = f.split("/")[-1] 52 if (!(new File(project.ext.TMP_DIR + '/' + localFile)).exists()) { 53 needDownload = true 54 } 55 } 56 57 if (needDownload) { 58 dependsOn downloadFile 59 } 60} 61 62tasks.whenTaskAdded { task -> 63 if (task.name == 'assembleDebug') { 64 task.dependsOn 'extractModels' 65 } 66 if (task.name == 'assembleRelease') { 67 task.dependsOn 'extractModels' 68 } 69} 70 71