TGViewer
Android under the hood Android under the hood @android_under_the_hood · 1.53K subscribers
Post #92 2.44K
Gradle скрипты.

Бывают ситуации когда нужно написать какой-нибудь прикладной скрипт для вашего проекта, например вычислить количество модулей где используются импорты Retrofit'а. Для таких штук удобнее всего написать Gradle таску на Kotlin DSL и сделать это в самом главном build.gradle.kts файле (полный код):

tasks.register("modules_with_retrofit") {
    val imports = listOf("retrofit2")

    /*
    возвращает true если в указанной папке есть .java или .kt файлы с Retrofit импортами
    */
    fun Project.isRetrofit(
        sourcesFolderPath: String
    ): Boolean { ... }

    val modules = rootProject.allprojects
    val count = modules.fold(0) { result, module ->
        val java = module.isRetrofit(
            "src/main/java/"
        )
        val kotlin = module.isRetrofit(
            "src/main/kotlin/"
        )
        if (java || kotlin) result + 1
        else result
    }

    println("RESULT => $count")
}


Для запуска таски достаточно написать в терминале:

./gradlew modules_with_retrofit


Раньше вместо Gradle Kotlin DSL я использовал Python, что было не очень эффективно по двум причинам:

1) Python ничего не знает о Gradle модулях, из-за этого много шаблонного и ненужного кода.
2) Python не мой основной язык, поэтому много чего приходилось гуглить.

P.S. Рекомендую канал одного крутого чувака - Everlasting Loops, канал о всяких интересных штуках из мобильной разработки, вы вряд ли о них прочитаете в доке.

Пишите в комментах ваше мнение и всем хорошего кода!
  • ❤ 12
  • 👍 9
  • 🔥 3
  • 🤔 1
More from @android_under_the_hood
  1. Oct 4, 2026Всем привет, хочу поделиться проектом, который запустил 1 октября — ЗдесьЯ. Это цифровая с…
  2. Oct 2, 2026Kotlin lambdas, часть I. До версии Kotlin 2.0 лямбды компилировались в анонимные классы, р…
  3. Sep 27, 2026Делегат свойства в Kotlin. В Kotlin есть конструкция, которой нет в JVM: var name by NameD…
  4. Sep 23, 2026val vs var под капотом. На уровне Kotlin все просто: val x = 10 var y = 20 y = 30 // компи…
  5. Sep 20, 2026Возвращение Прошло уже полгода с последней записи на канале. За это время в моей жизни про…
  6. Feb 5, 2026Пару фактов о Go, часть II. 4) Вместо Kotlin Nullability указатели как в С/C++, то есть об…
Threads Profile ViewerView any public Threads profile without an account.Open ThreadLook →Writing with AI? Make it sound human.Metric37 rewrites AI drafts so they read naturally. Free AI detector, 1,500 words free.Try Metric37 →