В настоящее время я борюсь с процессом сборки в gradle. Моя цель - не иметь определенного класса Java в окончательном .apk для определенного вкуса. Логика выглядит следующим образом:
1.) перед компиляцией моего проекта удалите MyClass.java и скопируйте его во временную папку
2.) после сборки apk скопируйте обратно MyClass.java в исходную папку
3.) удалить временную папку
Это происходит только в том случае, если я создаю определенный вариант, поэтому это не происходит для всех вариантов сборки. Мой код отлично работает, когда я создаю только один вариант и один вариант сборки, например. assembleFlavorRelease, но если я не хочу, чтобы мой код работал для нескольких типов сборки; если я запущу assembleFlavor, он должен собрать flavorDebug так же, как и flavorRelease. Однако моя логика работает только в первый раз, а после этого она останавливается, поэтому флейвордебаг строится с MyClass, а этого быть не должно, в то время как флейворРелиз не включает MyClass в .apk, потому что мой код запускается в первый раз.
Вот как выглядит код:
task copyResource << {
copy {
from 'src/main/java/MyClass.java'
into 'src/temp'
}
}
task deleteResource << {
delete {
'src/main/java/MyClass.java'
}
}
task deleteTemp << {
delete {
'src/temp'
}
}
task copyBackToSource << {
copy {
from 'src/temp/MyClass.java'
into 'src/main/java'
}
deleteTemp.execute()
}
android.applicationVariants.all { variant ->
if (variant.name.contains('flavor')) {
deleteResource.dependsOn copyResource
variant.javaCompile.dependsOn deleteResource
variant.assemble.doLast {
copyBackToSource.execute()
}
}
}
Я думаю, что каталоги, которые я использую в своем коде, каким-то образом заблокированы при попытке выполнить весь процесс во второй раз?