buildscript { repositories { google() mavenCentral() } dependencies { classpath("com.android.tools.build:gradle:8.6.0") classpath("org.jetbrains.kotlin:kotlin-gradle-plugin:2.1.0") } } allprojects { repositories { google() mavenCentral() } } rootProject.layout.buildDirectory.set(file("../build")) subprojects { project.layout.buildDirectory.set(file("${rootProject.layout.buildDirectory.get()}/${project.name}")) } subprojects { // 1. Fix ZUERST registrieren (bevor das Projekt evaluiert wird) afterEvaluate { // Prüfen, ob das Subprojekt eine Android-Erweiterung hat (Library oder App) val android = project.extensions.findByName("android") if (android != null) { // Wir versuchen, auf die 'namespace'-Eigenschaft zuzugreifen. // Da wir hier im Root-Skript sind und die Typen dynamisch sind, nutzen wir Reflection/Dynamik. try { val namespaceProp = android.javaClass.getMethod("getNamespace") val currentNamespace = namespaceProp.invoke(android) if (currentNamespace == null) { // Wenn kein Namespace gesetzt ist, setzen wir ihn auf den Gruppennamen oder Package-Namen val setNamespace = android.javaClass.getMethod("setNamespace", String::class.java) val newNamespace = project.group.toString() setNamespace.invoke(android, newNamespace) println("FIX: Namespace für '${project.name}' auf '$newNamespace' gesetzt.") } } catch (e: Exception) { println("WARNUNG: Konnte Namespace für ${project.name} nicht automatisch setzen: $e") } } } // 2. DANACH erst die Abhängigkeit zur App definieren project.evaluationDependsOn(":app") } tasks.register("clean") { delete(rootProject.layout.buildDirectory) }