2017-01-18 2 views
0

Adobe Illustrator может создавать кучу файлов с разным разрешением и называет их *dpi.png и размещает их в одном каталоге. Одновременно Android ожидает, что изображения будут иметь одинаковое имя и будут находиться в разных каталогах.Динамически добавлять зависимость в Gradle?

Я написал сценарий Gradle сделать копирование файлов и переименование:

[ 
    'ldpi', 'mdpi', 'hdpi', 'xhdpi', 'xxhdpi', 'xxxhdpi' 
].each { 
    String type = it 

    task "copyAi_$it"(type: Copy) { 



     String ending = '_Artboard 1' + type + '.png' 

     from 'graphics_design/export/' 

     include '*' + ending 

     rename { String fileName -> 
      fileName.replace(ending, '.png') 
     } 

     into 'app/src/main/res/drawable-' + type 
    } 
} 


task copyAiExport 

copyAiExport.dependsOn copyAi_ldpi, copyAi_mdpi, copyAi_hdpi, copyAi_xhdpi, copyAi_xxhdpi, copyAi_xxxhdpi 

Как вы видите, я должен был написать все зависимости общей задачи copyAliExport явно, перечислив все сгенерированные задачи.

Могу ли я добавить зависимости динамически?

В документе я не нашел понятного примера.

ответ

2

Является ли это то, что вы ищете:

task all 
[ 
    1, 2, 3, 4, 
].each { n -> 

    def t = task "task$n" { 
     doLast { 
     println n 
     } 
    } 

    all.dependsOn << t 
} 

?

+0

Не знаю :) Я еще не могу прочитать код Groovy. Наверное, так оно и есть. – Dims

+0

@ Dims;) Ну ладно. Поэтому вам нужно получить ссылку на только что созданную задачу ('t'), а затем получить зависимости' all' ('dependOn' ==' getDependsOn') и добавить к ней '' 'задачу. – Opal

+0

@ Dims Вы хотите, чтобы я переписал ваш пример? – Opal

Смежные вопросы