57 lines
1.9 KiB
Kotlin
57 lines
1.9 KiB
Kotlin
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<Delete>("clean") {
|
|
delete(rootProject.layout.buildDirectory)
|
|
}
|