71 lines
1.8 KiB
Groovy
71 lines
1.8 KiB
Groovy
/*
|
|
* download-models.gradle
|
|
* Downloads model files from ${MODEL_URL} into application's asset folder
|
|
* Input:
|
|
* project.ext.TMP_DIR: absolute path to hold downloaded zip files
|
|
* project.ext.ASSET_DIR: absolute path to save unzipped model files
|
|
* Output:
|
|
* 3 model files will be downloaded into given folder of ext.ASSET_DIR
|
|
*/
|
|
// hard coded model files
|
|
// LINT.IfChange
|
|
def models = ['inception_v1.zip',
|
|
'object_detection/ssd_mobilenet_v1_android_export.zip',
|
|
'stylize_v1.zip',
|
|
'speech_commands_conv_actions.zip']
|
|
// LINT.ThenChange(//tensorflow/examples/android/BUILD)
|
|
|
|
// Root URL for model archives
|
|
def MODEL_URL = 'https://storage.googleapis.com/download.tensorflow.org/models'
|
|
|
|
buildscript {
|
|
repositories {
|
|
jcenter()
|
|
}
|
|
dependencies {
|
|
classpath 'de.undercouch:gradle-download-task:3.2.0'
|
|
}
|
|
}
|
|
|
|
import de.undercouch.gradle.tasks.download.Download
|
|
task downloadFile(type: Download){
|
|
for (f in models) {
|
|
src "${MODEL_URL}/" + f
|
|
}
|
|
dest new File(project.ext.TMP_DIR)
|
|
overwrite true
|
|
}
|
|
|
|
task extractModels(type: Copy) {
|
|
for (f in models) {
|
|
def localFile = f.split("/")[-1]
|
|
from zipTree(project.ext.TMP_DIR + '/' + localFile)
|
|
}
|
|
|
|
into file(project.ext.ASSET_DIR)
|
|
fileMode 0644
|
|
exclude '**/LICENSE'
|
|
|
|
def needDownload = false
|
|
for (f in models) {
|
|
def localFile = f.split("/")[-1]
|
|
if (!(new File(project.ext.TMP_DIR + '/' + localFile)).exists()) {
|
|
needDownload = true
|
|
}
|
|
}
|
|
|
|
if (needDownload) {
|
|
dependsOn downloadFile
|
|
}
|
|
}
|
|
|
|
tasks.whenTaskAdded { task ->
|
|
if (task.name == 'assembleDebug') {
|
|
task.dependsOn 'extractModels'
|
|
}
|
|
if (task.name == 'assembleRelease') {
|
|
task.dependsOn 'extractModels'
|
|
}
|
|
}
|
|
|